Я пытаюсь добраться до 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 * * *
Как я могу это расследовать?