【发布时间】:2019-11-18 02:30:04
【问题描述】:
我正在使用 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 使用多个网络接口,并指定在容器中使用哪一个?我找不到太多关于此的文档。我需要设置某种代理吗?
【问题讨论】:
-
为什么不使用docs.docker.com/v17.09/engine/swarm/networking/…中提到的
--data-path-addr -
不幸的是,我正在尝试在两个节点之间进行连接。它们都可以完全独立运行,连接只是一个非阻塞的后台进程。如果我让它们成为同一个群体的一部分,如果其中一个倒下,它们都会倒下。有没有办法改变这种行为?我知道这不是一个好的设置,但我真的别无选择。
标签: linux docker networking docker-swarm rhel