我正在使用docker swarm部署内部部署的第三方应用程序。我要部署的计算机正在运行RHEL 7.6,并且具有两个网络接口。用户将通过eth0
与应用程序进行交互,但是与其系统的内部通信必须使用eth1
,否则连接将被其防火墙阻止。我的应用程序需要我的一些服务才能在其网络中建立内部连接服务。
我使用以下方法创建了自己的群体
$ docker swarm init --advertise-addr x.x.x.x
x.x.x.x
是eth0
inet地址。这适用于服务的传入用户流量。但是,当我尝试与其他服务建立连接时,连接被防火墙阻止了。
在docker之外,在机器上,我可以运行:
ssh -b y.y.y.y user@server
y.y.y.y
是eth1
inet地址,它可以正常工作。当我在docker swarm容器中运行相同命令时,出现此错误:
绑定:y.y.y.y:无法分配请求的地址
我是否可以通过某种方式将多个网络接口与docker swarm一起使用,并指定在容器内使用哪个接口?我找不到关于此的大量文档。我需要设置某种代理吗?
答案 0 :(得分:0)
默认情况下,Docker通过计算机上的网络接口创建桥接网络,然后通过内部的单独虚拟接口将每个容器实例附加到该网络。因此,您将无法直接绑定到eth1,因为您的Docker容器具有不同的接口。
有关一般指南,请参见https://docs.docker.com/v17.09/engine/userguide/networking/,有关具有多个物理接口的自定义桥接网络,请参见https://docs.docker.com/v17.09/engine/userguide/networking/default_network/custom-docker0/。