# 查看容器IP地址
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器名或ID>
# 查看所有网络
docker network ls
# 查看特定网络详情
docker network inspect <网络名或ID>
# 从主机ping容器
ping <容器IP>
# 进入容器ping主机
docker exec -it <容器名或ID> ping <主机IP>
# 临时关闭防火墙测试(不推荐生产环境)
sudo systemctl stop firewalld # CentOS/RHEL
sudo ufw disable # Ubuntu
# 或添加ICMP规则
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
# 创建自定义桥接网络
docker network create my-bridge-network
# 运行容器时指定网络
docker run --network=my-bridge-network -d <镜像名>
# 检查Docker的bip配置(在/etc/docker/daemon.json)
{
"bip": "172.17.0.1/16"
}
# 修改后重启Docker
sudo systemctl restart docker
# 使用主机网络模式运行容器(共享主机网络栈)
docker run --network=host -d <镜像名>
# 检查路由表
ip route
# 检查ARP表
ip neigh
# 使用tcpdump抓包分析
sudo tcpdump -i docker0 icmp
# 检查内核转发是否开启
cat /proc/sys/net/ipv4/ip_forward # 应为1
如果以上方法仍不能解决问题,可能需要检查更底层的网络配置或考虑Docker版本兼容性问题。