docker宿主机和容器网络ping不通处理
好的 👍 我们来一步步帮你恢复 Proxmox 或 Linux 主机上 Docker 的网络连接,确保你能从宿主机 ping 到容器。
🧩 一、首先确认问题范围
请在宿主机上运行以下命令(复制粘贴)并告诉我输出结果:
# 1. 查看 Docker 网络
docker network ls
# 2. 查看默认 bridge 网络的详细信息
docker network inspect bridge | grep Subnet
# 3. 查看某个容器的网络配置(把 <container_name> 换成你的容器名)
docker inspect -f '{{ .Name }} -> {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_name>
# 4. 从宿主机 ping 容器 IP(替换为上面拿到的 IP)
ping -c 3 <container_ip>
🧰 二、如果 ping 不通,逐步修复
① 检查 iptables FORWARD 策略
很多时候 Docker 的 NAT 转发被关闭:
sudo iptables -P FORWARD ACCEPT
然后重启 Docker:
sudo systemctl restart docker
② 检查 docker0 网桥是否存在
ip addr show docker0
如果没有输出,重建默认 bridge 网络:
sudo systemctl stop docker
sudo rm -rf /var/lib/docker/network
sudo systemctl start docker
③ 确认内核转发开启
sudo sysctl -w net.ipv4.ip_forward=1
sudo sed -i 's/^#\?net.ipv4.ip_forward=.*/net.ipv4.ip_forward=1/' /etc/sysctl.conf
④ 确保宿主机防火墙没拦截 Docker NAT
如果你用了 ufw 或 firewalld,要允许 Docker:
sudo ufw allow in on docker0
sudo ufw allow out on docker0
sudo ufw reload
或在 firewalld:
sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0
sudo firewall-cmd --reload
⑤ 检查宿主机和容器是否在同一子网
容器默认在 172.17.0.0/16 子网,宿主机 docker0 IP 通常是 172.17.0.1,可以 ping 一下:
ping -c 3 172.17.0.1
如果容器能 ping 到宿主机,但宿主机 ping 不通容器,多半是 iptables NAT 或 bridge 问题。
🔁 最后一步:彻底重置网络(最强修复)
如果前面都不行,可以彻底重建网络栈:
sudo systemctl stop docker
sudo rm -rf /var/lib/docker/network
sudo ip link delete docker0
sudo systemctl start docker
这会重新创建一个新的 docker0 网桥。
请你先执行我上面【第一部分】的命令,把输出发给我,我就能精准告诉你是哪一步出问题。
你可以先从这里开始👇:
docker network ls

浙公网安备 33010602011771号