Heim  >  Artikel  >  Datenbank  >  So stellen Sie eine Docker-Multi-Container-Verbindung mit Mysql+Tomcat her

So stellen Sie eine Docker-Multi-Container-Verbindung mit Mysql+Tomcat her

黄舟
黄舟Original
2017-03-24 13:11:331345Durchsuche

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 b55b5a51e06b65c594b87dda7b4aa1dc:alias

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:

  1. UmgebungVariablen

  2. /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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn