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: */*

 

posted @ 2024-02-21 22:46  wang_longan  阅读(2552)  评论(0编辑  收藏  举报