Einführung
Docker hat sich zu einem unverzichtbaren Werkzeug für Entwickler und IT-Experten entwickelt und bietet eine leistungsstarke Plattform zur Containerisierung von Anwendungen. In diesem Tutorial werden wir untersuchen, wie man Docker-Container nach Namen filtert, eine entscheidende Fähigkeit für die effektive Verwaltung Ihrer Docker-Umgebung. Am Ende dieser Anleitung werden Sie in der Lage sein, bestimmte Container effizient anhand ihrer Namen zu lokalisieren und zu verwalten, wodurch Sie Ihre Docker-Workflows optimieren können.
Docker-Container mit docker ps anzeigen
Bevor wir Docker-Container filtern können, müssen wir zunächst verstehen, wie man die Container anzeigt, die auf unserem System laufen. Der grundlegendste Befehl für diesen Zweck ist docker ps.
Den Befehl docker ps verstehen
Der Befehl docker ps listet alle laufenden Docker-Container auf Ihrem System auf. Wenn Sie diesen Befehl ausführen, werden Sie Informationen über jeden Container sehen, einschließlich:
- Container-ID: Eine eindeutige Kennung für den Container
- Image: Das Docker-Image, das zur Erstellung des Containers verwendet wurde
- Command: Der Befehl, der innerhalb des Containers ausgeführt wird
- Created: Wann der Container erstellt wurde
- Status: Der aktuelle Status des Containers
- Ports: Alle Port-Mappings
- Names: Der Name des Containers
Lassen Sie uns den Befehl docker ps ausführen, um alle laufenden Container anzuzeigen:
docker ps
Sie sollten eine Ausgabe ähnlich dieser sehen:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54a76e95d987 alpine "sleep 1000" About a minute ago Up About a minute db-server
26f8c661f7a5 alpine "sleep 1000" About a minute ago Up About a minute utility-alpine
a3bb567cc561 redis "docker-entrypoint.s…" About a minute ago Up About a minute 6379/tcp cache-server
f1d07c98e753 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 80/tcp web-backend
d6fe891c1f04 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 80/tcp web-frontend
Alle Container anzeigen
Standardmäßig zeigt docker ps nur laufende Container an. Um alle Container anzuzeigen, einschließlich derer, die gestoppt wurden, verwenden Sie das Flag -a:
docker ps -a
Dieser Befehl zeigt alle Container an, unabhängig von ihrem Status. Dies ist nützlich, wenn Sie Container sehen möchten, die beendet oder pausiert wurden.
Nur Container-IDs anzeigen
Wenn Sie nur die Container-IDs benötigen, können Sie das Flag -q verwenden:
docker ps -q
Dies gibt nur die Container-IDs aus, was nützlich sein kann, wenn Sie sie an andere Befehle übergeben müssen.
Probieren Sie diese Befehle in Ihrem Terminal aus, um sich mit der grundlegenden Container-Auflistungsfunktionalität vertraut zu machen, bevor wir im nächsten Schritt mit dem Filtern fortfahren.
Grundlegendes Filtern von Containern nach Namen
Nachdem wir nun verstanden haben, wie man Docker-Container auflistet, wollen wir lernen, wie man sie nach Namen filtert. Wenn Sie mehrere Container ausführen, kann es eine Herausforderung sein, einen bestimmten zu finden. Docker bietet Filterfunktionen, die diese Aufgabe erheblich erleichtern.
Verwendung der Option --filter
Der Befehl docker ps unterstützt das Filtern über die Option --filter oder -f. Die grundlegende Syntax für das Filtern nach Namen lautet:
docker ps --filter name=<container-name>
Versuchen wir, nach Containern zu filtern, die "web" in ihrem Namen haben:
docker ps --filter name=web
Sie sollten eine Ausgabe ähnlich dieser sehen:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1d07c98e753 nginx "/docker-entrypoint.…" 10 minutes ago Up 10 minutes 80/tcp web-backend
d6fe891c1f04 nginx "/docker-entrypoint.…" 10 minutes ago Up 10 minutes 80/tcp web-frontend
Beachten Sie, dass sowohl die Container web-frontend als auch web-backend angezeigt werden, da beide das Wort "web" in ihren Namen enthalten.
Filtern nach exakten Namen
Um nach einem Container mit einem exakten Namen zu filtern, können Sie den vollständigen Namen verwenden:
docker ps --filter name=web-frontend
Dieser Befehl zeigt nur den Container mit dem genauen Namen "web-frontend" an:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6fe891c1f04 nginx "/docker-entrypoint.…" 12 minutes ago Up 12 minutes 80/tcp web-frontend
Verwenden mehrerer Filter
Sie können mehrere Filter anwenden, indem Sie mehrere --filter-Optionen hinzufügen. Um beispielsweise alle Container mit "web" in ihrem Namen UND die vom "nginx"-Image erstellt wurden, zu finden:
docker ps --filter name=web --filter ancestor=nginx
Das Ergebnis sollte dasselbe sein wie bei unserem ersten Filter, da beide "web"-Container das nginx-Image verwenden:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1d07c98e753 nginx "/docker-entrypoint.…" 15 minutes ago Up 15 minutes 80/tcp web-backend
d6fe891c1f04 nginx "/docker-entrypoint.…" 15 minutes ago Up 15 minutes 80/tcp web-frontend
Filtern von Containern nach Namensbeginn
Wenn Sie Container filtern möchten, deren Namen mit einer bestimmten Zeichenfolge beginnen, können Sie ein Muster wie folgt verwenden:
docker ps --filter name=^db
Dieser Befehl zeigt Container an, deren Namen mit "db" beginnen:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54a76e95d987 alpine "sleep 1000" 16 minutes ago Up 16 minutes db-server
Probieren Sie diese Filterbefehle in Ihrem Terminal aus, um das Auffinden bestimmter Container anhand ihrer Namen zu üben.
Erweitertes Filtern und Formatieren der Ausgabe
Nachdem wir nun das grundlegende Filtern nach Namen gemeistert haben, wollen wir einige fortgeschrittenere Techniken zum Filtern und Formatieren der Ausgabe des Befehls docker ps erkunden. Diese Fähigkeiten helfen Ihnen, Ihre Docker-Umgebung effizienter zu verwalten.
Kombinieren mehrerer Filterkriterien
Docker ermöglicht es Ihnen, mehrere Filterkriterien zu kombinieren, um Ihre Ergebnisse einzugrenzen. Um beispielsweise alle Container mit "web" in ihrem Namen zu finden, die derzeit ausgeführt werden:
docker ps --filter name=web --filter status=running
Dies zeigt alle laufenden Container an, die "web" in ihrem Namen haben:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1d07c98e753 nginx "/docker-entrypoint.…" 25 minutes ago Up 25 minutes 80/tcp web-backend
d6fe891c1f04 nginx "/docker-entrypoint.…" 25 minutes ago Up 25 minutes 80/tcp web-frontend
Verwenden der Option --format für benutzerdefinierte Ausgabe
Der Befehl docker ps unterstützt die benutzerdefinierte Ausgabeformatierung mit der Option --format mit Go-Templates. Dies ermöglicht es Ihnen, nur die Informationen anzuzeigen, die Sie benötigen, und zwar in dem von Ihnen gewünschten Format.
Um beispielsweise nur die Containernamen und ihren Status anzuzeigen:
docker ps --format "table {{.Names}}\t{{.Status}}"
Sie sehen eine vereinfachte Ausgabe wie diese:
NAMES STATUS
db-server Up 26 minutes
utility-alpine Up 26 minutes
cache-server Up 26 minutes
web-backend Up 26 minutes
web-frontend Up 26 minutes
Filtern und Formatieren kombinieren
Sie können Filtern und Formatieren kombinieren, um genau die Informationen zu erhalten, die Sie benötigen:
docker ps --filter name=web --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"
Dies zeigt eine Tabelle mit Namen, Images und Status für Container mit "web" in ihrem Namen an:
NAMES IMAGE STATUS
web-backend nginx Up 27 minutes
web-frontend nginx Up 27 minutes
Verwendung von Regex-ähnlichem Filtern
Das Filtersystem von Docker unterstützt einige Regex-ähnliche Muster. Um beispielsweise Container zu finden, deren Namen entweder "web" ODER "cache" enthalten:
docker ps --filter name=web --filter name=cache
Dies zeigt sowohl Web- als auch Cache-Container an:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3bb567cc561 redis "docker-entrypoint.s…" 30 minutes ago Up 30 minutes 6379/tcp cache-server
f1d07c98e753 nginx "/docker-entrypoint.…" 30 minutes ago Up 30 minutes 80/tcp web-backend
d6fe891c1f04 nginx "/docker-entrypoint.…" 30 minutes ago Up 30 minutes 80/tcp web-frontend
Praktisches Beispiel: Container-Verwaltungsskript
Lassen Sie uns ein einfaches Skript erstellen, das zeigt, wie das Filtern in einem praktischen Szenario verwendet werden kann. Erstellen Sie eine neue Datei namens container-stats.sh mit folgendem Inhalt:
nano container-stats.sh
Fügen Sie das folgende Skript hinzu:
#!/bin/bash
## This script displays container names, images and status for a filtered set of containers
echo "Web containers:"
docker ps --filter name=web --format "{{.Names}} - {{.Image}} - {{.Status}}"
echo -e "\nCache and database containers:"
docker ps --filter name=cache --filter name=db --format "{{.Names}} - {{.Image}} - {{.Status}}"
Speichern Sie die Datei (Strg+O, Eingabe, dann Strg+X) und machen Sie sie ausführbar:
chmod +x container-stats.sh
Führen Sie nun das Skript aus, um gefilterte und formatierte Containerinformationen anzuzeigen:
./container-stats.sh
Sie sollten eine Ausgabe ähnlich dieser sehen:
Web containers:
web-backend - nginx - Up 35 minutes
web-frontend - nginx - Up 35 minutes
Cache and database containers:
cache-server - redis - Up 35 minutes
db-server - alpine - Up 35 minutes
Dieses Skript zeigt, wie das Container-Filtern verwendet werden kann, um Informationen über Ihre Docker-Umgebung auf eine lesbarere und nützlichere Weise zu organisieren und darzustellen.
Praktische Anwendungen des Container-Filterns
In diesem Schritt werden wir praktische Anwendungen des Container-Filterns untersuchen, um gängige Docker-Verwaltungsaufgaben auszuführen. Diese Beispiele zeigen, wie das Filtern in realen Szenarien verwendet werden kann, um die Containerverwaltung effizienter zu gestalten.
Finden und Neustarten bestimmter Container
Angenommen, Sie müssen alle Web-bezogenen Container neu starten. Sie können das Filtern nach Namen verwenden, um sie zu identifizieren und sie dann neu zu starten:
## Zuerst die Web-Container identifizieren
docker ps --filter name=web
## Nun, sie einzeln neu starten
docker restart web-frontend
docker restart web-backend
Nachdem Sie diese Befehle ausgeführt haben, sollten Sie eine Bestätigung sehen, dass jeder Container neu gestartet wurde:
web-frontend
web-backend
Finden und Entfernen aller Container mit einem bestimmten Namensmuster
Wenn Sie alle Container mit einem bestimmten Namensmuster entfernen müssen, können Sie das Filtern mit der Containerentfernung kombinieren:
## WARNUNG: Dies dient nur zur Demonstration. In einer realen Umgebung,
## stellen Sie sicher, dass Sie wissen, was Sie entfernen!
## Container mit "utility" in ihren Namen auflisten
docker ps -a --filter name=utility
Sie sollten Ihren Utility-Container sehen:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26f8c661f7a5 alpine "sleep 1000" 45 minutes ago Up 45 minutes utility-alpine
Um ihn zu entfernen, würden Sie typischerweise Folgendes verwenden:
## Wir werden diesen Befehl nicht wirklich ausführen, um unsere Laborumgebung zu erhalten
## docker rm -f $(docker ps -aq --filter name=utility)
Stattdessen wollen wir sehen, wie dieser Befehl funktioniert:
## Nur die IDs abrufen, die betroffen wären
docker ps -aq --filter name=utility
Dies gibt die Container-ID aus:
26f8c661f7a5
Verwenden des Filterns zur Überwachung bestimmter Containergruppen
Das Container-Filtern ist nützlich für die gezielte Überwachung. Erstellen wir ein einfaches Überwachungsskript, das den Status unserer Web-Container überprüft:
nano web-monitor.sh
Fügen Sie das folgende Skript hinzu:
#!/bin/bash
## This script checks the status of web containers and reports if any are not running
echo "=== Web Container Status Check ==="
docker ps -a --filter name=web --format "{{.Names}}: {{.Status}}"
## Count stopped web containers
STOPPED=$(docker ps -a --filter name=web --filter status=exited --format "{{.Names}}" | wc -l)
if [ $STOPPED -gt 0 ]; then
echo -e "\nWARNING: $STOPPED web containers are not running!"
else
echo -e "\nAll web containers are running normally."
fi
Speichern Sie die Datei (Strg+O, Eingabe, dann Strg+X) und machen Sie sie ausführbar:
chmod +x web-monitor.sh
Führen Sie nun das Skript aus, um den Status Ihrer Web-Container anzuzeigen:
./web-monitor.sh
Sie sollten eine Ausgabe ähnlich dieser sehen:
=== Web Container Status Check ===
web-backend: Up 50 minutes
web-frontend: Up 50 minutes
All web containers are running normally.
Filtern in CI/CD-Pipelines
In CI/CD-Pipelines kann das Filtern von Containern für automatisiertes Testen und Bereitstellen unerlässlich sein. Erstellen wir ein Skript, das einen Bereitstellungsprozess simuliert, der nur auf Container mit einem bestimmten Namensmuster abzielt:
nano deploy-update.sh
Fügen Sie das folgende Skript hinzu:
#!/bin/bash
## This script simulates updating all containers of a specific type
TARGET_CONTAINERS=$1
if [ -z "$TARGET_CONTAINERS" ]; then
echo "Usage: $0 <container-name-pattern>"
exit 1
fi
echo "Preparing to update containers matching pattern: $TARGET_CONTAINERS"
echo "Containers affected:"
docker ps --filter name=$TARGET_CONTAINERS --format "{{.Names}}"
echo -e "\nIn a real deployment, this would:"
echo "1. Pull the latest images"
echo "2. Stop each container"
echo "3. Start new containers with the updated images"
echo "4. Verify the containers are running correctly"
echo -e "\nSimulation completed successfully!"
Speichern Sie die Datei (Strg+O, Eingabe, dann Strg+X) und machen Sie sie ausführbar:
chmod +x deploy-update.sh
Nun wollen wir die Aktualisierung unserer Web-Container simulieren:
./deploy-update.sh web
Sie sollten eine Ausgabe ähnlich dieser sehen:
Preparing to update containers matching pattern: web
Containers affected:
web-backend
web-frontend
In a real deployment, this would:
1. Pull the latest images
2. Stop each container
3. Start new containers with the updated images
4. Verify the containers are running correctly
Simulation completed successfully!
Diese praktischen Beispiele zeigen, wie das Container-Filtern in Ihren Docker-Workflow integriert werden kann, um die Containerverwaltung effizienter und automatisierter zu gestalten.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie Docker-Container effektiv nach Namen filtern können, eine wesentliche Fähigkeit für die Verwaltung von Docker-Umgebungen jeder Größe. Lassen Sie uns wiederholen, was wir behandelt haben:
Grundlegende Container-Auflistung: Sie haben gelernt, wie Sie den Befehl
docker psverwenden, um laufende Container anzuzeigen, und seine verschiedenen Optionen wie-azum Anzeigen aller Container.Grundlegendes Filtern nach Namen: Sie haben entdeckt, wie Sie die Option
--filter name=verwenden, um Container nach Namen zu finden, sowohl exakte als auch teilweise Übereinstimmungen.Erweitertes Filtern und Formatieren: Sie haben untersucht, wie Sie mehrere Filter kombinieren und die Ausgabe mit der Option
--formatanpassen können, um nur die benötigten Informationen anzuzeigen.Praktische Anwendungen: Sie haben Skripte erstellt, die reale Anwendungen des Container-Filterns für Überwachungs-, Verwaltungs- und Bereitstellungsaufgaben demonstrieren.
Diese Fähigkeiten helfen Ihnen, Docker-Umgebungen effizienter zu verwalten, insbesondere wenn die Anzahl der Container wächst. Das Container-Filtern ist besonders wertvoll in Entwicklungs-, Test- und Produktionsumgebungen, in denen Sie bestimmte Container schnell identifizieren und verwalten müssen.
Wenn Sie Ihre Docker-Reise fortsetzen, sollten Sie in Erwägung ziehen, andere Filteroptionen über das Filtern nach Namen hinaus zu erkunden, z. B. das Filtern nach Volume, Netzwerk oder Label. Diese zusätzlichen Filtertechniken können Ihre Containerverwaltungsfähigkeiten weiter verbessern.



