Разница между --link и --alias в оверлейной сети?

Я читаю эту официальную документацию по Docker 0.10.3 (на данный момент она все еще находится в ветке) и там написано:

--net-alias=ALIAS

В дополнение к --name, как описано выше, контейнер обнаруживается одним или несколькими из его настроенных --net-alias (или --alias в команде сетевого подключения docker) в определенной пользователем сети. Встроенный DNS-сервер поддерживает сопоставление всех псевдонимов контейнера и его IP-адреса в определенной пользователем сети. Контейнер может иметь разные псевдонимы в разных сетях, используя параметр --alias в команде docker network connect.

--link=CONTAINER_NAME:ALIAS

Использование этой опции при запуске контейнера дает встроенному DNS дополнительную запись с именем ALIAS, которая указывает на IP-адрес контейнера, идентифицированного CONTAINER_NAME. При использовании --link встроенный DNS гарантирует, что результат локализованного поиска будет только в том контейнере, где используется --link. Это позволяет процессам внутри нового контейнера подключаться к контейнеру без необходимости знать его имя или IP-адрес.

Является ли сетевой псевдоним одного контейнера ссылкой на второй контейнер в той же сети?

1 ответ

Решение

Есть два различия между --net-alias а также --link:

  1. С --net-alias один контейнер может получить доступ к другому контейнеру, только если они находятся в одной сети. Другими словами, в дополнение к --net-alias foo а также --net-alias bar нужно запустить оба контейнера с --net foobar_net после создания сети с docker network create foobar_net,
  2. С --net-alias foo все контейнеры в одной сети могут получить доступ к контейнеру, используя его псевдоним foo, С --link только связанный контейнер может достичь контейнера, используя имя foo,

Исторически, --link был создан раньше libnetwork и все функции, связанные с сетью. До libnetwork все контейнеры работали в одной сети bridge, а также --link только добавленные имена /etc/hosts, Затем были добавлены пользовательские сети и поведение --link в пользовательских сетях было изменено.

См. Также ссылки на устаревшие контейнеры для получения дополнительной информации о --link,

--ссылка на сайт:

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

--link <container>:<alias>

<container> имя контейнера источника и имя, видимое контейнером получателя. Имя контейнера должно быть уникальным на хосте Docker, тогда как псевдоним является очень специфичным и локальным для контейнера получателя, и, следовательно, псевдоним не обязательно должен быть уникальным для хоста Docker. Это дает большую гибкость в реализации и включении функций с фиксированным псевдонимом источника в контейнере получателя.
<alias>

***NOTE***

Когда два контейнера связаны друг с другом, механизм Docker автоматически экспортирует несколько переменных среды в контейнер получателя. Эти переменные среды имеют четко определенное соглашение об именах, где переменные всегда начинаются с префикса заглавной буквы имени псевдонима. Например, если src является псевдонимом, данным для исходного контейнера, тогда экспортируемые переменные среды будут начинаться сSRC_, Docker экспортирует три категории переменных среды, перечисленные здесь:

NAMEЭто первая категория переменных среды. Эта переменная принимает форму <ALIAS>_NAMEи он несет иерархическое имя контейнера получателя в качестве значения. Например, если псевдоним контейнера источника - src, а имя контейнера получателя - recтогда переменная окружения и ее значение будут SRC_NAME=/rec/src,

ENVЭто вторая категория переменных среды. Эти переменные экспортируют переменные среды, настроенные в исходном контейнере с помощью параметра -e подкоманды docker run или ENV инструкция Dockerfile. Этот тип переменной среды принимает форму <ALIAS>_ENV_<VAR_ NAME>, Например, если псевдоним контейнера источника src и имя переменной SAMPLEтогда переменная окружения будет SRC_ENV_SAMPLE,

PORTЭто последняя и третья категория переменных среды, которая используется для экспорта сведений о подключении исходного контейнера получателю. Docker создает набор переменных для каждого порта, доступного для контейнера-источника, с помощью опции -p подкоманды docker run или инструкции EXPOSE в Dockerfile.

--net псевдоним:

Представьте себе случай, когда у вас есть несколько контейнеров, выполняющих обязанности веб-сервера, и вы хотите дать им одно и то же имя в сети (например, для балансировки нагрузки).

Другие вопросы по тегам