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