Yani olması gerektiği neyi --link
içindir hostname bölümü için en azından.
İle docker 1.10 ve PR 19242 , olurdu:
docker network create --net-alias=[]: Add network-scoped alias for the container
(aşağıdaki son bölüme bakın)
Dosya ayrıntılarını güncellemek/etc/hosts
budur
Ortam değişkenlerine ek olarak Docker, /etc/hosts
dosyaya kaynak kapsayıcı için bir ana bilgisayar girişi ekler .
Örneğin, bir LDAP sunucusu başlatın:
docker run -t --name openldap -d -p 389:389 larrycai/openldap
Ve bu LDAP sunucusunu test etmek için bir resim tanımlayın:
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
--Link ile test görüntüsündeki ' openldap
' kapsayıcıyı ' internalopenldap
' gösterebilirsiniz:
docker run -it --rm --name ldp --link openldap:internalopenldap ldaptest
Ardından, 'lds' yazarsanız, bu takma ad çalışacaktır:
ldapsearch -H ldap://internalopenldap ...
Bu insanları geri döndürür. Anlam internalopenldap
, ldaptest
görüntüden doğru bir şekilde elde edilir .
Elbette, libnetwork
kapsayıcıları bağlamak için yerel bir Go uygulaması sağlayan docker 1.7 ekleyecektir . Blog gönderisine bakın .
Kapsayıcı Ağ Modeli (CNM) ile daha eksiksiz bir mimari sundu
Bu Docker CLI'yi yeni "ağ" komutlarıyla güncelleyecek ve " -net
" bayrağının ağlara kapsayıcılar atamak için nasıl kullanıldığını belgeleyecektir .
docker 1.10 , şimdi resmi olarak şu belgelerde belgelenen yeni bir Ağ kapsamlı takma ad bölümüne sahiptir :network connect
Bağlantılar, bir kapsayıcı içinde yerelleştirilmiş özel ad çözümlemesi sağlarken, ağ kapsamlı takma ad, bir kapsayıcının belirli bir ağ kapsamındaki başka herhangi bir kap tarafından alternatif bir adla keşfedilmesi için bir yol sağlar.
Bir hizmetin tüketicisi tarafından tanımlanan bağlantı takma adından farklı olarak, ağ kapsamlı diğer ad, hizmeti ağa sunan kapsayıcı tarafından tanımlanır.
Yukarıdaki örnekten devam ederek, içinde isolated_nw
bir ağ takma adıyla başka bir kapsayıcı oluşturun .
$ docker run --net=isolated_nw -itd --name=container6 -alias app busybox
8ebe6767c1e0361f27433090060b33200aac054a68476c3be87ef4005eb1df17
--alias=[]
Kapsayıcı için ağ kapsamlı takma ad ekleyin
--link
Başka bir kapsayıcıyı tercih edilen bir takma ada bağlamak için seçeneği kullanabilirsiniz.
Bir ağa bağlı kapsayıcıları duraklatabilir, yeniden başlatabilir ve durdurabilirsiniz. Duraklatılmış konteynerler bağlı kalır ve bir ağ incelemesi ile ortaya çıkarılabilir. Kapsayıcı durdurulduğunda, siz yeniden başlatana kadar ağda görünmez.
Belirtilirse, durdurulmuş bir konteyner yeniden başlatıldığında kapsayıcının IP adresi / adresleri yeniden uygulanır. IP adresi artık mevcut değilse, kapsayıcı başlatılamaz.
IP adresinin mevcut olduğunu garanti etmenin bir yolu --ip-range
, ağı oluştururken bir belirtmek ve bu aralığın dışından statik IP adreslerini seçmektir. Bu, bu kapsayıcı ağda değilken IP adresinin başka bir kaba verilmemesini sağlar.
$ 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