将服务/进程绑定到接口,以防在docker中公开

将服务/进程绑定到接口,以防在docker中公开,docker,cluster-computing,docker-swarm,Docker,Cluster Computing,Docker Swarm,我想了解docker中的暴露端口在内部是如何工作的,也就是说,我想知道主机上使用了哪些接口。让我们考虑三种情况: (一) (二) dokcer组合:用于docker swarm 在这种情况下,请不要使用覆盖网络。 (3) dokcer组合:用于docker swarm 首先,让我们强调一个事实,即它取决于它选择哪个接口的容器中包含的进程 束缚。但是,它在主机中绑定在哪里?我的意思是选择哪个接口(lo,eth0..)作为要绑定的接口 具体来说,(2)和(3)方法的区别是什么 编辑 让我们考虑第四种

我想了解docker中的暴露端口在内部是如何工作的,也就是说,我想知道主机上使用了哪些接口。让我们考虑三种情况:

(一)

(二)
dokcer组合:
用于docker swarm

在这种情况下,请不要使用
覆盖
网络。 (3)
dokcer组合:
用于docker swarm

首先,让我们强调一个事实,即它取决于它选择哪个接口的容器中包含的进程 束缚。但是,它在主机中绑定在哪里?我的意思是选择哪个接口(lo,eth0..)作为要绑定的接口

具体来说,(2)和(3)方法的区别是什么

编辑
让我们考虑第四种情况:
(四)

其中,
s1
s2
被强制部署在不同的节点上(使用约束)。现在,我们假设
s1
使用端口
1234
和:
(1) 服务的IP地址(或服务名称) (2) 主机的IP地址(物理地址)


如果使用(1)或(2)重叠网络
n1
,请告诉我。请注意,这两项服务都连接在此网络中。

您应该在文档中清楚地找到答案

就你而言(2)

如果您有3个节点
N1、N2、N3
,则在这3个节点中的任何一个上点击
80
,即使应用程序仅部署在一个节点
N3
,也会将您带到该应用程序

情况(3)


由于该服务部署在
N3
上,只有您才能访问
N3
上的80,
N1
N2
将不会在端口
80

上响应,谢谢您的回答。我知道这个事实。然而,我编辑了问题并添加了第四个案例。您能回答我的疑问吗?案例4无效,您不能在同一节点上部署两个具有相同端口的服务。如果您对其进行约束,它将无法加载TaRun,我指的是具有相同端口的服务,但是在不同的节点上(使用约束可以确保什么)。
docker run -p 80:80 nginx
....
services:
    ports:
        published: 80
        target: 80       
....
....
services:
    ports:
        published: 80
        target: 80       
        mode: host
....
`dokcer-compose:` for *docker swarm*

....
services:
  s1:
    ports:
        published: 1234
        target: 1234       
        mode: host
    networks:
        n1
  s2:
    ports:
        published: 1234
        target: 1234       
        mode: host
    networks:
        n1
networks:
  n1:
    driver: overlay
services:
    ports:
        published: 80
        target: 80  
services:
    ports:
        published: 80
        target: 80       
        mode: host