最後,我希望通過組合或羣集模式部署純IPv6網絡。目前,我只想使用IPv6(僅)部署一個容器。我目前不感興趣路由(只是容器到容器的連接)。如何使用Docker Swarm模式或Docker Compose部署IPv6容器
我的設置:
- OS:Centos的7
- dockerd --ipv6 --fixed-CIDR-V6 = 2001:DB8:1 ::/64 --iptables =真--ip- masq = true --mtu = 1600 --experimental = true
- docker-engine-17.05.0.ce-1.el7.centos.x86_64.rpm
- 主機有IPv4和IPv6地址。轉發是爲兩個(不是對我來說很重要)。
我試了一下,似乎是每一個組合(我只列出一對夫婦)
自包含泊塢堆集裝箱和網絡:
version: '3'
networks:
app_net:
driver: overlay
driver_opts:
com.docker.network.enable_ipv6: "true"
ipam:
driver: default
config:
-
subnet: 172.16.238.0/24
-
subnet: 2001:3984:3989::/64
services:
app:
image: alpine
command: sleep 600
networks:
app_net:
ipv4_address: 0.0.0.0
ipv6_address: 2001:3984:3989::10
結果:只有容器中的IPv4地址,0.0.0.0被忽略。
外部預先創建的網絡 (按照https://stackoverflow.com/a/39818953/1735931)
搬運工網絡創建--driver覆蓋--ipv6 --subnet = 2001:3984:3989 ::/64 --attachable ext_net
version: '3'
networks:
ext_net:
external:
name: ext_net
services:
app:
image: alpine
command: ifconfig eth0 0.0.0.0 ; sleep 600
cap_add:
- NET_ADMIN
networks:
ext_net:
ipv4_address: 0.0.0.0
ipv6_address: 2001:3984:3989::10
結果:容器中的IPv4和IPv6地址都被忽略,但cap_add被忽略(Swarm模式中不支持),因此上面的ifconfig disable ipv4嘗試不起作用。
我目前沒有安裝docker-compose,可能會嘗試下一個,但有沒有辦法在Docker Swarm模式下運行純IPv6容器?
注:我能跑手動配置一些專用的IPv6容器不羣/作曲: (創建網絡上面,甚至只使用默認橋)
$ docker run --cap-add=NET_ADMIN --rm -it alpine
$$ ifconfig eth0 0.0.0.0
$$ ping6 other-container-ipv6-address # WORKS!
或簡寫:
$ docker run --cap-add=NET_ADMIN --rm -it alpine sh -c "/sbin/ifconfig eth0 0.0.0.0 ; sh"