如何将静态IP地址设置为通过交织networking进入Swarm的容器?

TL; DR:存在于Swarm 1.0.0 bug,在Swarm 1.1.0解决。

在四个群集代理群集上,使用编织插件运行自定义覆盖networking:

 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选项设置以及--net --ip=192.168.0.5 。 虽然容器预计将ethwe0接口IP地址设置为192.168.0.5 ,但实际上它设置为192.168.0.2

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

没什么,只是自1.1.0版本以来解决了一个错误。

正如vieux对GH问题所述 ,这是Swarm 1.0.0一个bug。 这个bug已经在Swarm 1.1.0解决了。