Das sollte sein , was --link
für ist , zumindest für den Hostnamen Teil.
Mit Docker 1.10 und PR 19242 wäre das:
docker network create --net-alias=[]: Add network-scoped alias for the container
(siehe letzten Abschnitt unten)
Das ist , was Aktualisierung der /etc/hosts
Datei Details
Zusätzlich zu den Umgebungsvariablen fügt Docker der /etc/hosts
Datei einen Hosteintrag für den Quellcontainer hinzu .
Starten Sie beispielsweise einen LDAP-Server:
docker run -t --name openldap -d -p 389:389 larrycai/openldap
Und definieren Sie ein Image, um diesen LDAP-Server zu testen:
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
Sie können den openldap
Container als ' internalopenldap
' im Testbild mit --link verfügbar machen:
docker run -it --rm --name ldp --link openldap:internalopenldap ldaptest
Wenn Sie dann 'lds' eingeben, funktioniert dieser Alias:
ldapsearch -H ldap://internalopenldap ...
Das würde die Leute zurückbringen. Die Bedeutung internalopenldap
wird vom ldaptest
Bild aus korrekt erreicht .
Natürlich wird Docker 1.7 hinzugefügt libnetwork
, das eine native Go-Implementierung zum Verbinden von Containern bietet. Siehe den Blog-Beitrag .
Mit dem Container Network Model (CNM) wurde eine vollständigere Architektur eingeführt.
Dadurch wird die Docker-CLI mit neuen "Netzwerk" -Befehlen aktualisiert und dokumentiert, wie das " -net
" -Flag verwendet wird, um Containern Netzwerke zuzuweisen.
Docker 1.10 hat einen neuen Abschnitt Alias mit Netzwerkbereich , der jetzt offiziell dokumentiert ist innetwork connect
:
Während Links eine Auflösung von privaten Namen bieten, die in einem Container lokalisiert ist, bietet der Alias mit Netzwerkbereich eine Möglichkeit, einen Container durch einen alternativen Namen von einem anderen Container im Bereich eines bestimmten Netzwerks zu erkennen.
Im Gegensatz zum Link-Alias, der vom Verbraucher eines Dienstes definiert wird, wird der Alias mit Netzwerkbereich durch den Container definiert, der den Dienst dem Netzwerk anbietet.
Fahren Sie mit dem obigen Beispiel fort und erstellen Sie einen weiteren Container isolated_nw
mit einem Netzwerkalias.
$ docker run --net=isolated_nw -itd --name=container6 -alias app busybox
8ebe6767c1e0361f27433090060b33200aac054a68476c3be87ef4005eb1df17
--alias=[]
Fügen Sie einen Alias mit Netzwerkbereich für den Container hinzu
Mit der --link
Option können Sie einen anderen Container mit einem bevorzugten Alias verknüpfen
Sie können Container anhalten, neu starten und stoppen, die mit einem Netzwerk verbunden sind. Angehaltene Container bleiben verbunden und können durch eine Netzwerkinspektion aufgedeckt werden. Wenn der Container gestoppt wird, wird er erst im Netzwerk angezeigt, wenn Sie ihn neu starten.
Wenn angegeben, werden die IP-Adresse (n) des Containers erneut angewendet, wenn ein gestoppter Container neu gestartet wird. Wenn die IP-Adresse nicht mehr verfügbar ist, kann der Container nicht gestartet werden.
Eine Möglichkeit, um sicherzustellen, dass die IP-Adresse verfügbar ist, besteht darin, --ip-range
beim Erstellen des Netzwerks eine anzugeben und die statische (n) IP-Adresse (n) außerhalb dieses Bereichs auszuwählen. Dadurch wird sichergestellt, dass die IP-Adresse keinem anderen Container zugewiesen wird, während sich dieser Container nicht im Netzwerk befindet.
$ 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