为 Docker 容器启用 IPv6

由于服务需要访问 IPv6 网络,且不需要接受外部连接,同时为了安全性考虑,选择了 NAT IPv6 , 共享主机的 v6 公网地址出口

修改 /etc/docker/daemon.json (如没有直接创建)

{
  "ipv6": true,
  "fixed-cidr-v6": "fd00::/80"
}

主机上需要开 v6 转发和做 Masquerade(不做NAT可以忽略这步):

echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
sysctl -p
ip6tables -t nat -I POSTROUTING -j MASQUERADE

随后重启 docker 服务即可。

service docker restart

2023年更新:如果使用 Docker Compose,示例 docker-compose.yaml 如下:

version: '2.4' # 或更高版本
services:
  myservice:
    image: myimage
    networks:
      - mynetwork

networks:
  mynetwork:
    enable_ipv6: true
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 2001:db8:1::/64

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注