Зачем кому-то использовать одно и то же пространство имен сети для двух контейнеров докеров? - PullRequest
3 голосов
/ 05 марта 2019

Зачем вам подключать два док-контейнера через сетевое пространство имен, а не только через одну сеть?

Насколько я знаю, единственная разница в том, что вы можете вызывать другой контейнер, используя localhost. Я не вижу ни одного варианта использования, где это было бы необходимо.

У кого-нибудь есть опыт с этим?

1 Ответ

4 голосов
/ 05 марта 2019

Одной из причин, по которой я могу придумать, является использование инструмента или команды , которая недоступна в вашем контейнере. Этот пример ниже взят прямо из docker run документов :

СЕТЬ: КОНТЕЙНЕР

Пример запуска контейнера Redis с привязкой Redis к localhost, затем выполнения команды redis-cli и подключения к серверу Redis через интерфейс localhost.

$ docker run -d --name redis example/redis --bind 127.0.0.1
$ # use the redis container's network stack to access localhost
$ docker run --rm -it --network container:redis example/redis-cli -h 127.0.0.1

Аналогичным образом можно использовать эту технику для отладки контейнера. Например, если ваш контейнер не имеет tcpdump, вы можете создать изображение, которое имеет его:

docker build -t tcpdump - <<EOF 
FROM ubuntu 
RUN apt-get update && apt-get install -y tcpdump 
CMD tcpdump -i eth0 
EOF

и run контейнер для отладки вашего приложения:

docker run --rm --net=container:my-app tcpdump

Если ваш вопрос был больше о Kubernetes , есть несколько интересных ссылок:

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