2016-05-25 6 views
0

ли следующую команду ссылкой два контейнера , а также выставить порт на моей сети? ..Link & Expose Docker контейнер Simultaniously

docker run -d -p 5000:5000 --link my-postgres:postgres danwahlin/aspnetcore 

Я смотрю курс DAV Wahlin на Докер, и это одна команда дует мой разум. Означает ли это, что порт 5000 будет доступен из моей сети И связан между двумя контейнерами? Если это так, то ссылка не имеет существенного значения для связи между контейнерами, так как они могут использовать IP и порт в файле конфигурации, поскольку может. Верный?

ответ

0

Похоже, вы вводите в заблуждение «устаревшее соединение» с «контейнерными сетями». Создание ссылки , как показывает ваш пример, создает запись в контейнере hosts, чтобы они могли разрешать друг друга по имени.

В приведенном выше примере вы создали псевдоним псевдонима «postgres» в контейнер «my-postgres». Думайте имя разрешение здесь. Это не делает ничего, чтобы изолировать сетевой стек.

У вас есть переключатель --port или -p, который предоставляет порт контейнера для сети. Здесь вы выставляете порт 5000. Без этого переключателя вы ничего не выставляете и, следовательно, не получите никаких входящих вызовов.

Если вы хотите изолировать контейнеров вы могли бы сделать это с помощью «моста сети», как так:

docker network create --driver bridge mynetwork 

Как только сеть создана, только контейнеры, добавленные к сети будут взаимодействовать друг с другом. Например:

docker run -d --net=mynetwork --name postgres postgres:latest 
docker run -d --net=mynetwork --name node node:latest 
Смежные вопросы