Docker 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 von öffentlichen 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.
Geschäftsführer Docker Container ist einer der wichtigsten Aspekte, um den man sich als Systemadministrator kümmern muss, der Docker-Hosts/Container verwaltet.
In diesem Artikel konzentrieren wir uns auf Verwaltung von Containern mit Docker Befehl.
run Command
docker run
Befehl wird verwendet, um einen Container von einem Image aus auszuführen, indem die Image ID
oder im Repository
und / oder Tag
Namen.
$ docker run {image}
Beispiel:
$ docker run nginx
Der obige Befehl führt eine Instanz von . aus <span class="NormalTextRun SpellingErrorV2 SCXW251451022 BCX0">nginx</span>
Anwendung auf einem Docker-Host, falls bereits vorhanden. Wenn es auf dem Docker-Host nicht vorhanden ist, geht es (standardmäßig) zum Docker-Hub und zieht das Image herunter. Dies geschieht jedoch das einzige erste Mal. Für nachfolgende Zeiten wird dasselbe Bild wiederverwendet.
Wenn Sie eine bestimmte Version eines Images ausführen möchten, geben Sie deren Version durch einen Doppelpunkt getrennt an. Dies ist bekannt als Tag
. 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 Start des Containers durch Docker zur Eingabeaufforderung zurückkehren, verwenden Sie -d
Flagge.
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 Command
docker ps
-Befehl listet alle laufenden Container und einige grundlegende Informationen zu ihnen auf. Wie Container-ID, Name des Images, Zeitpunkt der Erstellung des Containers, aktueller Status und Name des Containers. Jeder Container erhält einen zufälligen Namen (wenn 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 gleichzeitig 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 Command
Like ps
Befehl, ls
kann auch 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
$
stop Command
docker stop
Befehl wird verwendet, um einen laufenden Container zu stoppen. Hier müssen wir den Containernamen oder die ID zusammen mit diesem einfügen.
$ 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
Dies wird die zurückgeben CONTAINER ID
mit dem 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 von angeben müssen CONTAINER ID
. Es akzeptiert bis zu dem Teil, was es unter anderen ausgeführten Containern einzigartig macht, da Docker weiß, welcher Container gestoppt werden soll.
rm Command
docker rm
Befehl entfernt einen gestoppten oder beendeten Container.
$ docker rm {CONTAINER NAME or ID}
Beispiel:
$ docker rm 133f5
133f5
$
exec Command
Wir verwenden exec
Befehl, 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 starten bash
Shell (vorausgesetzt, das Image verfügt über Bash, können Sie auch andere verfügbare Shells verwenden) in einem Container namens unruffled_meninsky
Verwenden Sie im interaktiven Modus:
$ docker exec –it unruffled_meninsky /bin/bash
Dies sollte Sie im Container auf a . landen bash
Hülse. Hier die Flagge -i
steht für interaktiven Modus und -t
für das Endgerät. 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 Command
Falls ein Container im getrennten Modus gestartet wird und wir seine Protokolle sehen möchten, können wir verwenden logs
Befehl, 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 Command
Um Dateien zwischen einem Container und einem localhost-Dateisystem zu kopieren, können Sie cp
Befehl.
$ 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 Command
Der Docker-Container-Befehl bietet eine Option zum Exportieren des Dateisystems eines Containers als TAR-Datei.
$ docker container export {CONTAINER NAME or ID}
inspect Command
Detaillierte Informationen zu einem Container können wir überprüfen mit inspect
Befehl als:
$ docker inspect {CONTAINER NAME or ID}
OR
$ docker container inspect {CONTAINER NAME or ID}
kill Command
Ein laufender Container kann getötet werden mit kill
Befehl mit einem optionalen --signal
or -s
Flagge. 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 Command
Um einen Livestream der Ressourcennutzung eines Containers anzuzeigen, können Sie stats
Befehl:
$ 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
top Command
Like top
Befehl in Linux können wir ihn mit Docker verwenden, um eine Liste der laufenden Prozesse abzurufen.
$ 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
$
rename Command
Um einen vorhandenen Container umzubenennen, verwenden Sie rename
Befehl.
$ 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 Command
Wir können Änderungen an Dateien oder Verzeichnissen im Dateisystem eines Containers überprüfen mit diff
Befehl.
$ 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 wichtige Befehle und deren Verwendung in diesem Artikel, die Ihnen eine gute Vorstellung von der Verwaltung von Docker-Containern geben sollten.
Als nächstes finden Sie einige der Ressourcen zum Erlernen von DevOps.