如果 Docker 版本低于 1.13.0,就不支持 ip6tables,需要手动配置 iptables 以达到与 ip6tables: true 相同的效果。

具体步骤如下:

  1. 打开 /etc/sysctl.conf 文件,添加以下内容:
net.ipv6.conf.all.disable_ipv6 = 1

这会禁用 IPv6,以便 Docker 使用 IPv4。

  1. 运行以下命令以启用 IPv4 转发:
 sudo sysctl -w net.ipv4.ip_forward=1
  1. 运行以下命令以创建一个名为 DOCKER 的 iptables 链:
 sudo iptables -N DOCKER
  1. 运行以下命令以将 DOCKER 链附加到 FORWARD 链:
 sudo iptables -A FORWARD -j DOCKER
  1. 运行以下命令以允许 Docker 访问主机网络:
 sudo iptables -A DOCKER -d 0.0.0.0/0 -j ACCEPT
  1. 运行以下命令以允许 Docker 访问容器网络:
 sudo iptables -A DOCKER -s 172.17.0.0/16 ! -d 172.17.0.0/16 -j ACCEPT

注意,这里假设 Docker 使用默认的 172.17.0.0/16 网络。

  1. 最后,运行以下命令以保存 iptables 配置:
 sudo iptables-save | sudo tee /etc/iptables.rules

将此配置加载到 Docker 启动时:

  1. 打开 /etc/default/docker 文件,添加以下内容:
 iptables-restore < /etc/iptables.rules

这会在 Docker 启动时加载上述 iptables 配置。

  1. 重启 Docker 服务:
 sudo service docker restart

现在,Docker 将使用 iptables 来管理网络,达到与 ip6tables: true 相同的效果。

Docker 低版本手动配置 IPv6 网络 (替代 ip6tables: true)

原文地址: https://www.cveoy.top/t/topic/odTb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录