将多个特定的网络接口与docker swarm一起使用

时间:2019-07-08 14:34:19

标签: linux docker networking docker-swarm rhel

我正在使用docker swarm部署内部部署的第三方应用程序。我要部署的计算机正在运行RHEL 7.6,并且具有两个网络接口。用户将通过eth0与应用程序进行交互,但是与其系统的内部通信必须使用eth1,否则连接将被其防火墙阻止。我的应用程序需要我的一些服务才能在其网络中建立内部连接服务。

我使用以下方法创建了自己的群体

$ docker swarm init --advertise-addr x.x.x.x

x.x.x.xeth0 inet地址。这适用于服务的传入用户流量。但是,当我尝试与其他服务建立连接时,连接被防火墙阻止了。

在docker之外,在机器上,我可以运行:

ssh -b y.y.y.y user@server

y.y.y.yeth1 inet地址,它可以正常工作。当我在docker swarm容器中运行相同命令时,出现此错误:

  

绑定:y.y.y.y:无法分配请求的地址

我是否可以通过某种方式将多个网络接口与docker swarm一起使用,并指定在容器内使用哪个接口?我找不到关于此的大量文档。我需要设置某种代理吗?

1 个答案:

答案 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/