使用 IPv6 網路
IPv6 僅支援在 Linux 主機上執行的 Docker 守護行程。
建立 IPv6 網路
使用
docker network create
$ docker network create --ipv6 ip6net
使用
docker network create
,指定 IPv6 子網路$ docker network create --ipv6 --subnet 2001:db8::/64 ip6net
使用 Docker Compose 檔案
networks: ip6net: enable_ipv6: true ipam: config: - subnet: 2001:db8::/64
您現在可以執行連接到 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: 2001:db8::2
IP: fe80::42:acff:fe11:2
RemoteAddr: [2001:db8::1]:37574
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" }
ipv6
會在預設網路上啟用 IPv6 網路。fixed-cidr-v6
會將子網路指派給預設橋接網路,啟用動態 IPv6 位址配置。ip6tables
會啟用額外的 IPv6 封包篩選規則,提供網路隔離和連接埠映射。它預設為啟用,但可以停用。
儲存設定檔。
重新啟動 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: 2001:db8:1::242:ac12:2
IP: fe80::42:acff:fe12:2
RemoteAddr: [2001:db8:1::1]:35558
GET / HTTP/1.1
Host: [::1]
User-Agent: curl/8.1.2
Accept: */*
動態 IPv6 子網路配置
如果您沒有使用 docker network create --subnet=<your-subnet>
明確設定使用者定義網路的子網路,則這些網路會使用守護行程的預設位址集區作為後援。這也適用於從 Docker Compose 檔案建立的網路,其中 enable_ipv6
設定為 true
。
如果 Docker 引擎的 default-address-pools
中未包含任何 IPv6 集區,且未提供 --subnet
選項,則在啟用 IPv6 時將使用唯一本地位址 (ULA)