Как выставить ip док-контейнера во внешнюю сеть? - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу открыть ip контейнера для внешней сети, в которой работает хост, чтобы я мог напрямую пропинговать ip контейнера докера с внешнего компьютера.Если я пингую ip контейнера-докера с внешней машины, на которой машина, на которой размещается докер, и машина, с которой я пингуюсь, находятся в одной сети, мне нужно получить ответ от этих машин

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Поскольку вы пометили это как :

Вы не можете напрямую отправлять пакеты отдельным контейнерам Docker.Вы должны отправить их в другое место, которое сможет их направить.В случае простого Docker вам нужно использовать опцию docker run -p для публикации порта на хосте, и тогда контейнеры будут доступны через опубликованный порт через IP-адрес хоста или DNS-имя.В контексте Kubernetes вам нужно настроить Службу, которая способна направлять трафик на Pod (или Pod), на которых работает ваш контейнер, и вы в конечном итоге получаете доступ к контейнерам через эту Службу.

Внутренний IP-адрес контейнераадреса практически бесполезны во многих контекстах.(Они не могут быть достигнуты из вне хоста вообще; в некоторых средах вы даже не можете связаться с ними из-за пределов Docker на том же хосте.) Существуют и другие механизмы, которые вы можете использовать для доступа к контейнерам (docker run -p из-за пределов Docker,межконтейнерный DNS из Docker), и вам вообще не нужно искать эти IP-адреса.

В вашем вопросе особое внимание уделяется ping (1).Это инструмент для отладки очень низкого уровня, использующий сетевой протокол ICMP.Если отправка пакетов с использованием ICMP на самом деле является ядром вашего рабочего процесса, у вас возникнут трудности с его запуском в Docker или Kubernetes.Я подозреваю, что вы на самом деле не так.Не беспокойтесь о возможности напрямую проверять контейнеры;используйте инструменты более высокого уровня, такие как curl (1), если вам необходимо убедиться, что запрос достигает своего контейнера.

0 голосов
/ 25 апреля 2019

Проверка IP-адреса контейнера (т. Е. IP-адреса, который отображается при просмотре docker inspect [CONTAINER]) с другого компьютера не работает.Однако контейнер доступен через общедоступный IP-адрес его хоста.

В дополнение к ответу Borja вы можете открыть порты контейнеров Docker, добавив -p [HOST_PORT]:[CONTAINER_PORT] к вашей команде docker run.

Например, если вы хотите получить доступ к веб-серверу в контейнере Docker с другого компьютера, вы можете запустить его с docker run -d -p 80:80 httpd:alpine.Порт контейнера 80 становится доступным через порт хоста 80.Другие компьютеры в той же сети также смогут подключаться к веб-серверу в этом контейнере (конечно, в зависимости от настроек брандмауэра и т. Д.) *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...