Docker引擎开启ipv6
启用IPv6支持
在Docker容器中使用IPv6之前,您需要在Docker守护程序中启用IPv6支持。之后,您可以选择使用IPv4或IPv6(或两者都使用)与任何容器或网络。
IPv6仅在运行在Linux主机上的Docker守护程序中受支持。
注意
当使用IPv6时,我们建议您在守护程序配置中启用实验性的ip6tables
参数。
创建IPv6网络
以下步骤将指导您如何创建一个使用IPv6的Docker网络。
编辑Docker守护程序的配置文件,该文件通常位于/etc/docker/daemon.json
。配置以下参数:
{
"experimental": true,
"ip6tables": true
}
ip6tables启用了额外的IPv6数据包过滤规则,提供了网络隔离和端口映射。此参数要求
experimental设置为
true`。
保存配置文件。
重启Docker守护程序,以使更改生效。
sudo systemctl restart docker
创建新的IPv6网络
使用docker network create
命令创建IPv6网络:
docker network create --ipv6 --subnet 2001:0DB8::/112 ip6net
使用Docker Compose文件创建网络:
networks:
ip6net:
enable_ipv6: true
ipam:
config:
- subnet: 2001:0DB8::/112
现在,您可以运行附加到ip6net
网络的容器。
docker run --rm --network ip6net -p 80:80 traefik/whoami
这将在IPv6和IPv4上都发布端口80。您可以通过运行curl
并连接到IPv6回环地址上的端口80来验证IPv6连接:
curl http://[::1]:80
输出:
Hostname: ea1cfde18196
IP: 127.0.0.1
IP: ::1
IP: 172.17.0.2
IP: fe80::42:acff:fe11:2
RemoteAddr: [fe80::42:acff:fe11:2]:54890
GET / HTTP/1.1
Host: [::1]
User-Agent: curl/8.1.2
Accept: */*
在默认桥接网络中使用IPv6
以下步骤指导您如何在默认桥接网络上使用IPv6。
编辑Docker守护程序的配置文件,该文件通常位于/etc/docker/daemon.json
。配置以下参数:
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:1::/64",
"experimental": true,
"ip6tables": true
}
ipv6
:在默认网络上启用IPv6网络。fixed-cidr-v6
:为默认桥接网络分配一个子网,启用动态IPv6地址分配。experimental
:启用实验性功能。ip6tables
:启用额外的IPv6数据包过滤规则,提供网络隔离和端口映射。此参数要求experimental
设置为true
。
保存配置文件。
重启Docker守护程序以使更改生效。
sudo systemctl restart docker
现在,您可以在默认桥接网络上运行容器。
docker run --rm -p 80:80 traefik/whoami
这将在IPv6和IPv4上都发布端口80。您可以通过向IPv6回环地址上的端口80发送请求来验证IPv6连接:
curl http://[::1]:80
Hostname: ea1cfde18196
IP: 127.0.0.1
IP: ::1
IP: 172.17.0.2
IP: fe80::42:acff:fe11:2
RemoteAddr: [fe80::42:acff:fe11:2]:54890
GET / HTTP/1.1
Host: [::1]
User-Agent: curl/8.1.2
Accept: */*