由於目前Docker 在IPv6網絡中運行的相關配置並非默認自動生成的,所以需要大家根據自己的網絡環境來具體做一些相應配置,具體如下:
本次操作是在 Ubuntu16/18或者CentOS7 OS上面 通過docker官網手冊安裝方式 安裝的Docker程序
第一步 在 docker 配置文件 添加IPv6配置參數
{
"ipv6": true, "fixed-cidr-v6": "fc00:17:1:1::/64" }
之后需要手動對剛才的IPv6內網地址設置NAT轉換(因為docker 在IPv4的環境下會自動將內網地址做NAT轉換)
並通過 -L 來查看NAT配置是否添加成功
ip6tables -t nat -A POSTROUTING -s fc00:17:1:1::/64 -j MASQUERADE ip6tables -t nat -L
最后重新啟動 docker 服務
systemctl restart docker
效果如下:
經過上述配置后,通過docker run 方式啟動(利用默認的bridge網絡模式)的容器即可自動獲取到fc00:1:1::/64 網段中的IPv6地址。
並能夠繼承Host寄主機的網絡資源環境。
如果你想使用 docker-compose 的方式來啟動一組容器的話,那還需要對之前使用的 docker-compose.yml 文件進行部分升級,具體如下:
首先,compose的版本需要使用
version: '2.1'
然后在每一個services中添加網絡參數(舉例存在一個名為 app_net 的網絡)
networks:
app_net:
之后在yml文件的最后添加 app_net 這個網絡的具體參數:
networks:
app_net:
driver: bridge
enable_ipv6: true ipam: driver: default config: - subnet: 172.19.0.0/24 gateway: 172.19.0.1 - subnet: fc00:32:1:1::/120 gateway: fc00:32:1:1::1
其中給這個網絡分配的IPv6網段是 fc00:32:1:1::/120 (不要與之前deamon.json中的網段有重合),/120網段可以提供 256個的可用地址
然后把這個IPv6內網地址段(fc00:32:1:1::/120) 利用 ip6tables -t nat 的指令(同上)將該地址段成功添加到host 寄主機中的 IPv6 nat配置中即可
之后再用 ip6tables -t nat -L 查看是否添加成功
最后利用訪問一些公網的IPv6地址來測試網絡是否搭建成功即可。