Zwei Docker-Container verknüpfen
Nachdem wir nun eine containerisierte Anwendung haben, widmen wir uns der Verknüpfung von Containern. In diesem Schritt lernen wir, wie man zwei Docker-Container so verbindet, dass sie miteinander kommunizieren können. Dieser Prozess ist entscheidend für die Erstellung von Multi-Service-Anwendungen in Docker.
Aufgabe
Verknüpfen Sie einen Apache-Webserver-Container mit einem MySQL-Datenbank-Container.
Anforderungen
- Sie benötigen zwei Docker-Container: einen mit Apache und einen mit MySQL.
- Docker muss auf Ihrem System installiert sein.
Hinweis
- Denken Sie daran, ein neues Terminal zu öffnen, um diesen Schritt zu starten, damit es nicht zu Konflikten mit Ihrem vorherigen Container kommt.
Beispielergebnis
Zugriff auf MySQL vom Apache-Container aus:
-
Starten Sie einen Apache-Container namens my_apache basierend auf dem httpd Image und mappen Sie den Host-Port 80 auf den Container-Port 80.
labex:project/ $ docker ps | grep my_apache
a91a93216e84 httpd "httpd-foreground" 52 seconds ago Up 47 seconds 0.0.0.0:80- my_apache > 80/tcp
-
Starten Sie einen MySQL-Container namens my_mysql und setzen Sie die Umgebungsvariable MYSQL_ROOT_PASSWORD auf password, unter Verwendung des mysql Images.
labex:project/ $ docker ps | grep mysql
0cb864cf97c6 mysql "docker-entrypoint.s…" 42 seconds ago Up 35 seconds 3306/tcp, 33060/tcp my_mysql
-
Verknüpfen Sie den Apache-Container mit dem MySQL-Container.
Hinweis: Für diesen Schritt wird keine direkte Befehlsausgabe erwartet, aber die Verknüpfung wird in den Umgebungsvariablen des Containers sichtbar sein. Sie können den Container mit dem Befehl docker inspect my_apache untersuchen.
labex:project/ $ docker ps | grep my_app
859c201b7267 my-app "python app.py" 53 seconds ago Up 52 seconds 80/tcp my_app
-
Verwenden Sie den Befehl docker exec, um vom my_app Container aus auf das MySQL-Kommandozeilen-Interface zuzugreifen (passen Sie den Befehl an, falls Sie die Verknüpfung anders benannt haben).
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.3.0 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>