Docker安装后应立即验证网络基础能力:先确认容器能否获取IP并连通宿主机(如ping docker0网关172.17.0.1及反向ping),再测试对外网连通性(ping 8.8.8.8)与DNS解析(nslookup google.com),最后可选验证容器间通信,推荐使用自定义网络支持服务名解析。

安装 Docker 后,建议立即验证网络基础能力,重点确认容器能否访问外网、能否解析域名、能否与宿主机互通。以下步骤清晰、可操作,覆盖常见问题点。
检查容器是否能获取 IP 并连通宿主机
启动一个轻量容器,查看其网络配置:
- 运行:
docker run -d --name testnet alpine sleep 3600 - 查 IP:
docker inspect testnet | grep -A 3 IPAddress—— 应看到类似"IPAddress": "172.17.0.2" - 从容器 ping 宿主机网关(通常是 docker0 的 IP):
docker exec testnet ping -c 3 172.17.0.1 - 从宿主机 ping 容器:
ping -c 3 172.17.0.2
若任一 ping 失败,说明 bridge 网络底层异常(如 docker0 接口未启用、ip_forward 关闭或 iptables 丢包),需进一步检查 ip link show docker0 和 sysctl net.ipv4.ip_forward。
测试容器对外网的连通性
确保容器能访问公网服务,排除 NAT 或路由问题:
- 在容器内执行:
docker exec testnet ping -c 3 8.8.8.8 - 若通但无法解析域名,说明是 DNS 问题(见下节);若不通,再测网关是否可达(上一步已做)
- 进一步验证出向路径:
docker exec testnet ip route show—— 默认路由应为default via 172.17.0.1 - 检查宿主机是否开启 MASQUERADE:
sudo iptables -t nat -L POSTROUTING | grep MASQUERADE
验证 DNS 解析是否正常
DNS 故障最常见,直接影响 apt install、curl https://... 等操作:
- 查看容器 DNS 配置:
docker exec testnet cat /etc/resolv.conf—— 默认继承宿主机的 nameserver - 测试解析:
docker exec testnet nslookup google.com或docker exec testnet ping -c 1 google.com - 若失败,尝试指定可靠 DNS 启动容器:
docker run --dns 8.8.8.8 alpine nslookup google.com - 如需全局生效,修改 Docker daemon 配置(
/etc/docker/daemon.json)并重启:{"dns": ["114.114.114.114", "8.8.8.8"]}
检查容器间通信(可选进阶)
同一默认 bridge 网络的容器应能互 ping,但注意:默认 bridge 不支持容器名解析,仅支持 IP:
- 启动第二个容器:
docker run -d --name testnet2 alpine sleep 3600 - 查两者 IP:
docker inspect testnet | grep IPAddress和docker inspect testnet2 | grep IPAddress - 从 testnet ping testnet2 的 IP:
docker exec testnet ping -c 3 [testnet2的IP] - 如需容器名互通,推荐创建自定义网络:
docker network create mynet,再用--network mynet启动容器


















