Tutorial

So installieren Sie Docker Compose unter Debian 10

Published on April 24, 2020
Deutsch
So installieren Sie Docker Compose unter Debian 10

Einführung

Docker ist ein hervorragendes Tool zur Automatisierung der Bereitstellung von Linux-Anwendungen in Software-Containern. Um jedoch das volle Potenzial dieser Anwendung auszuschöpfen, sollte jede Komponente einer Anwendung in ihrem ihren eigenen Container ausgeführt werden. Bei komplexen Anwendungen mit vielen Komponenten kann es sich sehr schnell als schwierig erweisen, den gemeinsamen Start, die Kommunikation und das gemeinsame Abschalten aller Container zu koordinieren.

Die Docker-Community hat eine beliebte Lösung namens Fig gefunden, mit der Sie eine einzige YAML-Datei verwenden können, um alle Docker-Container und -Konfigurationen zu koordinieren. Sie ist so populär geworden, dass das Docker-Team beschlossen hat, Docker Compose basierend auf der Fig-Quelle zu erstellen, die inzwischen veraltet ist. Docker Compose ermöglicht die Koordination der Prozesse von Docker-Containern, einschließlich des Startens, Herunterfahrens und Einrichtens von Verknüpfungen zwischen Containern und Volumes.

In diesem Tutorial installieren Sie die neueste Version von Docker Compose, die Sie bei der Verwaltung von Multi-Container-Anwendungen auf einem Debian 10 Server unterstützt.

Voraussetzungen

Um diese Anleitung mitzuverfolgen, benötigen Sie:

Anmerkung: Obwohl die Voraussetzungen Anleitungen zur Installation von Docker unter Debian 10 enthalten, sollten die Docker-Befehle in diesem Artikel mit anderen Betriebssystemen funktionieren, solange Docker installiert ist.

Schritt 1 – Installieren von Docker Compose

Sie können Docker Compose zwar aus den offiziellen Debian-Repositorys installieren, es handelt sich jedoch nicht die aktuellste Version, daher werden Sie es in diesem Tutorial vom Docker GitHub-Repository installieren. Der nachfolgende Befehl unterscheidet sich geringfügig von dem, den Sie auf der Seite Releases finden. Indem Sie das Flag -o verwenden, um die Ausgabedatei zuerst anzugeben, anstatt die Ausgabe umzuleiten, verhindert diese Syntax, dass der Fehler „Permission denied“ auftritt, wenn Sie sudo verwenden.

Überprüfen Sie die aktuelle Version und aktualisieren Sie sie in dem nachfolgenden Befehl:

  1. sudo curl -L https://github.com/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

Als Nächstes legen wir die Berechtigungen fest:

  1. sudo chmod +x /usr/local/bin/docker-compose

Dann verifizieren wir, ob die Installation erfolgreich war, indem wir die Version überprüfen:

  1. docker-compose --version

Damit wird die von uns installierte Version ausgedruckt:

Output
docker-compose version 1.25.3, build d4d1b42b

Jetzt haben wir Docker Compose installiert und können ein „Hello World“-Beispiel ausführen.

Schritt 2 – Ausführen eines Containers mit Docker Compose

Die öffentliche Docker-Registrierung, Docker Hub, enthält ein Hello World-Image zu Demonstrations- und Testzwecken. Sie zeigt, dass nur eine minimale Konfiguration notwendig ist, um einen Container mit Docker Compose ausführen: eine YAML-Datei, die ein einzelnes Image aufruft. Wir erstellen diese minimale Konfiguration, um unseren hello-world-Container auszuführen.

Erstellen Sie zunächst ein Verzeichnis für die YAML-Datei und wechseln Sie zu ihm:

  1. mkdir hello-world
  2. cd hello-world

Erstellen Sie dann die YAML-Datei:

  1. nano docker-compose.yml

Legen Sie den folgenden Inhalt in der Datei ab, speichern Sie die Datei und beenden Sie das Textbearbeitungsprogramm:

docker-compose.yml
my-test:
 image: hello-world

Die erste Zeile in der YAML-Datei wird als Teil des Container-Namens verwendet. Die zweite Zeile gibt an, welches Image zum Erstellen des Containers verwendet wird. Wenn wir den Befehl docker-compose up ausführen, sucht er nach einem lokalen Image mit dem Namen, den wir angegeben haben, nämlich hello-world. Dann speichern wir die Datei und schließen sie.

Mit dem Befehl docker images können Sie Images manuell auf dem System ansehen:

  1. docker images

Wenn es keine lokalen Images gibt, werden nur die Spalten-Überschriften angezeigt:

Output
REPOSITORY TAG IMAGE ID CREATED SIZE

Solange Sie noch im Verzeichnis ~/hello-world sind, sollten Sie den folgenden Befehl ausführen:

  1. docker-compose up

Wenn Sie den Befehl zum ersten Mal ausführen und es kein lokales Image namens hello-world gibt, holt sich Docker Compose dieses Image aus dem öffentlichen Repository von Docker Hub:

Output
Pulling my-test (hello-world:)... latest: Pulling from library/hello-world 9db2ca6ccae0: Pull complete Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc Status: Downloaded newer image for hello-world:latest . . .

Nachdem das Image abgerufen wurde, erstellt docker-compose einen Container, fügt das Programm hello an und führt es aus, was wiederum bestätigt, dass die Installation anscheinend funktioniert:

Output
. . . Creating helloworld_my-test_1... Attaching to helloworld_my-test_1 my-test_1 | my-test_1 | Hello from Docker. my-test_1 | This message shows that your installation appears to be working correctly. my-test_1 | . . .

Dann wird eine Erklärung der Vorgehensweise gedruckt:

Output
To generate this message, Docker took the following steps: my-test_1 | 1. The Docker client contacted the Docker daemon. my-test_1 | 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. my-test_1 | (amd64) my-test_1 | 3. The Docker daemon created a new container from that image which runs the my-test_1 | executable that produces the output you are currently reading. my-test_1 | 4. The Docker daemon streamed that output to the Docker client, which sent it my-test_1 | to your terminal.

Docker-Container laufen nur solange, wie der Befehl aktiv ist. Sobald also sobald hello nicht mehr ausgeführt wird, wird der Container angehalten. Wenn wir uns also aktive Prozesse ansehen, werden die Spalten-Überschriften angezeigt, aber der hello-world-Container wird nicht aufgelistet, weil er nicht ausgeführt wird:

  1. docker ps
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Sie können die Container-Informationen sehen, die Sie im nächsten Schritt benötigen werden, indem Sie das Flag -a verwenden. Damit werden alle Container angezeigt, nicht nur die aktiven:

  1. docker ps -a
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06069fd5ca23 hello-world "/hello" 35 minutes ago Exited (0) 35 minutes ago hello-world_my-test_1

Damit werden die Informationen angezeigt, die Sie benötigen, um den Container zu entfernen, wenn Sie damit fertig sind.

Schritt 3 – Entfernen eines Images (optional)

Um die Verwendung von unnötigem Speicherplatz zu vermeiden, werden wir das lokale Image entfernen. Dazu müssen wir mit dem Befehl docker rm, gefolgt von der CONTAINER ID oder dem NAME, alle Container löschen, die auf das Image verweisen. Im folgenden Beispiel verwenden wir die CONTAINER ID vom Befehl docker ps -a, den wir gerade ausgeführt haben. Vergewissern Sie sich, dass Sie die ID Ihres Containers ersetzen:

  1. docker rm 06069fd5ca23

Sobald alle Container, die auf das Image verweisen, entfernt wurden, können wir das Image entfernen:

  1. docker rmi hello-world

Zusammenfassung

Sie haben Docker Compose unter Debian 10 installiert, Ihre Installation getestet, indem Sie ein Hello World-Beispiel ausgeführt und das Testimage und den Container entfernt haben.

Während das Hallo World-Beispiel Ihre Installation bestätigt hat, zeigt diese grundlegende Konfiguration nicht einen der Hauptvorteile von Docker Compose – nämlich, dass damit eine Gruppe von Docker-Containern alle gleichzeitig hoch- und heruntergefahren werden können. Nähere Details zur Verwendung von Docker Compose finden Sie unter So installieren Sie WordPress mit Docker Compose.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Featured on Community

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more