调查Docker连接问题

调查Docker连接问题,docker,networking,Docker,Networking,我正在尝试从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 "

我正在尝试从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
它在以下情况下工作正常:

  • 我在另一台机器上运行docker容器:

    Online
    
  • 我在Mac上运行它,在docker容器外:

     nc -v -z -w 3 host-x.com 443  &> /dev/null && echo "Online" || echo "Offline"'     
    
     Online
    
  • 我从docker容器在Mac上运行它,用于其他目标主机:

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

  • 按照建议,我登录到容器并检查了DNS。主机名已正确解析:

    root@55add56ecc11:/# ping host-x.com
    PING s1-host-x.com (172.22.187.101) 56(84) bytes of data.
    
  • 但是,ping包未交付。我认为这可能是由于内部docker网络和公司网络(172.17.X.X)中的IP范围冲突造成的。我试图在我的守护程序配置中修复docker网桥IP地址并重新检查连接,但没有帮助:

    "bip" : "10.10.10.1/8"
    
  • 我与我公司的其他3人(包括我在内共4人)进行了核实。50%有权访问此主机(联机),50%没有(脱机)

  • 我尝试了@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  
    
  • 我试图追踪路线,但没有成功:

    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  * * *
    

  • 我该如何调查呢?

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

    很可能是路线的问题。使用检查路由表
    
    ip r
    
    
    netstat-rn
    

    在docker容器和主机内部。确保通过在容器内运行
    ipa
    命令应用了对bip的更改,该容器的地址应在bip范围内。另外,可能您的新bip范围10.10.10.1也与公司网络相冲突。在这种情况下,您应该联系您的网络管理员,并询问他您应该为docker容器选择什么网络。也可能是host host-x.com正在阻止来自docker容器IP地址的请求。

    尝试使用交互式shell进入容器,并对问题进行一点故障排除。例如,您的容器是否解析DNS名称?@whites11我更新了我的问题,我们在interactive shell中找到了更多的发现,但他们没有给出任何关于原因的线索。我还能试什么?