In diesem Artikel wird hauptsächlich die Docker-Multi-Container-Verbindung vorgestellt (am Beispiel von Tomcat+Mysql bietet Docker eine Methode für den direkten Zugriff durch mehrere Container, die den direkten Zugriff mehrerer Container ermöglicht). Zugriff Zugriff über Netzwerkports
Docker bietet eine Methode für den direkten Zugriff mehrerer Container. Die einfachste Möglichkeit besteht darin, den zugeordneten Port direkt mit dem Parameter -P anzugeben, oder um mehrere Container zuzuordnen Direkter Zugriff über den Netzwerkanschluss.
Aber die Netzwerk-Port-Zuordnungsmethode ist nicht die einzige Möglichkeit, mehrere Container in Docker zu verbinden. Eine sicherere Methode ist die Verwendung des Docker-Verbindungssystems (--link), um mehrere Container miteinander zu verbinden. Der Empfängercontainer kann die Informationen des Quellcontainers sehen.
Nehmen Sie Tomcat + Mysql als Beispiel, um eine Verbindung zwischen Containern herzustellen
Um eine Verbindung direkt zwischen Containern herzustellen, verwenden Sie die Option --link
--link
Hier erstellen wir einen Tomcat + MySQL-Dienst, um zu veranschaulichen, wie eine Verbindung zwischen zwei oder mehr Containern hergestellt wird.
Um eine Containerverbindung herzustellen, müssen Sie sich auf den Namen des Containers verlassen. Verwenden Sie --name, um den Namen des Quellcontainers als MySQL anzugeben.
docker run --name mysql -d gsoft/mysql:5.6
Als nächstes erstellen Sie einen Tomcat Container und Verbindung zu MySQL herstellen Der Container wird hochgefahren
und der Code lautet wie folgt:
docker run --name tomcat -d -p 80:8080 --link mysql:mysql gsoft/tomcat:7.0
Hier wird die Option --link verwendet, um anzugeben, dass der zu verbindende Container MySQL ist .
Informationen zur Containerkommunikation
Nach dem Herstellen einer Verbindung zwischen zwei Containern muss der empfangende Container (Empfänger) zwangsläufig auf die Ressourcen des Quellcontainers (Quelle) zugreifen. Wenn wir eine Verbindung für den Container herstellen, verwendet der Quellcontainer nicht -p/-P, um den Port anzugeben, der beim Erstellen verfügbar gemacht werden soll. Wie greife ich also auf die Informationen des Quellcontainers zu?
Um dem empfangenden Container den Zugriff auf die Informationen des Quellcontainers zu ermöglichen, bietet Docker zwei Methoden:
UmgebungVariablen
/etc/hosts-Datei
Umgebungsvariablen
Wenn Docker eine Verbindung zum Container herstellt, wird er verwendet --link Die bereitgestellten Parameter erstellen automatisch einige Umgebungsvariablen im Empfängercontainer, einschließlich der Umgebungsvariablen, die mit dem ENV-Befehl in der DockerDatei des Quellcontainers festgelegt wurden. Wenn der Quellcontainer startet (Docker-Ausführung), verwenden Sie --link e oder - -env, die durch den Parameter --env-file angegebene Umgebungsvariable.
enthält hauptsächlich die folgenden Umgebungsvariablen, hier wird alias=mysql angenommen.
<alias>_PORT <alias>_PORT_<port>_<protocol> <alias>_PORT_<port>_<protocol>_ADDR <alias>_PORT_<port>_<protocol>_PORT <alias>_PORT_<port>_<protocol>_PROTO <alias>_NAME
Zum Beispiel:
#docker run -i -t --rm --link mysql:mysql ubuntu:14.04 env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=9c74aa611463 TERM=xterm MYSQL_PORT=tcp://172.17.0.3:3306 MYSQL_PORT_3306_TCP=tcp://172.17.0.3:3306 MYSQL_PORT_3306_TCP_ADDR=172.17.0.3 MYSQL_PORT_3306_TCP_PORT=3306 MYSQL_PORT_3306_TCP_PROTO=tcp MYSQL_NAME=/desperate_ritchie/mysql HOME=/root
Im obigen Beispiel wird der Container-Alias als msyql angegeben, sodass alle Umgebungsvariablen mit MYSQL_ beginnen.
Beachten Sie, dass bei einem Neustart des Quellcontainers die Umgebungsvariableninformationen im Empfangscontainer nicht automatisch aktualisiert werden. Wenn Sie also die IP-Adresse des Quellcontainers verwenden möchten, wenden Sie sich bitte an uns Verwenden Sie /etc/ Host-Informationen, die in Hosts konfiguriert sind.
/etc/hosts-Datei
Zusätzlich zu den Umgebungsvariablen aktualisiert Docker auch die Hosts-Informationen in der /etc/hosts-Datei des empfangenden Containers.
# docker run -i -t --rm --link mysql:mysql ubuntu:14.04 /bin/bash # cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.3 mysql 115346bdb403 172.17.0.5 09bdf7805133
Wie oben zu sehen ist, werden der Hosts-Datei des Empfangscontainers zwei zusätzliche Informationen hinzugefügt: die lokale IP und der Alias sowie die IP und der Alias des Quellcontainers (MySQL). .
Im Gegensatz zu Umgebungsvariablen werden die Informationen in /etc/hosts im Empfangscontainer automatisch aktualisiert, wenn der Quellcontainer neu gestartet wird.
Das obige ist der detaillierte Inhalt vonSo stellen Sie eine Docker-Multi-Container-Verbindung mit Mysql+Tomcat her. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!