Ответ 1
Может быть, ваш брандмауэр (pf) блокирует его. Проверьте правила брандмауэра на хосте и проверьте маршрут.
Я пытаюсь добраться до 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
Как было предложено, я вошел в контейнер и проверил DNS. Имя хоста правильно разрешено:
[email protected]:/# ping host-x.com
PING s1-host-x.com (172.22.187.101) 56(84) bytes of data.
Однако пакеты ping не поставляются. Хотя это может быть вызвано конфликтом IP-диапазона во внутренней докере-сети и корпоративной сети (172.17.XX). Я попытался исправить IP-адрес докер-моста в конфигурации моего демона и перепроверить подключение, но это не помогло:
"bip" : "10.10.10.1/8"
Я проверил с тремя другими лицами в моей компании (всего 4, включая меня). У 50% есть доступ к этому хосту (онлайн), 50% - не (Offline).
Я попробовал, что предложил @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
Я пробовал отслеживать маршрут, но не успел:
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) блокирует его. Проверьте правила брандмауэра на хосте и проверьте маршрут.