如何通过 weave-overlay 网络将容器 运行 的静态 IP 地址设置到 Swarm 中?

How to set static IP address to a container running into a Swarm over a weave-overlay network?

TL;DR:Swarm 1.0.0 中存在的错误,已在 Swarm 1.1.0.

中解决

在四个 swarm 代理集群上,自定义覆盖网络是 运行 和 weave plugin:

user@swarm-master:~$swarm-docker network create --driver weave --subnet 192.168.0.0/16 custom-weave

但是,使用此命令及其输出我们可以看到一个问题:

user@swarm-master:~$ swarm-docker run --rm -it --net=custom-weave --ip=192.168.0.5 debian:jessie bash -c "ip addr     show"
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    [ . . ]
74: ethwe0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1410 qdisc noqueue state UP group default 
    link/ether ee:c2:9c:6c:c3:6c brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.2/16 scope global ethwe0
       valid_lft forever preferred_lft forever
    inet6 fe80::ecc2:9cff:fe6c:c36c/64 scope link tentative 
       valid_lft forever preferred_lft forever
76: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state DOWN group default 
    [ . . ]

用户定义的 --net 选项与 --ip=192.168.0.5 一样设置。虽然预期容器的 ethwe0 接口 IP 地址设置为 192.168.0.5,但实际上设置为 192.168.0.2 .

问题:这个过程有什么问题?

没什么,只是自 1.1.0.

版本以来解决了一个错误

正如 vieux on this GH issue 所述,这是 Swarm 1.0.0 中的一个错误。此错误已在 Swarm 1.1.0.

中解决