1、容器间网络不通

# 查看容器网络配置

docker network inspect <网络名称>

# 检查容器IP地址

docker inspect --format '{{.NetworkSettings.IPAddress}}' <容器ID>

# 测试容器间连通性

docker exec <容器A> ping -c 3 <容器B的IP>

docker exec <容器A> curl -I <容器B的IP:端口>

# 检查网络驱动

docker network ls | grep <网络名称>

# 重建网络

docker network rm <网络名称>

docker network create --driver bridge <网络名称>

# 重新连接容器

docker network connect <网络名称> <容器ID>

2、端口映射失败

# 检查端口映射配置

docker port <容器ID>

docker inspect --format '{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' <容器ID>

# 检查端口是否被占用

netstat -tulpn | grep <宿主端口>

lsof -i :<宿主端口>

# 检查防火墙规则

iptables -L INPUT | grep <宿主端口>

firewall-cmd --list-ports | grep <宿主端口>

# 尝试更换宿主端口

docker run -p <新宿主端口>:<容器端口> --name <新容器名> <镜像名>

3、 DNS 解析问题

# 检查容器内DNS配置

docker exec <容器ID> cat /etc/resolv.conf

# 测试DNS解析

docker exec <容器ID> nslookup google.com

docker exec <容器ID> ping -c 3 google.com

# 配置自定义DNS

docker run --dns 8.8.8.8 --dns 8.8.4.4 <镜像名>

# 全局配置DNS

cat > /etc/docker/daemon.json << 'EOF'

{

  "dns": ["8.8.8.8", "8.8.4.4"]

}

EOF

systemctl restart docker

更多推荐