调查Docker连接问题

dzi*_*iou 12 networking docker

我试图从运行在MacOS上的docker容器到达host-x.com,但它失败了:

$ docker run ubuntu:latest \ 
   /bin/bash -c \
   'apt-get update &&
     apt-get -y install netcat &&
     nc -v -z -w 3 host-x.com 443  &> /dev/null && echo "Online" || echo "Offline"'

Offline
Run Code Online (Sandbox Code Playgroud)

它的工作原理罚款时:

更新#1

  1. 建议我登录到容器并检查DNS.主机名已正确解析:

    root@55add56ecc11:/# ping host-x.com
    PING s1-host-x.com (172.22.187.101) 56(84) bytes of data.
    
    Run Code Online (Sandbox Code Playgroud)
  2. 但是,不会传递ping包.我虽然这可能是由内部docker网络和企业网络(172.17.XX)中的IP范围冲突引起的.我尝试在我的守护程序配置中修复docker bridge IP地址并重新检查连接但它没有帮助:

    "bip" : "10.10.10.1/8"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我和我公司的其他3人一起检查过(包括我在内共有4人).50%可以访问此主机(在线),50%没有(离线).

  4. 我尝试了@mko建议的内容,在容器内部以交互模式使用netcat.还是超时.

     root@37c61acc5aa5:/# nc -v -z -w 3 host-x.com 443
     s1-host-x.com [172.22.187.101] 443 (?) : Connection timed out  
    
    Run Code Online (Sandbox Code Playgroud)
  5. 我试着追踪这条路线但没有成功:

    traceroute -m 10 -w 1 host-x.com
    traceroute to host-x.com (172.22.187.101), 10 hops max, 60 byte packets
     1  10.10.10.1 (10.10.10.1)  0.444 ms  0.388 ms  0.364 ms
     2  * * *
     3  * * *
     4  * * *
     5  * * *
     6  * * *
     7  * * *
     8  * * *
     9  * * *
    10  * * *
    
    Run Code Online (Sandbox Code Playgroud)

我怎么调查呢?

Log*_*ogu 0

可能是您的防火墙 (pf) 阻止了它。检查主机上的防火墙规则并检查路由。