Einer der ersten Docker-Befehle, die Sie verwenden, ist docker ps
Befehl. Es zeigt die laufenden Container:
docker ps
Wenn Sie diesen Befehl ausführen, erhalten Sie tatsächlich eine Liste der ausgeführten Container und ihre eindeutige Container-ID, den Image-Namen, den ausgeführten Befehl, die Zeit seit der Ausführung (Betriebszeit) und die verwendeten Ports.
Aber man kann damit noch ein bisschen mehr machen. Sie können angehaltene Container anzeigen, das Ergebnis filtern oder nur die Container-IDs anzeigen.
Sehen wir uns diesen wichtigen Docker-Befehl etwas genauer an.
Der docker ps-Befehl
Docker hat einen Alias, um alle laufenden Container mit einer POSIX-freundlichen Namenskonvention anzuzeigen.
Das ist das ps
Unterbefehl in Docker. Es ist ein Alias von docker container ls
. Was, wie Sie sich denken können, zum Auflisten von Docker-Containern verwendet wird.
Hier ist ein Beispiel für die Ausführung von docker ps
auf meinem Computer:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 32 seconds ago Up 31 seconds 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
140161b8b139 mariadb "docker-entrypoint.s…" 34 seconds ago Up 32 seconds 3306/tcp nextcloud_db
73a6901a4846 lscr.io/linuxserver/transmission "/init" 17 minutes ago Exited (137) 9 minutes ago transmission_web
Wie Sie sehen können, zeigt dieser Befehl Details zu allen laufenden Containern an.
Die angezeigten Details sind die eindeutige ID des Containers, der Name des Images, der Befehl, den der Container ausführt, das Datum, an dem der Container erstellt wurde, die Betriebszeit, zugeordnete Ports und der Containername.
Als Systemadministrator verwenden Sie diesen Befehl häufig in einem Skript. Docker bietet einige Optionen, die hilfreich sein können, wenn Sie docker ps
ausführen in einem Skript.
Zeige alle Container (nicht nur die laufenden)
Als UNIX ps
Befehl verwendet wird, um Prozesse (Programme, die ausgeführt werden) anzuzeigen, verhält sich Docker ähnlich.
Ausführen von docker ps
zeigt nur die aktiven Docker-Container an.
Wenn Sie einen laufenden Container stoppen, existiert er noch, nur dass er nicht mehr läuft.
Um die Container anzuzeigen, die sich im gestoppten Zustand befinden, verwenden Sie --all
(oder -a
) Option wie folgt:
docker ps --all
Ich habe den Container transmission_web
gestoppt . Mal sehen, was ich in der Ausgabe bekomme.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 32 seconds ago Up 31 seconds 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
140161b8b139 mariadb "docker-entrypoint.s…" 34 seconds ago Up 32 seconds 3306/tcp nextcloud_db
73a6901a4846 lscr.io/linuxserver/transmission "/init" 17 minutes ago Exited (137) 9 minutes ago transmission_web
Wie Sie sehen können, ist das -a
Option zeigt auch einen Container, der angehalten wurde.
Filtern Sie die Ausgabe von docker ps für ein genaueres Ergebnis
Das docker ps
Befehl hat eine sehr nützliche Option, --filter
(oder -f
kurz).
Wie aus dem Optionsnamen hervorgeht, können Sie die Container mithilfe der folgenden Felder herausfiltern:
id
name
label
exited
status
ancestor
since
volume
publish
health
isolation
Ich habe einen Container namens nextcloud_server
erstellt . Ich möchte Details zu Containern sehen, aber nur solche mit dem gesuchten Namen. Lassen Sie uns sehen, wie der name
verwendet wird filtern.
$ docker ps --filter "name=nextcloud_server"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 3 hours ago Up 3 hours 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
Ich habe mehrere Container ausgeführt, die aber den name
verwenden Filter zeigt mir nur die Container, die mit dem Namen übereinstimmen.
Versuchen wir es mit der id
Filter. Ich habe einen MariaDB-Container mit der ID "140161b8b139". Ich werde den folgenden Befehl verwenden, um das zu erreichen.
$ docker ps --filter "id=140161b8b139"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
140161b8b139 mariadb "docker-entrypoint.s…" 15 hours ago Up 15 hours 3306/tcp nextcloud_db
Leicht! Ich habe den Container mit der übereinstimmenden ID erhalten.
Container in der Reihenfolge ihrer Erstellung anzeigen
Ja, Sie können Container nach ihrem Erstellungsdatum sortiert auflisten, indem Sie --latest
verwenden (oder l
kurz).
Die Reihenfolge ist die neueste oben und die älteste unten.
Hier ist eine Beispielausgabe der Ausführung des Befehls docker ps --latest
auf meinem Computer:
$ docker ps --latest
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 15 hours ago Up 15 hours 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
73a6901a4846 lscr.io/linuxserver/transmission "/init" 16 hours ago Exited (137) 16 hours ago transmission_web
Es gibt ein paar Fallstricke bei diesem Befehl.
- Container, die als "Abhängigkeit" verwendet werden, werden nicht aufgelistet
- Die Ausgabe enthält alle Containerzustände (d. h. auch angehaltene Container werden aufgelistet)
Ich hatte den Container „nextcloud_server“ mit MariaDB als „Abhängigkeit“ erstellt. Dieser Container wird also nicht in der Ausgabe aufgeführt, wenn --latest
verwendet wird Flagge.
Viel Scripting? Nur Container-IDs anzeigen
Angenommen, Sie schreiben ein Skript und möchten sich nur mit Container-IDs befassen, damit Sie Aktionen für Container ausführen können. Dafür können Sie den --quiet
verwenden (oder -q
kurz) Option.
Unten ist die Ausgabe der Ausführung von docker ps -q
auf meinem Computer.
$ docker ps -q
58c7013a49c3
140161b8b139
Wie Sie sehen können, besteht die Ausgabe nur aus Container-IDs (von Containern, die ausgeführt werden) und sonst nichts.
Wie Sie sehen können, beinhaltet der Docker-Befehl ps mehr als nur die Anzeige der laufenden Containerinformationen. Lassen Sie mich wissen, wenn Sie etwas Neues gelernt haben oder ein anderes nützliches Beispiel für docker ps
kennen Befehl.