徹底解決Docker無法使用IPv6網絡
前言
開發Dify插件時,發現本地部署的Docker無法使用IPv6網絡。
為方便測試,啟動一個簡單的ubuntu容器,docker-compose.yml如下:
services:
ubuntu:
image: ubuntu:22.04
container_name: ubuntu
command: /bin/bash
environment:
- TZ=Asia/Shanghai
stdin_open: true
tty: true
容器啟動后,安裝curl命令用于測試。
apt-get update
apt-get install curl
Docker訪問IPv6網站報錯截圖:
WSL訪問IPv6網站報錯截圖:
查看docker網絡,顯示IPv6是禁用的
docker network inspect ubuntu_default
解決方案
解決步驟如下:
1. 設置WSL的networkingMode
修改C:\Users<your_username>.wslconfig(如文件不存在則新建),設置networkingMode為mirrored
[wsl2]
networkingMode=mirrored
修改后重啟windows。重啟后,WSL可以訪問IPv6網站了,但Docker容器還不行。
2. 設置Docker允許IPv6
打開Docker Desktop設置,在Docker Engine配置加上如下設置項:
"default-network-opts": {
"bridge": {
"com.docker.network.enable_ipv6": "true"
}
}
點擊"Apply & restart"重啟Docker Engine。
3. 重建Docker容器
用如下命令重建容器:
docker compose down
docker compose up -d
查看docker網絡,顯示IPv6是啟用的。
docker network inspect ubuntu_default
Docker容器中可以正常訪問IPv6網絡。
至此,問題得到解決。