4

我正在docker service用 docker swarm 创建。我希望我的每个 docker 服务在每个 swarm 节点上都有自己的特定 IP 地址。所以我的实例有多个网络接口(eth1、eth2 和 eth3),每个接口都有自己不同的 IP 地址。我希望能够创建连接到每个节点上的单个父网络接口的 docker 覆盖网络,以便每个 docker 服务在每个节点上都有自己的 IP 地址。

这是我尝试创建这样的网络和与之配套的服务:

docker network create -d overlay \
-o parent=eth2 \
nginx1-net

docker service create \
--mode global \
--name nginx1 \
-p 30000:80/tcp \
--network nginx1-net \
nginx

问题是这个覆盖网络nginx1-net只会出现在我创建它的管理节点上,不会出现在任何其他节点上。(我怀疑这是因为该服务默认会附加到 docker0 和 eth0 上)

这会导致我可以从任何接口(eth1、eth2 和 eth3)上的任何 IP 地址访问此服务,而不仅仅是我定义的 eth2 接口。

如何将覆盖网络和 docker 服务绑定到单个网络接口?

注意:我的总体目标是创建 docker 服务,其中每个容器都有一个可路由的外部 IP 地址。

4

0 回答 0