我正在用docker swarm创建 docker service . 我希望每个docker服务在每个swarm节点上都有自己的特定IP地址 . 所以我的实例有多个网络接口(eth1,eth2和eth3),每个接口都有自己不同的IP地址 . 我希望能够创建连接到每个节点上的 single 父网络接口的docker overlay网络,以便每个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服务绑定到单个网络接口?

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