Auflisten aller Dienste in einem Stack
In diesem Schritt lernen Sie, wie Sie alle Dienste auflisten können, die innerhalb eines Docker-Stacks laufen. Bevor wir Dienste auflisten können, müssen wir einen laufenden Stack haben. Da Docker Compose nicht vorinstalliert ist, werden wir es zuerst installieren und dann einen einfachen Stack bereitstellen.
Zuerst installieren wir Docker Compose. Wir laden die Binärdatei herunter und machen sie ausführbar.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Jetzt, da Docker Compose installiert ist, erstellen wir eine einfache docker-compose.yml
-Datei, um unseren Stack zu definieren. Wir erstellen eine Datei namens docker-compose.yml
im Verzeichnis ~/project
.
nano ~/project/docker-compose.yml
Fügen Sie den folgenden Inhalt zur Datei hinzu:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
app:
image: alpine:latest
command: sleep 3600
Diese Datei definiert einen Stack mit zwei Diensten: web
mit dem nginx
-Image und app
mit dem alpine
-Image. Der web
-Dienst bildet Port 80 auf dem Host auf Port 80 im Container ab. Der app
-Dienst führt einfach den Befehl sleep 3600
aus, um den Container am Laufen zu halten.
Speichern Sie die Datei und verlassen Sie den Editor (Ctrl+X, Y, Enter in nano).
Jetzt stellen wir den Stack mit docker stack deploy
bereit. Wir nennen unseren Stack mystack
.
docker stack deploy -c ~/project/docker-compose.yml mystack
Dieser Befehl liest die docker-compose.yml
-Datei und erstellt die darin definierten Dienste als Docker-Stack namens mystack
. Sie sollten eine Ausgabe sehen, die anzeigt, dass die Dienste erstellt werden.
Sobald der Stack bereitgestellt ist, können Sie alle Dienste im Stack mit dem Befehl docker stack services
gefolgt vom Stacknamen auflisten.
docker stack services mystack
Dieser Befehl zeigt eine Tabelle an, die Informationen über die Dienste im mystack
-Stack enthält, einschließlich ihrer ID, ihres Namens, des Modus, der Replikate, des Images und der Ports.
Sie sollten eine Ausgabe ähnlich dieser sehen:
ID NAME MODE REPLICAS IMAGE PORTS
xxxxxxxxxxxx mystack_app replicated 1/1 alpine:latest
xxxxxxxxxxxx mystack_web replicated 1/1 nginx:latest *:80->80/tcp
Die Ausgabe listet die Dienste mystack_app
und mystack_web
auf und bestätigt, dass sie als Teil des mystack
-Stacks laufen.