Это должно быть то --link
, для чего нужно , по крайней мере, для части имени хоста.
С docker 1.10 и PR 19242 это будет:
docker network create --net-alias=[]: Add network-scoped alias for the container
(см. последний раздел ниже)
Это то, что Обновление/etc/hosts
сведений о файле
Помимо переменных среды, Docker добавляет в /etc/hosts
файл запись хоста для исходного контейнера .
Например, запустите сервер LDAP:
docker run -t --name openldap -d -p 389:389 larrycai/openldap
И определите изображение для тестирования этого сервера LDAP:
FROM ubuntu
RUN apt-get -y install ldap-utils
RUN touch /root/.bash_aliases
RUN echo "alias lds='ldapsearch -H ldap://internalopenldap -LL -b
ou=Users,dc=openstack,dc=org -D cn=admin,dc=openstack,dc=org -w
password'" > /root/.bash_aliases
ENTRYPOINT bash
Вы можете выставить openldap
контейнер как ' internalopenldap
' внутри тестового изображения с помощью --link:
docker run -it --rm --name ldp --link openldap:internalopenldap ldaptest
Затем, если вы наберете lds, этот псевдоним будет работать:
ldapsearch -H ldap://internalopenldap ...
Это вернет людей. Смысл internalopenldap
правильно передан из ldaptest
изображения.
Конечно, добавит docker 1.7 libnetwork
, который предоставляет встроенную реализацию Go для подключения контейнеров. См. Сообщение в блоге .
Он представил более полную архитектуру с моделью сети контейнеров (CNM).
Это обновит интерфейс командной строки Docker новыми «сетевыми» командами и задокументирует, как используется -net
флаг « » для назначения контейнеров сетям.
docker 1.10 имеет новый раздел с псевдонимом в сетевой области , который теперь официально задокументирован вnetwork connect
:
В то время как ссылки обеспечивают частное разрешение имен, которое локализовано в контейнере, псевдоним в пределах сети предоставляет способ обнаружения контейнера по альтернативному имени любым другим контейнером в пределах конкретной сети.
В отличие от псевдонима ссылки, который определяется потребителем услуги, псевдоним в области сети определяется контейнером, который предлагает услугу сети.
Продолжая приведенный выше пример, создайте еще один контейнер isolated_nw
с сетевым псевдонимом.
$ docker run --net=isolated_nw -itd --name=container6 -alias app busybox
8ebe6767c1e0361f27433090060b33200aac054a68476c3be87ef4005eb1df17
--alias=[]
Добавить псевдоним в сетевой области для контейнера
Вы можете использовать --link
опцию, чтобы связать другой контейнер с предпочтительным псевдонимом
Вы можете приостанавливать, перезапускать и останавливать контейнеры, подключенные к сети. Приостановленные контейнеры остаются подключенными и могут быть обнаружены при проверке сети. Когда контейнер остановлен, он не появляется в сети, пока вы его не перезапустите.
Если указано, IP-адрес (а) контейнера повторно применяется при перезапуске остановленного контейнера. Если IP-адрес больше не доступен, контейнер не запускается.
Один из способов гарантировать, что IP-адрес доступен, - это указать --ip-range
при создании сети и выбрать статический IP-адрес (а) за пределами этого диапазона. Это гарантирует, что IP-адрес не будет передан другому контейнеру, пока этот контейнер не находится в сети.
$ docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 multi-host-network
$ docker network connect --ip 172.20.128.2 multi-host-network container2
$ docker network connect --link container1:c1 multi-host-network container2