So installieren Sie Docker Compose unter Debian 9

Einführung

Docker ist ein hervorragendes Tool zur Automatisierung der Bereitstellung von Linux-Anwendungen in Software-Containern. Um jedoch das Potenzial dieser Anwendung voll auszuschöpfen, sollte jede Komponente einer Anwendung in einem eigenen Container ausgeführt werden. Bei komplexen Anwendungen mit vielen Komponenten kann es schnell unhandlich werden, alle Container für das gemeinsame Starten, Kommunizieren und Herunterfahren zu orchestrieren.

Die Docker-Community hat eine beliebte Lösung namens Fig entwickelt, mit der Sie eine einzige YAML-Datei verwenden können, um alle Docker-Container und -Konfigurationen zu orchestrieren. Dies wurde so populär, dass das Docker-Team beschloss, Docker Compose basierend auf der Fig-Quelle zu erstellen, die jetzt veraltet ist. Mit Docker Compose können Benutzer die Prozesse von Docker-Containern einfacher orchestrieren, einschließlich des Startens, Herunterfahrens und Einrichtens von Verknüpfungen und Volumes innerhalb von Containern.

In diesem Tutorial zeigen wir Ihnen, wie Sie die neueste Version von Docker Compose installieren, um Multi-Container-Anwendungen auf einem Debian 9-Server zu verwalten.

Voraussetzungen

Um diesem Artikel zu folgen, benötigen Sie:

Schritt 1 - Installieren von Docker Compose

Obwohl wir Docker Compose aus den offiziellen Debian-Repositorys installieren können, gibt es mehrere Nebenversionen hinter der neuesten Version, sodass wir es aus dem GitHub-Repository von Docker installieren werden. Der folgende Befehl unterscheidet sich geringfügig von dem auf der Seite Releases. Indem Sie das Flag "+ -o " verwenden, um die Ausgabedatei zuerst anzugeben, anstatt die Ausgabe umzuleiten, wird durch diese Syntax vermieden, dass bei Verwendung von " sudo +" ein Fehler mit verweigerter Berechtigung auftritt.

Wir überprüfen die current release und aktualisieren sie gegebenenfalls im folgenden Befehl:

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

Als Nächstes legen wir die Berechtigungen fest:

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

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

docker-compose --version

Dies wird die von uns installierte Version ausdrucken:

Outputdocker-compose version , build f46880fe

Nachdem wir Docker Compose installiert haben, können wir ein Beispiel für "Hello World" ausführen.

Schritt 2 - Ausführen eines Containers mit Docker Compose

Die öffentliche Docker-Registrierung, Docker Hub, enthält ein Hello World-Image zur Demonstration und zum Testen. Es zeigt die minimale Konfiguration, die erforderlich ist, um einen Container mit Docker Compose auszuführen: eine YAML-Datei, die ein einzelnes Image aufruft. Wir werden diese minimale Konfiguration erstellen, um unseren "+ Hallo-Welt +" - Container auszuführen.

Zunächst erstellen wir ein Verzeichnis für die YAML-Datei und verschieben es in das folgende Verzeichnis:

mkdir hello-world
cd hello-world

Dann erstellen wir die YAML-Datei:

nano docker-compose.yml

Fügen Sie den folgenden Inhalt in die Datei ein, speichern Sie die Datei und beenden Sie den Texteditor:

docker-compose.yml

my-test:
image: hello-world

Die erste Zeile in der YAML-Datei wird als Teil des Containernamens verwendet. Die zweite Zeile gibt an, welches Bild zum Erstellen des Containers verwendet werden soll. Wenn wir den Befehl "+ docker-compose up" ausführen, wird nach einem lokalen Bild mit dem von uns angegebenen Namen "+ hello-world" gesucht. Mit dieser Option speichern und schließen wir die Datei.

Wir können Bilder auf unserem System mit dem Befehl + docker images + manuell betrachten:

docker images

Wenn überhaupt keine lokalen Bilder vorhanden sind, werden nur die Spaltenüberschriften angezeigt:

OutputREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

Jetzt, während wir uns noch im Verzeichnis "+ ~ / hello-world +" befinden, führen wir den folgenden Befehl aus:

docker-compose up

Wenn bei der ersten Ausführung des Befehls kein lokales Image mit dem Namen "+ Hallo-Welt" vorhanden ist, wird es von Docker Compose aus dem öffentlichen Repository von Docker Hub abgerufen:

OutputPulling 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 Sie das Bild gezogen haben, erstellt "+ docker-compose +" einen Container, hängt ihn an und führt das Programm "https://github.com/docker-library/hello-world/blob/85fd7ab65e079b08019032479a3f306964a28f4d/hello-world/Dockerfile[hello" aus. was wiederum bestätigt, dass die Installation zu funktionieren scheint:

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 gibt es eine Erklärung darüber aus, was es getan hat:

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 werden nur ausgeführt, solange der Befehl aktiv ist. Nach Beendigung der Ausführung wurde der Container gestoppt. Wenn wir uns aktive Prozesse ansehen, werden die Spaltenüberschriften angezeigt, aber der Container "+ Hallo-Welt +" wird nicht aufgelistet, da er nicht ausgeführt wird:

docker ps
OutputCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES

Mit dem Flag "+ -a +" können wir die Containerinformationen anzeigen, die wir im nächsten Schritt benötigen. Dies zeigt alle Container, nicht nur aktive:

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

Hier werden die Informationen angezeigt, die zum Entfernen des Containers erforderlich sind, wenn wir damit fertig sind.

Schritt 3 - Entfernen des Bildes (optional)

Um unnötigen Speicherplatz zu vermeiden, entfernen wir das lokale Image. Dazu müssen Sie alle Container löschen, die auf das Bild verweisen. Verwenden Sie dazu den Befehl "+ docker rm ", gefolgt von " CONTAINER ID " oder " NAME ". Im Folgenden verwenden wir die " CONTAINER ID " aus dem gerade ausgeführten " docker ps -a +" -Befehl. Achten Sie darauf, die ID Ihres Containers zu ersetzen:

docker rm

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

docker rmi hello-world

Fazit

Wir haben Docker Compose jetzt installiert, unsere Installation anhand eines Hello World-Beispiels getestet und das Test-Image und den Container entfernt.

Während das Hello World-Beispiel unsere Installation bestätigte, zeigt die einfache Konfiguration keinen der Hauptvorteile von Docker Compose: Sie kann eine Gruppe von Docker-Containern gleichzeitig auf und ab bewegen. Um die Leistungsfähigkeit von Docker Compose in Aktion zu sehen, können Sie sich dieses praktische Beispiel ansehen: https://www.digitalocean.com/community/tutorials/how-to-configure-a-continuous-integration-testing-environment- with-docker-and-docker-compose-on-ubuntu-16-04 [Konfigurieren einer Umgebung für kontinuierliche Integrationstests mit Docker und Docker Compose unter Ubuntu 16.04].