当 Docker 网络不通时,可以按照以下步骤排查和解决问题:
确认 Docker 服务运行:
systemctl status docker # Linux
sc query docker # Windows
如果未运行,启动服务:
systemctl start docker # Linux
net start docker # Windows
检查主机网络:
ping 8.8.8.8 # 测试外网连通性
ifconfig / ip addr # 查看主机IP和网卡状态
列出所有 Docker 网络:
docker network ls
确保默认网络(如 bridge
)存在。
查看容器网络详情:
docker inspect <容器ID> | grep IPAddress
docker network inspect bridge
bash
docker exec -it <容器ID> sh
ping 8.8.8.8 # 测试外网
ping host.docker.internal # 测试宿主机(Docker 18.03+)
bash
cat /etc/resolv.conf # 检查DNS配置
宿主机防火墙:
iptables -L -n # Linux
netsh advfirewall show all # Windows
允许 Docker 相关流量:
sudo ufw allow 2375/tcp # Ubuntu示例
云服务器安全组:检查云平台的入站/出站规则。
bash
docker network disconnect bridge <容器ID>
docker network connect bridge <容器ID>
或重启 Docker 服务:
bash
systemctl restart docker
bash
docker network create my_network
docker run --network=my_network ...
确保子网无冲突:
bash
docker network inspect my_network
bash
docker daemon --mtu=1450 # 在/etc/docker/daemon.json中配置
daemon.json
中禁用:
json
{ "ipv6": false }
bash
journalctl -u docker -n 50 # Linux
docker logs <容器ID> # 容器日志
如果问题仍存在,提供以下信息以便进一步排查:
- docker version
- docker info
- 操作系统版本及网络环境(如 VPN、公司网络)。