You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04下Docker容器可Ping但无法Curl URL问题求助

解决方案

针对你遇到的Ubuntu Server 22.04上Docker容器桥接网络能Ping域名但无法Curl的问题,按以下步骤排查修复:

1. 检查Docker iptables配置

Docker依赖iptables实现网络转发,apt升级可能导致该配置被重置:

  • 查看当前Docker是否启用iptables:
    docker info | grep -i iptables
    
  • 如果输出为false,编辑/etc/docker/daemon.json(不存在则新建),添加:
    {"iptables": true}
    
  • 重启Docker服务:
    systemctl restart docker
    

2. 修复宿主机iptables规则

确认宿主机iptables的nat表中存在Docker相关链:

  • 查看nat表规则:
    iptables -t nat -L -n
    
  • 如果未找到DOCKER链,手动重建规则:
    iptables -t nat -N DOCKER
    iptables -t nat -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
    iptables -t nat -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
    iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
    
  • 重启Docker服务生效。

3. 匹配桥接网络MTU值

宿主机网卡MTU与Docker桥接MTU不匹配会导致TCP数据包丢失:

  • 查看宿主机网卡MTU(以eth0为例):
    ip link show eth0 | grep mtu
    
  • 查看Docker默认桥接的MTU:
    docker network inspect bridge | grep -i mtu
    
  • 如果两者不一致,编辑/etc/docker/daemon.json添加MTU配置(替换为宿主机的MTU值):
    {"mtu": 1500}
    
  • 重启Docker服务。

4. 检查防火墙(ufw)规则

ufw可能阻止了Docker桥接网络的出站流量:

  • 查看ufw状态:
    ufw status
    
  • 如果启用了ufw,允许Docker桥接网络的出入站流量:
    ufw allow in on docker0
    ufw allow out on docker0
    
  • 重载ufw规则:
    ufw reload
    

5. 重置Docker网络配置

如果以上步骤无效,重置Docker网络栈:

  • 停止所有运行的容器:
    docker stop $(docker ps -aq)
    
  • 删除所有自定义网络:
    docker network rm $(docker network ls -q)
    
  • 停止Docker服务并清理网络文件:
    systemctl stop docker
    rm -rf /var/lib/docker/network/files/*
    systemctl start docker
    

内容的提问来源于stack exchange,提问作者Gambi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:05:13