15 Docker-Befehle zum Verwalten von Containern [Auflisten, Stoppen, Starten, Entfernen und mehr]
Veröffentlicht: 2021-08-17Docker ist ein beliebtes Tool zum Erstellen und Ausführen von containerisierten Anwendungen. Es ist für mehrere Plattformen verfügbar und wird als eine der Back-End-Container-Technologien in Kubernetes verwendet.
In Docker erstellen Sie entweder Ihre eigenen Images, um Ihre Anwendung als Container auszuführen, oder Sie können Tausende öffentlicher Images aus dem Docker-Repository abrufen und in Ihrem Projekt verwenden. Sobald Ihr Image fertig ist, können Sie Ihre Container mit diesen Images starten. Ein Container ist eine laufende Instanz eines Docker-Images.
Die Verwaltung von Docker-Containern ist einer der wichtigsten Aspekte, um die sich ein Systemadministrator kümmern muss, der Docker-Hosts/Container verwaltet.
In diesem Artikel konzentrieren wir uns auf die Verwaltung von Containern mit dem Docker-Befehl.
Führen Sie den Befehl aus
Der Befehl docker run
wird verwendet, um einen Container von einem Image aus auszuführen, indem die Image ID
oder der Repository
und/oder Tag
-Name angegeben wird.
$ docker run {image}
Beispiel:
$ docker run nginx
Der obige Befehl führt eine Instanz der Anwendung <span class="NormalTextRun SpellingErrorV2 SCXW251451022 BCX0">nginx</span>
auf einem Docker-Host aus, falls sie bereits vorhanden ist. Wenn es auf dem Docker-Host nicht vorhanden ist, geht es (standardmäßig) zum Docker-Hub und zieht das Image herunter. Dies geschieht jedoch nur beim ersten Mal. Für nachfolgende Male wird dasselbe Bild wiederverwendet.
Wenn Sie eine bestimmte Version eines Images ausführen möchten, geben Sie die Version durch einen Doppelpunkt getrennt an. Dies wird als Tag
bezeichnet. Falls Sie kein Tag angeben, betrachtet Docker es standardmäßig als das neueste.
Wenn Sie den Container im Hintergrund in einem getrennten Modus ausführen möchten, damit Sie nach dem Starten des Containers durch Docker zur Eingabeaufforderung zurückkehren, verwenden Sie das Flag -d
.
Beispiel:
$ docker run nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx 33847f680f63: Pull complete dbb907d5159d: Pull complete 8a268f30c42a: Pull complete b10cf527a02d: Pull complete c90b090c213b: Pull complete 1f41b2f2bf94: Pull complete Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90 Status: Downloaded newer image for nginx:latest /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/08/15 12:13:23 [notice] 1#1: using the "epoll" event method 2021/08/15 12:13:23 [notice] 1#1: nginx/1.21.1 2021/08/15 12:13:23 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 2021/08/15 12:13:23 [notice] 1#1: OS: Linux 5.8.0-1039-azure 2021/08/15 12:13:23 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/08/15 12:13:23 [notice] 1#1: start worker processes 2021/08/15 12:13:23 [notice] 1#1: start worker process 33 2021/08/15 12:13:23 [notice] 1#1: start worker process 34
ps-Befehl
Der Befehl docker ps
listet alle laufenden Container und einige grundlegende Informationen über sie auf. Wie Container-ID, Name des Bildes, Erstellungszeit des Containers, aktueller Status und Name des Containers. Jeder Container erhält einen zufälligen Namen (falls nicht explizit angegeben) und eine ID.
Beispiel:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 10 seconds ago Up 10 seconds 80/tcp jolly_elion
Um alle laufenden und nicht laufenden/beendeten Container auf einmal aufzulisten, können Sie Folgendes verwenden:
$ docker ps -a
Beispiel:
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fcec129f0eb4 nginx "/docker-entrypoint.…" 46 hours ago Exited (0) 46 hours ago interesting_ishizaka 6e8b1e441aa6 hello-world "/hello" 2 days ago Exited (0) 2 days ago keen_shirley
ls-Befehl
Wie der Befehl ps
kann auch ls
zum Auflisten von Containern verwendet werden. -a
Flag kann verwendet werden, um alle Container aufzulisten (nicht nur die laufenden).
$ docker container ls
Beispiel:
$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 15796e91c30b redis "docker-entrypoint.s…" 2 seconds ago Up 1 second 6379/tcp flamboyant_neumann 904390b65d45 nginx "/docker-entrypoint.…" 14 minutes ago Up 14 minutes 80/tcp nginx_new $
Befehl stoppen
Der Befehl docker stop
wird verwendet, um einen laufenden Container zu stoppen. Hier müssen wir den Containernamen oder die ID zusammen mit diesem eingeben.
$ docker stop {container-id}
Bei Erfolg würde es den Docker-Namen oder die ID zurückgeben.
Beispiel:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 50 seconds ago Up 49 seconds 80/tcp jolly_elion
Dadurch wird die CONTAINER ID
, mit der Sie den Container stoppen können.
$ docker stop 133f5 133f5
Beachten Sie für dieses und die folgenden Beispiele, dass Sie keinen vollständigen Wert für CONTAINER ID
angeben müssen. Es akzeptiert bis zu dem Teil, was es unter anderen laufenden Containern einzigartig macht, da Docker weiß, welcher Container zu stoppen ist.
rm-Befehl
Der Befehl docker rm
entfernt einen angehaltenen oder beendeten Container.
$ docker rm {CONTAINER NAME or ID}
Beispiel:
$ docker rm 133f5 133f5 $
exec-Befehl
Wir können den Befehl exec
verwenden, um in einen laufenden Container zu gehen. Dies ist nützlich, um laufende Container zu debuggen oder einige Dinge innerhalb eines Containers zu tun.

$ docker exec –it {container} {command}
Beispiel:
Angenommen, Sie möchten die bash
-Shell in einem Container namens unruffled_meninsky
im interaktiven Modus starten (vorausgesetzt, das Image verfügt über Bash, können Sie auch andere verfügbare Shells verwenden):
$ docker exec –it unruffled_meninsky /bin/bash
Dies sollte Sie im Container auf einer bash
-Shell landen. Hier steht das Flag -i
für den interaktiven Modus und -t
für das Terminal. Wenn Sie nur einen oder mehrere Befehle ausführen und den Container verlassen möchten, können Sie Folgendes verwenden:
$ docker exec unruffled_meninsky cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 cd2eed4acf34
logs-Befehl
Falls ein Container im getrennten Modus gestartet wird und wir seine Protokolle sehen möchten, können wir den Befehl logs
verwenden, um seine Protokolle zu überprüfen:
$ docker logs {CONTAINER NAME or ID}
Beispiel:
$ docker logs 7da6dcebaf9c /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/08/15 12:14:09 [notice] 1#1: using the "epoll" event method 2021/08/15 12:14:09 [notice] 1#1: nginx/1.21.1 2021/08/15 12:14:09 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 2021/08/15 12:14:09 [notice] 1#1: OS: Linux 5.8.0-1039-azure 2021/08/15 12:14:09 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/08/15 12:14:09 [notice] 1#1: start worker processes 2021/08/15 12:14:09 [notice] 1#1: start worker process 31 2021/08/15 12:14:09 [notice] 1#1: start worker process 32 $
cp-Befehl
Um Dateien zwischen einem Container und dem lokalen Host-Dateisystem zu kopieren, können Sie den Befehl cp
verwenden.
$ docker container cp {CONTAINER NAME or ID:SRC_PATH} {DEST_PATH}|-
Beispiel:
$ docker container cp quirky_cray:/etc/nginx/nginx.conf nginx.conf.bkp
export-Befehl
Der Docker-Containerbefehl bietet eine Option zum Exportieren des Dateisystems eines Containers als TAR-Datei.
$ docker container export {CONTAINER NAME or ID}
Befehl kontrollieren
Wir können detaillierte Informationen über einen Container mit dem Befehl inspect
wie folgt überprüfen:
$ docker inspect {CONTAINER NAME or ID}
ODER
$ docker container inspect {CONTAINER NAME or ID}
Befehl töten
Ein laufender Container kann mit dem Befehl kill
mit einem optionalen --signal
oder -s
beendet werden. Es können mehrere Container angegeben werden, um sie auf einmal zu töten.
$ docker kill {CONTAINER NAME or ID} [--signal VAL]
Beispiel:
$ docker kill cd9005a0b5d2 -s 9 cd9005a0b5d2 $
stats-Befehl
Um einen Live-Stream der Ressourcennutzung eines Containers anzuzeigen, können Sie den Befehl stats
verwenden:
$ docker container stats {CONTAINER NAME or ID}
Beispiel:
$ docker container stats thirsty_volhard CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 904390b65d45 thirsty_volhard 0.00% 3.406MiB / 7.775GiB 0.04% 1.02kB / 0B 0B / 8.19kB 3
oberstes Kommando
Wie top
Befehl in Linux können wir ihn mit Docker verwenden, um eine Liste der laufenden Prozesse zu erhalten.
$ docker container top {CONTAINER NAME or ID}
Beispiel:
$ docker container top thirsty_volhard UID PID PPID C STIME TTY TIME CMD root 2603 2582 0 12:34 ? 00:00:00 nginx: master process nginx -g daemon off; systemd+ 2659 2603 0 12:34 ? 00:00:00 nginx: worker process systemd+ 2660 2603 0 12:34 ? 00:00:00 nginx: worker process $
Befehl umbenennen
Um einen vorhandenen Container rename
, verwenden Sie den Befehl rename.
$ docker container rename {OLD CONTAINER NAME} {NEW CONTAINER NAME}
Beispiel:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_container $ docker container rename nginx_container nginx_new $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_new $
diff-Befehl
Wir können Änderungen an Dateien oder Verzeichnissen im Dateisystem eines Containers mit dem Befehl diff
untersuchen.
$ docker container diff {CONTAINER NAME or ID}
Beispiel:
$ docker container diff nginx_new C /var C /var/cache C /var/cache/nginx A /var/cache/nginx/uwsgi_temp A /var/cache/nginx/client_temp A /var/cache/nginx/fastcgi_temp A /var/cache/nginx/proxy_temp A /var/cache/nginx/scgi_temp C /etc C /etc/nginx C /etc/nginx/conf.d C /etc/nginx/conf.d/default.conf C /run A /run/nginx.pid $
Zusammenfassung
Abschließend bietet Doker einen umfangreichen Befehlssatz, um Container von ihrer Erstellung bis zur Zerstörung zu verwalten. Wir haben einige der wichtigen Befehle und ihre Verwendung in diesem Artikel behandelt, der Ihnen eine gute Vorstellung von der Verwaltung von Docker-Containern vermitteln soll.
Informieren Sie sich als Nächstes über einige der Ressourcen zum Erlernen von DevOps.