插件窝 干货文章 安了docker网络不通怎么办

安了docker网络不通怎么办

Docker 容器 网络 bash 615    来源:    2025-04-28

当 Docker 网络不通时,可以按照以下步骤排查和解决问题:


1. 检查基础网络状态

  • 确认 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和网卡状态
    

2. 检查 Docker 网络配置

  • 列出所有 Docker 网络

    docker network ls
    

    确保默认网络(如 bridge)存在。

  • 查看容器网络详情

    docker inspect <容器ID> | grep IPAddress
    docker network inspect bridge
    

3. 容器内部网络测试

  • 进入容器测试网络bash docker exec -it <容器ID> sh ping 8.8.8.8 # 测试外网 ping host.docker.internal # 测试宿主机(Docker 18.03+)
    • 如果容器内无法联网,可能是 DNS 问题: bash cat /etc/resolv.conf # 检查DNS配置

4. 排查防火墙/安全组

  • 宿主机防火墙

    iptables -L -n            # Linux
    netsh advfirewall show all # Windows
    

    允许 Docker 相关流量:

    sudo ufw allow 2375/tcp   # Ubuntu示例
    
  • 云服务器安全组:检查云平台的入站/出站规则。


5. 重启 Docker 网络

  • 重建默认网络(谨慎操作): bash docker network disconnect bridge <容器ID> docker network connect bridge <容器ID> 或重启 Docker 服务: bash systemctl restart docker

6. 检查自定义网络配置

  • 如果使用自定义网络: bash docker network create my_network docker run --network=my_network ... 确保子网无冲突: bash docker network inspect my_network

7. 其他常见问题

  • MTU 不匹配(尤其是 VPN 场景): bash docker daemon --mtu=1450 # 在/etc/docker/daemon.json中配置
  • IPv6 冲突:在 daemon.json 中禁用: json { "ipv6": false }

8. 日志分析

  • 查看 Docker 日志bash journalctl -u docker -n 50 # Linux docker logs <容器ID> # 容器日志

总结步骤

  1. 测试宿主机网络 → 2. 检查容器网络配置 → 3. 排查防火墙 → 4. 检查 DNS → 5. 分析日志。

如果问题仍存在,提供以下信息以便进一步排查: - docker version - docker info - 操作系统版本及网络环境(如 VPN、公司网络)。