Це має бути те, що --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)
Це оновить CLI Docker новими командами “мережа” та зафіксує, як -net
прапор “ ” використовується для призначення контейнерів мережам.
Докер 1,10 має новий розділ Network-контекстний псевдонім , в даний час офіційно задокументований в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