Verwendung des docker-compose start Befehls zum Starten von Services

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie den Befehl docker-compose start verwenden, um Ihre Multi-Container Docker-Anwendungen zu verwalten. Wir beginnen mit der Erstellung einer einfachen docker-compose.yml-Datei, um unsere Services zu definieren.

Nach der Erstellung der Compose-Datei werden Sie üben, alle darin definierten Services mit einem einzigen Befehl zu starten. Abschließend lernen Sie, wie Sie gezielt einen bestimmten Service aus Ihrer Compose-Konfiguration starten können. Diese praktische Übung vermittelt Ihnen die grundlegenden Fähigkeiten, um Ihre Docker Compose-Projekte effektiv zu verwalten.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555092{{"Verwendung des docker-compose start Befehls zum Starten von Services"}} docker/ps -.-> lab-555092{{"Verwendung des docker-compose start Befehls zum Starten von Services"}} docker/start -.-> lab-555092{{"Verwendung des docker-compose start Befehls zum Starten von Services"}} docker/stop -.-> lab-555092{{"Verwendung des docker-compose start Befehls zum Starten von Services"}} docker/create -.-> lab-555092{{"Verwendung des docker-compose start Befehls zum Starten von Services"}} docker/pull -.-> lab-555092{{"Verwendung des docker-compose start Befehls zum Starten von Services"}} end

Eine einfache docker-compose.yml-Datei erstellen

In diesem Schritt erstellen wir eine einfache docker-compose.yml-Datei. Docker Compose ist ein Tool zum Definieren und Ausführen von Multi-Container Docker-Anwendungen. Mit Compose verwenden Sie eine YAML-Datei, um die Services Ihrer Anwendung zu konfigurieren. Anschließend können Sie mit einem einzigen Befehl alle Services aus Ihrer Konfiguration erstellen und starten.

Bevor wir die docker-compose.yml-Datei erstellen, müssen wir Docker Compose installieren. Da es in der LabEx-Umgebung nicht vorinstalliert ist, werden wir es mit pip installieren.

Aktualisieren wir zunächst die Paketliste und installieren pip, falls es noch nicht vorhanden ist.

sudo apt update
sudo apt install -y python3-pip

Jetzt können wir Docker Compose mit pip installieren.

pip install docker-compose

Nach Abschluss der Installation können Sie diese überprüfen, indem Sie die Version von Docker Compose abfragen.

docker-compose --version

Sie sollten eine Ausgabe ähnlich zu docker-compose version 1.29.2, build 5becea4c sehen.

Nachdem Docker Compose nun installiert ist, erstellen wir ein Verzeichnis für unser Projekt und wechseln hinein. In diesem Verzeichnis werden wir die docker-compose.yml-Datei anlegen.

mkdir ~/project/my-compose-app
cd ~/project/my-compose-app

Als Nächstes erstellen wir die docker-compose.yml-Datei mit dem nano-Editor.

nano docker-compose.yml

Fügen Sie im nano-Editor folgenden Inhalt ein. Diese docker-compose.yml-Datei definiert einen einzelnen Service namens web, der das nginx-Image verwendet und Port 80 des Containers auf Port 8080 des Host-Systems abbildet.

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"

Lassen Sie uns diese Datei aufschlüsseln:

  • version: '3.8' gibt die Version des Compose-Dateiformats an.
  • services: definiert die verschiedenen Services, aus denen Ihre Anwendung besteht.
  • web: ist der Name unseres Services. Sie können hier jeden beliebigen Namen wählen.
  • image: nginx:latest spezifiziert das Docker-Image für diesen Service. Hier verwenden wir die neueste Version des offiziellen Nginx-Images. Dieses Image wird später beim Start des Services heruntergeladen.
  • ports: bildet Ports zwischen Host und Container ab.
  • - "8080:80" bildet Port 80 innerhalb des Containers (wo Nginx standardmäßig läuft) auf Port 8080 Ihres Host-Systems ab. Das bedeutet, Sie können den Nginx-Webserver über http://localhost:8080 in Ihrem Webbrowser aufrufen (oder mit curl im Terminal).

Speichern Sie die Datei mit Strg + X, dann Y und anschließend Enter.

Sie können den Inhalt der Datei mit dem cat-Befehl überprüfen.

cat docker-compose.yml

Sie sollten den gerade eingefügten YAML-Inhalt sehen.

Alle im Compose-File definierten Services starten

In diesem Schritt werden wir alle in unserer docker-compose.yml-Datei definierten Services starten. Hierfür verwenden wir den Befehl docker-compose up.

Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis befinden, in dem Sie die docker-compose.yml-Datei erstellt haben.

cd ~/project/my-compose-app

Führen Sie nun den Befehl docker-compose up aus. Das Flag -d startet die Container im Detached-Modus, was bedeutet, dass sie im Hintergrund laufen und Ihr Terminal nicht blockieren.

docker-compose up -d

Wenn Sie diesen Befehl zum ersten Mal ausführen, wird Docker Compose:

  1. Nach der docker-compose.yml-Datei im aktuellen Verzeichnis suchen
  2. Die Service-Definitionen lesen
  3. Für jeden Service prüfen, ob das angegebene Image lokal vorhanden ist. Falls nicht, wird das Image von Docker Hub heruntergeladen. In unserem Fall wird das nginx:latest-Image gepullt
  4. Container für jeden Service erstellen und starten

Sie sehen eine Ausgabe, die anzeigt, dass das Image heruntergeladen wird und der Container erstellt und gestartet wird.

Pulling web (nginx:latest)...
latest: Pulling from library/nginx
... (Ausgabe der heruntergeladenen Image-Layer)
Status: Downloaded newer image for nginx:latest
Creating my-compose-app_web_1 ... done

Nach Abschluss des Befehls können Sie mit docker ps überprüfen, ob der Container läuft.

docker ps

Sie sollten einen Eintrag für den web-Container sehen, mit dem Image nginx:latest und dem Status Up. Der Containername wird etwa my-compose-app_web_1 lauten.

Um zusätzlich zu verifizieren, dass der Nginx-Server läuft und erreichbar ist, können Sie den curl-Befehl verwenden, um auf Port 8080 des Host-Systems zuzugreifen.

curl http://localhost:8080

Sie sollten die HTML-Ausgabe der Standard-Nginx-Willkommensseite in Ihrem Terminal sehen. Dies bestätigt, dass der Container läuft und das Port-Mapping korrekt funktioniert.

Einen bestimmten Service aus dem Compose-File starten

Im vorherigen Schritt haben wir alle in unserer docker-compose.yml-Datei definierten Services mit docker-compose up gestartet. In diesem Schritt lernen wir, wie man einen bestimmten Service startet, wenn mehrere Services in der Compose-Datei definiert sind.

Obwohl unsere aktuelle docker-compose.yml nur einen Service (web) enthält, ist der Befehl zum Starten eines bestimmten Services nützlich, wenn Sie eine komplexere Anwendung mit mehreren Services haben (wie einen Webserver, eine Datenbank und eine Backend-API).

Zuerst stoppen wir den aktuell laufenden Service. Dazu verwenden wir den Befehl docker-compose down. Dieser Befehl stoppt und entfernt Container, Netzwerke und Volumes, die durch up erstellt wurden.

Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project/my-compose-app befinden.

cd ~/project/my-compose-app

Führen Sie nun den Befehl docker-compose down aus.

docker-compose down

Sie sehen eine Ausgabe, die anzeigt, dass der Container und das Netzwerk gestoppt und entfernt werden.

Stopping my-compose-app_web_1 ... done
Removing my-compose-app_web_1 ... done
Removing network my-compose-app_default

Sie können überprüfen, ob der Container gestoppt wurde, indem Sie docker ps ausführen. Es sollten keine laufenden Container aus unserer Compose-Datei vorhanden sein.

docker ps

Jetzt demonstrieren wir, wie man einen bestimmten Service startet. Der Befehl lautet docker-compose up <service_name>. In unserem Fall ist der Service-Name web. Wir verwenden wieder das -d-Flag, um ihn im Detached-Modus auszuführen.

docker-compose up -d web

Dieser Befehl startet nur den web-Service, wie in der docker-compose.yml-Datei definiert. Da das Image bereits im vorherigen Schritt heruntergeladen wurde, wird der Container direkt erstellt und gestartet.

Sie sehen eine ähnliche Ausgabe wie diese:

Creating my-compose-app_web_1 ... done

Erneut können Sie mit docker ps überprüfen, ob der web-Container läuft.

docker ps

Sie sollten den Container my-compose-app_web_1 mit dem Status Up sehen.

Dies zeigt, wie Sie selektiv Services aus Ihrer docker-compose.yml-Datei starten können, was bei der Verwaltung komplexerer Multi-Service-Anwendungen hilfreich ist.

Zusammenfassung

In diesem Lab haben wir gelernt, wie der Befehl docker-compose start verwendet wird. Wir begannen mit der Erstellung einer einfachen docker-compose.yml-Datei. Dies umfasste:

  1. Die Installation von Docker Compose mittels pip
  2. Die Überprüfung der Installation
  3. Das Anlegen eines Projektverzeichnisses
  4. Die Erstellung der docker-compose.yml-Datei selbst

Die erstellte Datei definierte einen einzelnen Service namens web, der das nginx-Image verwendet und Ports mappt.

Die folgenden Schritte (die im bereitgestellten Inhalt nicht vollständig detailliert waren) würden die Verwendung des docker-compose start-Befehls beinhalten, um entweder alle in der Compose-Datei definierten Services oder einen bestimmten Service zu starten. Dies demonstriert die Kernfunktionalität des docker-compose start-Befehls für das Lebenszyklusmanagement von Multi-Container-Anwendungen, die in einer Compose-Datei definiert sind.