GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So installieren und verwenden Sie Docker Compose unter Ubuntu 22.04

Einführung

Docker vereinfacht die Verwaltung von Anwendungsprozessen in Containern. Obwohl Container in gewisser Weise virtuellen Maschinen ähneln, sind sie leichter und ressourcenschonender. Dadurch können Entwickler eine Anwendungsumgebung in mehrere isolierte Dienste aufteilen.

Bei Anwendungen, die von mehreren Diensten abhängen, kann es schnell unhandlich werden, alle Container für den gemeinsamen Start, die Kommunikation und das Herunterfahren zu orchestrieren. Docker Compose ist ein Tool, mit dem Sie Anwendungsumgebungen mit mehreren Containern basierend auf Definitionen ausführen können, die in einer YAML-Datei festgelegt sind. Es verwendet Dienstdefinitionen, um vollständig anpassbare Umgebungen mit mehreren Containern zu erstellen, die Netzwerke und Datenvolumen gemeinsam nutzen können.

In dieser Anleitung zeigen Sie, wie Sie Docker Compose auf einem Ubuntu 22.04-Server installieren und wie Sie mit der Verwendung dieses Tools beginnen.

Voraussetzungen

Um diesem Artikel zu folgen, benötigen Sie:

  • Zugriff auf einen lokalen Ubuntu 22.04-Computer oder Entwicklungsserver als Nicht-Root-Benutzer mit sudo-Berechtigungen. Wenn Sie einen Remote-Server verwenden, ist es ratsam, eine aktive Firewall installiert zu haben. Um diese einzurichten, lesen Sie bitte unseren Leitfaden zur Ersteinrichtung des Servers für Ubuntu 22.04.
  • Docker wird auf Ihrem Server oder lokalen Computer installiert, indem Sie die Schritte 1 und 2 befolgen von How To Install and Use Docker on Ubuntu 22.04.

Hinweis: Beginnend mit Docker Compose v2 ist Docker zur Verwendung von compose migriert CLI-Plugin-Befehl und weg vom ursprünglichen docker-compose wie in unserer vorherigen Ubuntu 20.04-Version dieses Tutorials dokumentiert. Während sich die Installation unterscheidet, beinhaltet die eigentliche Verwendung im Allgemeinen das Weglassen des Bindestrichs von docker-compose Aufrufe, um docker compose zu werden . Vollständige Kompatibilitätsdetails finden Sie in der offiziellen Docker-Dokumentation zur Befehlskompatibilität zwischen dem neuen compose und das alte docker-compose .

Schritt 1 – Installieren von Docker Compose

Um sicherzustellen, dass Sie die aktuellste stabile Version von Docker Compose erhalten, laden Sie diese Software aus dem offiziellen Github-Repository herunter.

Bestätigen Sie zunächst die neueste Version, die auf der Seite mit den Veröffentlichungen verfügbar ist. Zum Zeitpunkt des Schreibens dieses Artikels ist die aktuellste stabile Version 2.3.3 .

Verwenden Sie zum Herunterladen den folgenden Befehl:

  1. mkdir -p ~/.docker/cli-plugins/
  2. curl -SL https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

Legen Sie als Nächstes die richtigen Berechtigungen fest, damit der docker compose Befehl ist ausführbar:

  1. chmod +x ~/.docker/cli-plugins/docker-compose

Um zu überprüfen, ob die Installation erfolgreich war, können Sie Folgendes ausführen:

  1. docker compose version

Sie sehen eine Ausgabe ähnlich der folgenden:

OutputDocker Compose version v2.3.3

Docker Compose ist jetzt erfolgreich auf Ihrem System installiert. Im nächsten Abschnitt erfahren Sie, wie Sie eine docker-compose.yml einrichten Datei und bringen Sie mit diesem Tool eine containerisierte Umgebung zum Laufen.

Schritt 2 – Einrichten einer docker-compose.yml Datei

Um zu demonstrieren, wie man eine docker-compose.yml einrichtet -Datei erstellen und mit Docker Compose arbeiten, erstellen Sie eine Webserverumgebung mit dem offiziellen Nginx-Image von Docker Hub, der öffentlichen Docker-Registrierung. Diese containerisierte Umgebung dient einer einzelnen statischen HTML-Datei.

Beginnen Sie, indem Sie ein neues Verzeichnis in Ihrem Home-Ordner erstellen und dann dorthin wechseln:

  1. mkdir ~/compose-demo
  2. cd ~/compose-demo

Richten Sie in diesem Verzeichnis einen Anwendungsordner ein, der als Dokumentenstamm für Ihre Nginx-Umgebung dient:

  1. mkdir app

Erstellen Sie mit Ihrem bevorzugten Texteditor eine neue index.html Datei innerhalb der app Ordner:

  1. nano app/index.html

Fügen Sie den folgenden Inhalt in diese Datei ein:

~/compose-demo/app/index.html
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Docker Compose Demo</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
</head>
<body>

    <h1>This is a Docker Compose Demo Page.</h1>
    <p>This content is being served by an Nginx container.</p>

</body>
</html>

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Wenn Sie nano verwenden , können Sie dies tun, indem Sie CTRL+X eingeben , dann Y und ENTER zu bestätigen.

Als nächstes erstellen Sie die docker-compose.yml Datei:

  1. nano docker-compose.yml

Fügen Sie den folgenden Inhalt in Ihre docker-compose.yml ein Datei:

docker-compose.yml
version: '3.7'
services:
  web:
    image: nginx:alpine
    ports:
      - "8000:80"
    volumes:
      - ./app:/usr/share/nginx/html

Die docker-compose.yml Datei beginnt normalerweise mit version Definition. Dadurch wird Docker Compose mitgeteilt, welche Konfigurationsversion Sie verwenden.

Sie haben dann die services -Block, in dem Sie die Dienste einrichten, die Teil dieser Umgebung sind. In Ihrem Fall haben Sie einen einzigen Dienst namens web . Dieser Dienst verwendet den nginx:alpine image und richtet eine Portumleitung mit den ports ein Richtlinie. Alle Anfragen auf Port 8000 des Hosts machine (das System, auf dem Sie Docker Compose ausführen) wird zum web umgeleitet Container auf Port 80 , wo Nginx ausgeführt wird.

Die volumes -Direktive erstellt ein gemeinsam genutztes Volume zwischen dem Hostcomputer und dem Container. Dadurch wird die lokale app geteilt Ordner mit dem Container, und das Volume befindet sich unter /usr/share/nginx/html innerhalb des Containers, der dann den Standarddokumentstamm für Nginx überschreibt.

Speichern und schließen Sie die Datei.

Sie haben eine Demoseite und eine docker-compose.yml eingerichtet -Datei, um eine containerisierte Webserverumgebung zu erstellen, die ihr dient. Im nächsten Schritt richten Sie diese Umgebung mit Docker Compose ein.

Schritt 3 – Docker Compose ausführen

Mit der docker-compose.yml Datei vorhanden ist, können Sie jetzt Docker Compose ausführen, um Ihre Umgebung aufzurufen. Der folgende Befehl lädt die erforderlichen Docker-Images herunter und erstellt einen Container für web service und führen Sie die containerisierte Umgebung im Hintergrundmodus aus:

  1. docker compose up -d

Docker Compose sucht zuerst nach dem definierten Image auf Ihrem lokalen System, und wenn es das Image nicht finden kann, lädt es das Image von Docker Hub herunter. Sie sehen eine Ausgabe wie diese:

OutputCreating network "compose-demo_default" with the default driver
Pulling web (nginx:alpine)...
alpine: Pulling from library/nginx
cbdbe7a5bc2a: Pull complete
10c113fb0c77: Pull complete
9ba64393807b: Pull complete
c829a9c40ab2: Pull complete
61d685417b2f: Pull complete
Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502
Status: Downloaded newer image for nginx:alpine
Creating compose-demo_web_1 ... done

Hinweis: Wenn Sie bezüglich des Docker-Sockets auf einen Berechtigungsfehler stoßen, bedeutet dies, dass Sie Schritt 2 von How To Install and Use Docker on Ubuntu 22.04 übersprungen haben. Wenn Sie zurückgehen und diesen Schritt abschließen, werden Berechtigungen zum Ausführen von Docker-Befehlen ohne sudo aktiviert .

Ihre Umgebung läuft jetzt im Hintergrund. Um zu überprüfen, ob der Container aktiv ist, können Sie Folgendes ausführen:

  1. docker compose ps

Dieser Befehl zeigt Ihnen Informationen über die laufenden Container und ihren Status sowie alle derzeit vorhandenen Portumleitungen:

Output       Name                     Command               State          Ports        
----------------------------------------------------------------------------------
compose-demo_web_1   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:8000->80/tcp

Sie können jetzt auf die Demo-Anwendung zugreifen, indem Sie Ihren Browser entweder auf localhost:8000 verweisen wenn Sie diese Demo auf Ihrem lokalen Computer ausführen, oder your_server_domain_or_IP:8000 wenn Sie diese Demo auf einem Remote-Server ausführen.

Sie sehen eine Seite wie diese:

Das freigegebene Volume, das Sie innerhalb der docker-compose.yml eingerichtet haben Datei hält Ihre app Ordnerdateien mit dem Dokumentenstammverzeichnis des Containers synchronisieren. Wenn Sie Änderungen an index.html vornehmen Datei, werden sie automatisch vom Container abgeholt und somit in Ihrem Browser angezeigt, wenn Sie die Seite neu laden.

Im nächsten Schritt erfahren Sie, wie Sie Ihre containerisierte Umgebung mit Docker Compose-Befehlen verwalten.

Schritt 4 – Machen Sie sich mit Docker Compose-Befehlen vertraut

Sie haben gesehen, wie Sie eine docker-compose.yml einrichten Datei und bringen Sie Ihre Umgebung mit docker compose up hoch . Sie werden nun sehen, wie Sie Docker Compose-Befehle verwenden, um Ihre containerisierte Umgebung zu verwalten und mit ihr zu interagieren.

Um die von Ihrem Nginx-Container erstellten Protokolle zu überprüfen, können Sie die logs verwenden Befehl:

  1. docker compose logs

Sie sehen eine Ausgabe ähnlich der folgenden:

OutputAttaching to compose-demo_web_1
web_1  | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
web_1  | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
web_1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
web_1  | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
web_1  | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
web_1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
web_1  | /docker-entrypoint.sh: Configuration complete; ready for start up
web_1  | 172.22.0.1 - - [02/Jun/2020:10:47:13 +0000] "GET / HTTP/1.1" 200 353 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"

Wenn Sie die Ausführung der Umgebung anhalten möchten, ohne den aktuellen Status Ihrer Container zu ändern, können Sie Folgendes verwenden:

  1. docker compose pause
OutputPausing compose-demo_web_1 ... done

So setzen Sie die Ausführung nach einer Pause fort:

  1. docker compose unpause
OutputUnpausing compose-demo_web_1 ... done

Die stop Der Befehl beendet die Ausführung des Containers, zerstört jedoch keine mit Ihren Containern verknüpften Daten:

  1. docker compose stop
OutputStopping compose-demo_web_1 ... done

Wenn Sie die mit dieser containerisierten Umgebung verbundenen Container, Netzwerke und Volumes entfernen möchten, verwenden Sie die down Befehl:

  1. docker compose down
OutputRemoving compose-demo_web_1 ... done
Removing network compose-demo_default

Beachten Sie, dass dadurch das von Docker Compose verwendete Basis-Image nicht entfernt wird, um Ihre Umgebung hochzufahren (in Ihrem Fall nginx:alpine). ). Auf diese Weise, wenn Sie Ihre Umgebung mit einem docker compose up wieder hochfahren , wird der Prozess viel schneller sein, da sich das Image bereits auf Ihrem System befindet.

Falls Sie auch das Basis-Image von Ihrem System entfernen möchten, können Sie Folgendes verwenden:

  1. docker image rm nginx:alpine
OutputUntagged: nginx:alpine
Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912
Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270
Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1
Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157
Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6
Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08
Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a

Hinweis :Eine ausführlichere Referenz zu Docker-Befehlen finden Sie in unserem Leitfaden zur Installation und Verwendung von Docker.

Schlussfolgerung

In diesem Handbuch haben Sie gesehen, wie Sie Docker Compose installieren und eine containerisierte Umgebung basierend auf einem Nginx-Webserver-Image einrichten. Sie haben auch gesehen, wie Sie diese Umgebung mit Compose-Befehlen verwalten.

Für eine vollständige Referenz aller verfügbaren docker compose Befehle finden Sie in der offiziellen Dokumentation.


Docker
  1. So installieren Sie Docker Compose unter Ubuntu 18.04

  2. So installieren und verwenden Sie Docker unter Ubuntu 20.04

  3. So installieren und verwenden Sie Docker in Ubuntu 20.04

  4. So installieren und verwenden Sie Docker Compose unter CentOS

  5. So installieren Sie Docker Compose unter Ubuntu 18.04

So installieren und verwenden Sie Docker Compose unter Ubuntu 20.04

So installieren und verwenden Sie Docker unter Ubuntu 22.04

So installieren und verwenden Sie Docker unter Ubuntu (in der realen Welt)

So installieren Sie Docker Compose auf Ubuntu

So installieren und verwenden Sie Docker unter Ubuntu 20.04

So installieren und verwenden Sie Docker Compose unter Debian 11