To powinno być to, co --link
jest , przynajmniej dla części hosta.
W przypadku dockera 1.10 i PR 19242 byłoby to:
docker network create --net-alias=[]: Add network-scoped alias for the container
(patrz ostatnia sekcja poniżej)
To właśnie aktualizacja/etc/hosts
szczegółów pliku
Oprócz zmiennych środowiskowych Docker dodaje do /etc/hosts
pliku wpis hosta dla kontenera źródłowego .
Na przykład uruchom serwer LDAP:
docker run -t --name openldap -d -p 389:389 larrycai/openldap
I zdefiniuj obraz, aby przetestować ten serwer 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
Możesz wyeksponować openldap
„kontener jako internalopenldap
” w obrazie testowym za pomocą --link:
docker run -it --rm --name ldp --link openldap:internalopenldap ldaptest
Następnie, jeśli wpiszesz „lds”, ten alias zadziała:
ldapsearch -H ldap://internalopenldap ...
To zwróciłoby ludzi. Znaczenie internalopenldap
jest poprawnie osiągnięte z ldaptest
obrazu.
Oczywiście, docker 1.7 doda libnetwork
, co zapewnia natywną implementację Go do łączenia kontenerów. Zobacz wpis na blogu .
Wprowadził bardziej kompletną architekturę z modelem sieci kontenerowej (CNM)
Spowoduje to zaktualizowanie interfejsu wiersza polecenia platformy Docker za pomocą nowych poleceń „sieciowych” i udokumentowanie sposobu -net
użycia flagi „ ” do przypisywania kontenerów do sieci.
docker 1.10 ma nową sekcję Alias o zasięgu sieciowym , teraz oficjalnie udokumentowany wnetwork connect
:
Podczas gdy łącza zapewniają rozpoznawanie nazw prywatnych, które są zlokalizowane w kontenerze, alias o zasięgu sieci umożliwia wykrycie kontenera przez inną nazwę przez dowolny inny kontener w zakresie określonej sieci.
W przeciwieństwie do aliasu łącza, który jest definiowany przez konsumenta usługi, alias o zasięgu sieci jest definiowany przez kontener, który oferuje usługę w sieci.
Kontynuując powyższy przykład, utwórz kolejny kontener w programie isolated_nw
z aliasem sieciowym.
$ docker run --net=isolated_nw -itd --name=container6 -alias app busybox
8ebe6767c1e0361f27433090060b33200aac054a68476c3be87ef4005eb1df17
--alias=[]
Dodaj alias o zasięgu sieciowym dla kontenera
Możesz użyć --link
opcji, aby połączyć inny kontener z preferowanym aliasem
Możesz wstrzymywać, ponownie uruchamiać i zatrzymywać kontenery podłączone do sieci. Wstrzymane kontenery pozostają połączone i mogą zostać ujawnione podczas inspekcji sieci. Gdy kontener jest zatrzymany, nie pojawia się w sieci, dopóki nie zostanie ponownie uruchomiony.
Jeśli określono, adres (y) IP kontenera są ponownie stosowane po ponownym uruchomieniu zatrzymanego kontenera. Jeśli adres IP nie jest już dostępny, nie można uruchomić kontenera.
Jednym ze sposobów zagwarantowania dostępności adresu IP jest określenie adresu --ip-range
podczas tworzenia sieci i wybranie statycznych adresów IP spoza tego zakresu. Gwarantuje to, że adres IP nie zostanie przekazany innemu kontenerowi, gdy ten kontener nie znajduje się w sieci.
$ 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