Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter DevOps Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

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 Backend-Containertechnologien 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 ziehen und in Ihrem Projekt verwenden. Sobald Ihr Image fertig ist, können Sie Ihren 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 Sie sich als Systemadministrator kümmern müssen, der Docker-Hosts/Container verwaltet

In diesem Artikel werden wir uns auf die Verwaltung von Containern mit dem Docker-Befehl konzentrieren

Befehl ausführen

der Befehl docker run wird verwendet, um einen Container von einem Image aus zu starten, indem die Image ID oder der Name des Repositorys und/oder des Tags wird angegeben

$ docker run {image}

Beispiel

$ docker run nginx

Der obige Befehl führt eine Instanz der nginx-Anwendung auf einem Docker-Host aus , wenn sie bereits existiert. Wenn sie auf dem Docker-Host nicht vorhanden ist, geht er zum Docker-Hub (standardmäßig) und holt das Image herunter. Dies geschieht jedoch nur beim ersten Mal. Für die folgenden Male wird dasselbe Image wiederverwendet

Wenn Sie eine bestimmte Version eines Bildes ausführen möchten, geben Sie die Version durch einen Doppelpunkt getrennt an. Dies wird als Tag bezeichnet. Wenn Sie keinen Tag angeben, betrachtet Docker es standardmäßig als die neueste Version

Wenn Sie den Container im Hintergrund in einem abgetrennten Modus ausführen möchten, so dass Sie nach dem Start des Containers durch Docker zur Eingabeaufforderung zurückkehren, verwenden Sie das Flag -d

Beispiel

$ docker run nginx
Das Image 'nginx:latest' kann lokal nicht gefunden werden
latest: Pulling from library/nginx
33847f680f63: Pull abgeschlossen
dbb907d5159d: Pull komplett
8a268f30c42a: Vollständig abrufen
b10cf527a02d: Pull complete
c90b090c213b: Vollständig abrufen
1f41b2f2bf94: Pull complete
Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
Status: Neueres Image für nginx heruntergeladen:latest
/docker-entrypoint.sh: /docker-entrypoint.d/ ist nicht leer, wird versuchen, die Konfiguration durchzuführen
/docker-entrypoint.sh: Suche nach Shell-Skripten in /docker-entrypoint.d/
/docker-entrypoint.sh: Startet /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Ermitteln der Prüfsumme von /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Aktiviert listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Startet /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Starten von /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Konfiguration abgeschlossen; bereit zum Starten
2021/08/15 12:13:23 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: Verwendung der Ereignismethode "epoll"
2021/08/15 12:13:23 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: nginx/1.21.1
2021/08/15 12:13:23 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: gebaut mit gcc 8.3.0 (Debian 8.3.0-6)
2021/08/15 12:13:23 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: OS: Linux 5.8.0-1039-azure
2021/08/15 12:13:23 [ <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2021/08/15 12:13:23 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: start worker processes
2021/08/15 12:13:23 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: start worker process 33
2021/08/15 12:13:23 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: start worker process 34

ps Befehl

der Befehl docker ps listet alle laufenden Container und einige grundlegende Informationen über sie auf. Dazu gehören die Container-ID, der Name des Images, die Zeit, zu der der Container erstellt wurde, der aktuelle Status und der 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...." vor 10 Sekunden Up 10 Sekunden 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. -mit dem Flag ls können Sie alle Container auflisten (nicht nur die laufenden)

$ docker container ls

Beispiel

$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15796e91c30b redis "docker-entrypoint.s..." vor 2 Sekunden Up 1 Sekunde 6379/tcp flamboyant_neumann
904390b65d45 nginx "/docker-entrypoint...." vor 14 Minuten Up 14 Minuten 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 mit angeben

$ docker stop {container-id}

Bei Erfolg wird der Name oder die ID des Containers zurückgegeben.

Beispiel

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
133f5e0267a5 nginx "/docker-entrypoint...." vor 50 Sekunden Up 49 Sekunden 80/tcp jolly_elion 

Dies gibt die CONTAINER ID zurück, die Sie zum Stoppen des Containers verwenden können

$ docker stop 133f5
133f5

Beachten Sie bei diesem und den kommenden Beispielen, dass Sie keinen vollständigen Wert der CONTAINER ID angeben müssen. Es wird nur der Teil akzeptiert, der ihn unter anderen laufenden Containern einzigartig macht, da Docker weiß, welcher Container gestoppt werden muss

rm Befehl

der Befehl docker rm entfernt einen gestoppten oder beendeten Container

$ docker rm {CONTAINER NAME oder ID}

Beispiel

$ docker rm 133f5
133f5

$

exec Befehl

Wir können den Befehl exec verwenden, um in einen laufenden Container einzudringen. Dies ist nützlich, um laufende Container zu debuggen oder einige Dinge innerhalb eines Containers zu tun

$ docker exec -it {Container} {Befehl}

Beispiel

Angenommen, Sie möchten die Bash-Shell (vorausgesetzt, das Image verfügt über Bash, Sie können auch andere verfügbare Shells verwenden) innerhalb eines Containers namens unruffled_meninsky im interaktiven Modus starten, dann verwenden Sie

$ docker exec -it unruffled_meninsky /bin/bash

Damit sollten Sie innerhalb des Containers auf einem Bash-Shell landen. Dabei steht die Flagge -i für den interaktiven Modus und -t für das Terminal. Wenn Sie nur einen oder mehrere Befehle ausführen und den Container wieder verlassen möchten, können Sie dies tun

$ 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 

protokolliert Befehl

Wenn ein Container im losgelösten Modus gestartet wird und wir seine Protokolle sehen wollen, können wir den Befehl logs verwenden, um seine Protokolle einzusehen

$ docker logs {CONTAINER NAME oder ID}

Beispiel

$ docker logs 7da6dcebaf9c
/docker-entrypoint.sh: /docker-entrypoint.d/ ist nicht leer, wird versuchen, die Konfiguration durchzuführen
/docker-entrypoint.sh: Suche nach Shell-Skripten in /docker-entrypoint.d/
/docker-entrypoint.sh: Startet /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Ermitteln der Prüfsumme von /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Aktiviert listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Startet /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Starten von /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Konfiguration abgeschlossen; bereit zum Starten
2021/08/15 12:14:09 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: Verwendung der Ereignismethode "epoll"
2021/08/15 12:14:09 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: nginx/1.21.1
2021/08/15 12:14:09 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: gebaut mit gcc 8.3.0 (Debian 8.3.0-6)
2021/08/15 12:14:09 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: OS: Linux 5.8.0-1039-azure
2021/08/15 12:14:09 [ <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2021/08/15 12:14:09 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: start worker processes
2021/08/15 12:14:09 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: start worker process 31
2021/08/15 12:14:09 <x><x><x><x><x><x><x><x><x><x><x><x><x><x><x>[notice]</x></x></x></x></x></x></x></x></x></x></x></x></x></x></x> 1#1: start worker process 32

$

cp Befehl

Um Dateien zwischen einem Container und dem Localhost-Dateisystem zu kopieren, können Sie den Befehl cp verwenden

$ docker container cp {CONTAINER NAME oder ID:SRC_PATH} {DEST_PATH}|-

Beispiel

$ docker container cp quirky_cray:/etc/nginx/nginx.conf nginx.conf.bkp

Befehl exportieren

Der Docker-Container-Befehl bietet die Möglichkeit, das Dateisystem eines Containers als TAR-Datei zu exportieren

$ docker container export {CONTAINER NAME oder ID}

Befehlen Sie zu inspizieren

Mit dem Befehl inspect können wir detaillierte Informationen über einen Container überprüfen

$ docker inspect {CONTAINER NAME oder ID}

ODER

$ docker container inspect {CONTAINER NAME oder ID}

befehlen Sie zu töten

Ein laufender Container kann mit dem Befehl kill und dem optionalen Flag --signal oder -s beendet werden. Es können mehrere Container angegeben werden, um sie in einem Zug zu beenden

$ docker kill {CONTAINER NAME oder ID} [--signal VAL]

Beispiel

$ docker kill cd9005a0b5d2 -s 9
cd9005a0b5d2

$

gibt an Befehl

Um einen Live-Stream der Ressourcennutzung eines Containers anzuzeigen, können Sie den Befehl stats verwenden

$ docker container stats {CONTAINER NAME oder 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 Befehl

Wie der Befehl top in Linux können wir ihn auch mit Docker verwenden, um eine Liste der laufenden Prozesse zu erhalten

$ docker container top {CONTAINER NAME oder 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: Hauptprozess nginx -g daemon aus;
systemd 2659 2603 0 12:34 ?                   00:00:00 nginx: Arbeiterprozess
systemd 2660 2603 0 12:34 ?                   00:00:00 nginx: Arbeitsprozess

$

Befehl umbenennen

Um einen bestehenden Container umzubenennen, verwenden Sie den Befehl rename

$ docker container rename {ALTER CONTAINER-NAME} {NEUER CONTAINERNAME}

Beispiel

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
904390b65d45 nginx "/docker-entrypoint...." vor 7 Minuten Up 7 Minuten 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...." vor 7 Minuten Up 7 Minuten 80/tcp nginx_new

$

diff Befehl

Mit dem Befehl diff können wir Änderungen an Dateien oder Verzeichnissen im Dateisystem eines Containers überprüfen

$ docker container diff {CONTAINER NAME oder 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

Zusammenfassend lässt sich sagen, dass Doker einen umfangreichen Satz von Befehlen zur Verwaltung von Containern von der Erstellung bis zur Zerstörung bietet. Wir haben in diesem Artikel einige der wichtigste Befehle und ihre Verwendung behandelt, die Ihnen einen guten Überblick über die Verwaltung von Docker-Containern geben sollten

Als nächstes finden Sie einige Ressourcen, um DevOps zu lernen.

  • Abhishek Nair
    Autor
Dank an unsere Sponsoren
Weitere großartige Lektüre über DevOps
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder