[求助]宿主机无法 ping 通 docker 的 ubuntu 容器 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zcion
V2EX    程序员

[求助]宿主机无法 ping 通 docker 的 ubuntu 容器

  •  
  •   zcion 261 天前 2290 次点击
    这是一个创建于 261 天前的主题,其中的信息可能已经有所发展或是发生改变。

    环境

    windows11 wsl2 + docker desktop + ubuntu22.04

    docker 拉取的 ubuntu 镜像是在原有 ubuntu22.04 的基础上自己 apt install 了一些常用工具的镜像。

    问题

    通过 docker 创建 ubuntu 容器 ubuntu_b,以下是其网络配置信息: Imgur

    在宿主机中(wsl2 环境) ping ubuntu_b 的 ip ( 172.17.0.3 )无法 ping 通,但 ping 其网关( 172.17.0.1 )却 ping 的通.

    宿主机( 172.20.166.206 ) ping ubuntu_b 容器: Imgur

    同时用 tcpdump 抓包: Imgur

    宿主机 ping 网关能通: Imgur

    但在 ubuntu_b 中 ping 宿主机能够 ping 通: Imgur

    ubuntu_b 中 ping 另一台 ubuntu 容器 ubuntu_c( 172.17.0.2 )也能够 ping 通,并且两者相互 ping 的通。 Imgur

    尝试

    自己查看了一些信息,也问了 deepseek ,主要还是说防火墙问题,但以上宿主机和 ubuntu 容器的防火墙都是默认接收所有流量的状态(这里贴的是 ubuntu_c 的,ubuntu_b 没有配置 root 权限无法查看,不过不影响问题的发生,ubuntu_c 同样有以上的问题): Imgur

    求大佬解答一下!!!

    13 条回复    2025-04-04 01:33:48 +08:00
    ThreeSidedCoin
        1
    ThreeSidedCoin  
       261 天前
    桥接网络?
    zcion
        2
    zcion  
    OP
       261 天前
    @ThreeSidedCoin 是的,网络模式用的是默认设置
    hwdq0012
        3
    hwdq0012  
       261 天前
    wsl 默认是 nat
    docker 默认也是 nat
    docker 运行在 wsl 中(如果设置了 docker 和 wsl2 集成的话

    host pin 子网 ubuntu ping 不通 是正常的
    子网的 ubuntu ping Host 能 ping 能 ping 通,说明子网路由正确


    wsl -l -v 可以看到一个 docker desktop 的实例, 你是在 docker desktop 里操作的吗
    如果是,我觉得 wsl ping 不通 contianer 是因为 docker 和 wsl 都是 hyper v 的 平级的虚拟网络子网
    zcion
        4
    zcion  
    OP
       261 天前
    @hwdq0012 wsl -l -v 默认用的是 ubuntu22.04 的,并没有用 docker-desktop.
    docker-desktop 里也是设置的 ubuntu22.04 distros (settings->Resources->WSL integration).
    不理解为啥说宿主机 ping 不通容器 ip 是正常,我的理解是,两者都能够 ping 通容器网关(172.17.0.1),那正常来说外部也应该 ping 的通内部
    求解答
    hwdq0012
        5
    hwdq0012  
       261 天前
    @zcion
    你说的 wsl 里 ping 不通 ubuntu 是 在哪个 wsl 里操作的
    你可以在 windows 下用 tracert 172.17.0.3 看看路由是怎么跑的
    zcion
        6
    zcion  
    OP
       261 天前
    @hwdq0012
    在 ubuntu22.04 里操作的,当时安装 wsl2 用的这个
    ![Imgur]( )

    windows 中 tracert 的结果:
    ![Imgur]( )

    附带 wsl2 中 traceroute 的结果:
    ![Imgur]( )

    突然想起来,因为之前的某些缘故重新卸载在安装过 wsl 过,之后它的网关就有两个了,在 windows 中 ipconfig 的结果:
    ![Imgur]( )

    感谢大佬解答
    yinmin
        7
    yinmin  
       261 天前
    docker 28.0 的 iptables 防火墙规则改了,默认不允许 ip forward 到容器里了。

    你试试在 docker host 里加一条防火墙规则:

    iptables -I DOCKER-USER -d 172.17.0.0/24 -j ACCEPT
    yinmin
        8
    yinmin  
       261 天前
    我可能知道原因了,你的 windows 路由有问题。另外:172.30.0.1 不是你的 docker ,是你宽带电信营运商的某台服务器。你完全关闭 docker 和 wsl2 ,或者换一台别的电脑,然后 ping 172.30.0.1 也能 ping 通。
    bingfengfeifei
        9
    bingfengfeifei  
       261 天前
    没用过这种环境,你可以先在 wsl2 环境中 排查下。
    使用 ip route 命令看下路由表发出来,然后 ip neigh 命令看看 arp 是否通了,MAC 获取到没。
    然后看下 cat /proc/sys/net/ipv4/ip_forward 看下 ip 转发开了没
    以及看下 ip link ,docker 用的什么接口
    看下 brctl show 网桥
    laminux29
        10
    laminux29  
       261 天前
    wsl2 + docker desktop ,你这 Debuff 拉满了。VMware Workstation 也有网络问题。

    想要稳定,建议找台大内存的 x99 洋垃圾,安装 PVE 。
    XuHuan1025
        11
    XuHuan1025  
       261 天前
    wsl2 遇到过很多问题 还是 vmwarre 好
    512357301
        12
    512357301  
       261 天前 via Android
    [两者都能够 ping 通容器网关(172.17.0.1),那正常来说外部也应该 ping 的通内部]
    你这很明显有点想当然了,你的容器在 nat 内部,宿主机怎么可能访问到它。。。,除非开启端口转发,否则 nat 网络无解,别说 docker 了,虚拟机也是这样的逻辑啊。
    另外去复习或者学习下网络拓扑的入门知识吧。
    再另外,建议用虚拟机搞 docker 吧,wsl 坑挺多,不如虚拟机。
    siweipancc
        13
    siweipancc  
       261 天前 via iPhone
    ……你要是不懂网络可以换成 mirror 网络模式
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1048 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 18:14 PVG 02:14 LAX 10:14 JFK 13:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86