Docker Compose ist ein Tool zum Definieren und Ausführen von Multi-Container-Docker-Anwendungen in Linux. Mit Compose verwenden wir eine YAML-Datei, um die Dienste unserer Anwendung zu konfigurieren. Und dann erstellen und starten wir alle Dienste aus der Konfiguration mit einem einzigen Befehl. Hier ist eine einfache grafische Darstellung, die zeigt, wie Docker Compose funktioniert.
Funktionsweise von Docker Compose – Eine grafische Darstellung
Docker Compose ist im Grunde ein dreistufiger Prozess:
- Zuerst müssen wir die Anwendungsumgebung mit einem Dockerfile definieren damit es wiederverwendet werden kann.
- Zweitens definieren wir die Dienste, aus denen die App besteht, in docker-compose.yml damit sie zusammen in einer isolierten Umgebung ausgeführt werden können.
- Schließlich führen wir docker-compose up aus command und Compose starten und führen Ihre gesamte Anwendung aus.
Erste Schritte mit Docker Compose unter Linux
Docker Compose kann auf zwei Arten installiert werden. Sie finden die Installationsanweisungen im Abschnitt "Docker Compose installieren" in den folgenden Links.
- So installieren Sie Docker in Ubuntu
- So installieren Sie Docker in CentOS
Überprüfen Sie nach der Installation die Version von Docker Compose mit folgenden Befehlen:
# docker-compose -version
Oder,
# docker-compose -v
Oder,
# docker-compose --version
Docker-Compose-Version prüfen
Um Hilfe zu erhalten, führen Sie einfach Folgendes aus:
# docker-compose -help
Dieser Befehl listet die Befehle auf, die Docker Compose ausführen kann.
docker compose-Hilfe
Nehmen wir nun als Beispiel eine einfache Docker-Compose-Datei. Hier ist der Inhalt meiner Compose-Datei.
Docker-Beispiel-Compose-Datei
Die obige Docker-Compose-Datei ist eine absolute Mindestdatei, um den grundlegenden Inhalt in der Compose-Datei zu verstehen.
Wir können die Gültigkeit der Datei mit dem Befehl überprüfen:
# docker-compose config
Überprüfen Sie die Gültigkeit der Docker Compose-Datei
Wenn Sie in der Docker-Compose-Datei eine falsche Version angeben, erhalten Sie eine Fehlermeldung.
Docker-Compose-File-Fehlermeldung
Lassen Sie uns nun die Compose-Datei mit dem Befehl ausführen:
# docker-compose up -d
Es startet alle Dienste mit einem einzigen Befehl.
Docker Compose ausführen
Um die laufenden Container aufzulisten, die von der Compose-Datei erstellt wurden, führen Sie Folgendes aus:
# docker-compose ps
Laufende Docker-Container auflisten
Wir können die Anwendung jederzeit mit dem folgenden Befehl herunterfahren:
# docker-compose down
Stoppen Sie Docker-Container
Wir können nginx auch einen anderen Port zuweisen, zum Beispiel 8181.
Definieren Sie dazu einfach den Port in der Compose-Datei, wie in der folgenden Abbildung gezeigt.
Port nginx-Container definieren
Jetzt ist Nginx Port 8181 ausgesetzt. Lassen Sie uns den Container starten und prüfen, ob Nginx auf Port 8181 läuft.
Nginx-Container starten
Öffnen Sie den Browser und überprüfen Sie, ob er auf Port 8181 ausgeführt wird.
Testen Sie den nginx-Container im Webbrowser
Wenn Sie den Dienst skalieren möchten, können Sie dies mit dem Befehl:
tun# docker-compose up -d --scale database=3
Skalieren Sie Dienste mit docker compose
Um laufende Dienste anzuzeigen, führen Sie Folgendes aus:
# docker-compose top
Zeigen Sie laufende Dienste mit docker compose
anAufhören, anfangen. Starten Sie den gesamten Dienst auf einmal neu, die Befehle wären:
# docker-compose stop
# docker-compose start
# docker-compose restart
Wir können Protokolle der Dienste mit dem Befehl anzeigen:
# docker-compose logs
Protokolle der Dienste anzeigen
Vernetzung in docker-compose
Docker Compose richtet standardmäßig ein einziges Netzwerk für Ihre App ein. Jeder Container tritt dem Standardnetzwerk bei und Container können über dieses Standardnetzwerk kommunizieren.
Sie können jedoch mit Compose ein neues Netzwerk erstellen, wenn Sie das Standardnetzwerk nicht möchten.
Für diese Anleitung verwende ich die folgenden drei Dateien:
- Dockerfile
- docker-compose.yml
- server.py
Hier ist der Inhalt von Dockerfile:
Inhalt der Docker-Datei
Inhalt von docker-compose.yml:
Inhalt der Docker-Compose-Datei
Inhalt von server.py:
Inhalt der Anwendungsdatei
Erstellen Sie nun das Image mit dem Befehl:
# docker-compose build
Sobald der Build abgeschlossen ist, sehen Sie die folgende Ausgabe:
Docker-Image erstellen
Wie Sie sehen können, wurde das Image erfolgreich erstellt. Sie können es mit folgendem Befehl überprüfen:
# docker images
Docker-Bilder auflisten
Wie Sie in der obigen Ausgabe sehen, wird ein Docker-Image namens image1 erstellt.
Führen Sie nun die Compose-Datei aus:
# docker-compose up -d
Docker-Compose-Datei ausführen
Überprüfen Sie mit dem Befehl:
, ob das neue Netzwerk erstellt wurde oder nicht# docker network ls
Überprüfen Sie das Docker-Netzwerk
Aus dem obigen Screenshot können wir ein neues Netzwerk mit dem Namen dc_network_my-network bestätigen wurde erstellt.
Lassen Sie uns überprüfen, ob der Container läuft oder nicht, indem Sie den Befehl „docker ps“ verwenden:
# docker ps
docker ps-Befehlsausgabe
Ja, der Container läuft!
Führen Sie schließlich die Anwendungscodedatei (server.py) mit dem Curl-Befehl aus:
# curl localhost:15001
Oder,
# curl 10.26.35.244:15001
Anwendungsausgabe
Wir erhalten eine Ausgabe - Hello World from node 1! die in die server.py-Datei geschrieben wird. Das heißt, es funktioniert!
Empfohlene Lektüre:
- Erläuterung von Docker-Netzwerkkonzepten
- Erklärung von Docker-Volumes mit Beispielen
- So aktualisieren Sie laufende Docker-Container automatisch
- ctop – Ein Befehlszeilen-Überwachungstool für Linux-Container
- Portainer – Eine einfachste Art, Docker zu verwalten
- PiCluster – Eine einfache, webbasierte Docker-Verwaltungsanwendung
- Dockly – Docker-Container vom Terminal aus verwalten
Über den Autor:
Dhruv Tiwari ist ein DevOps-Ingenieur, der es liebt, Dinge zu automatisieren, mit Linux in großem Maßstab zu arbeiten und von dem Tag zu träumen, an dem Systeme intelligent genug sind, um sich nie mehr bei einer Linux-Box anmelden zu müssen. Reise von CI/CD vom Quellcode über die Codebereitstellung bis zur Produktion.