Исследование проблемы подключения Docker

Я пытаюсь добраться до host-x.com из контейнера докеров, работающего на MacOS, но он не работает:

$ 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

Он отлично работает, когда:

  • Я запускаю контейнер докера на другой машине:

    Online
    
  • Я запускаю его на своем Mac, вне контейнера докера:

     nc -v -z -w 3 host-x.com 443  &> /dev/null && echo "Online" || echo "Offline"'     
    
     Online
    
  • Я запускаю его на своем 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

  1. Как было предложено, я вошел в контейнер и проверил DNS. Имя хоста правильно разрешено:

    [email protected]:/# ping host-x.com
    PING s1-host-x.com (172.22.187.101) 56(84) bytes of data.
    
  2. Однако пакеты ping не поставляются. Хотя это может быть вызвано конфликтом IP-диапазона во внутренней докере-сети и корпоративной сети (172.17.XX). Я попытался исправить IP-адрес докер-моста в конфигурации моего демона и перепроверить подключение, но это не помогло:

    "bip" : "10.10.10.1/8"
    
  3. Я проверил с тремя другими лицами в моей компании (всего 4, включая меня). У 50% есть доступ к этому хосту (онлайн), 50% - не (Offline).

  4. Я попробовал, что предложил @mko, используя netcat в интерактивном режиме внутри контейнера. Еще один тайм-аут.

     [email protected]:/# nc -v -z -w 3 host-x.com 443
     s1-host-x.com [172.22.187.101] 443 (?) : Connection timed out  
    
  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  * * *
    

Как я могу это расследовать?

Ответ 1

Может быть, ваш брандмауэр (pf) блокирует его. Проверьте правила брандмауэра на хосте и проверьте маршрут.