Acht grundlegende Docker-Containerverwaltungsbefehle

Acht grundlegende Docker-Containerverwaltungsbefehle

Vergangene Speicher-Big-Data Vergangene Speicher-Big-Data

Englisches Original dieses Artikels: https://kerneltalks.com/virtualization/8-basic-docker-container-management-commands/
Chinesische Übersetzung: https://www.iteblog.com/archives/2382.html (klicken Sie unten auf Lesen Sie das Original. Accessible)
In diesem Artikel werde ich acht grundlegende Docker-Container-Befehle vorstellen, die nützlich sind, um grundlegende Vorgänge für Docker-Container auszuführen, z. B. Ausführen, Auflisten, Stoppen, Anzeigen von Protokollen, Löschen usw. Wenn Sie mit dem Konzept von Docker nicht vertraut sind, empfehle ich Ihnen, die entsprechende Einführung im Internet zu überprüfen. In diesem Artikel wird sie nicht im Detail vorgestellt. Jetzt geben wir schnell den Befehl ein, um zu verstehen:

Wie führe ich Docker-Container aus?

Wie wir alle wissen, ist ein Docker-Container nur eine Anwendung, die auf dem Host-Betriebssystem ausgeführt wird. Für einen Docker benötigen Sie also ein Image, um ihn auszuführen. Wenn ein Docker-Image in einem Prozess ausgeführt wird, wird es als Docker-Container bezeichnet. Sie können das Docker-Image lokal herunterladen oder von Docker Hub herunterladen. Docker Hub ist ein zentrales Repository zum Speichern öffentlicher und privater Bilder. Der offizielle Docker Hub befindet sich unter hub.docker.com. Wenn Sie die Docker-Engine zum Ausführen eines Containers verwenden, wird zuerst nach dem lokalen Image gesucht. Wenn es nicht lokal gefunden wird, wird das entsprechende Image aus dem Docker Hub abgerufen.

Lassen Sie uns ein Docker-Image des Apache-Webservers ausführen (z. B. den httpd-Prozess). Sie müssen den Befehl docker container run verwenden. Der alte Befehl wird vom Docker ausgeführt. Da Docker jedoch später einen Unterbefehlsteil hinzugefügt hat, unterstützt die neue Version die folgenden Befehle:


root@kerneltalks # docker container run -d -p 80:80 httpd
Unable to find image 'httpd:latest' locally
latest: Pulling from library/httpd
3d77ce4481b1: Pull complete
73674f4d9403: Pull complete
d266646f40bd: Pull complete
ce7b0dda0c9f: Pull complete
01729050d692: Pull complete
014246127c67: Pull complete
7cd2e04cf570: Pull complete
Digest: sha256:f4610c3a1a7da35072870625733fd0384515f7e912c6223d4a48c6eb749a8617
Status: Downloaded newer image for httpd:latest
c46f2e9e4690f5c28ee7ad508559ceee0160ac3e2b1688a61561ce9f7d99d682

Der Bildname im Docker-Ausführungsbefehl muss eingegeben werden, und Kollegen unterstützen auch viele optionale Parameter. Häufig verwendete Parameter sind:

  • -d: Trennt den Container von der aktuellen Shell
  • -p X: Y: Bindet Port Y des Containers an Port X des Hosts
  • --name: Geben Sie Ihrem Container einen Namen. Wenn nicht festgelegt, wird ein zufällig generierter Name festgelegt
  • -e: Übergeben Sie Umgebungsvariablen und ihre Werte beim Starten des Containers.
    Wie Sie der obigen Ausgabe entnehmen können, verwenden wir httpd als Bildnamen, um den Container auszuführen. Da dieses Image lokal nicht gefunden wurde, wurde es von der Docker-Engine aus dem Docker Hub abgerufen. Beachten Sie, dass die Docker-Engine das Image httpd: latest heruntergeladen hat, wobei: auf die Versionsnummer folgt, die die Namenskonvention für Docker-Container-Images darstellt. Wenn Sie eine bestimmte Version des Containers ausführen möchten, können Sie die entsprechende Versionsnummer nach dem Bildnamen angeben. Wenn die Versionsnummer nicht angegeben wird, ruft die Docker-Engine immer die neueste Version ab.

Die letzte Ausgabezeile zeigt die eindeutige Container-ID des neu ausgeführten httpd-Containers.

Wie liste ich alle laufenden Docker-Container auf?

Nachdem Ihr Container ausgeführt wird, müssen Sie ihn möglicherweise überprüfen oder alle auf dem Computer ausgeführten Container auflisten. Sie können den Befehl docker container ls verwenden, um dieses Ziel zu erreichen. In der alten Docker-Version müssen Sie den Docker-Befehl ps verwenden, um dies zu erreichen.

root@kerneltalks # docker container ls
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                NAMES
c46f2e9e4690        httpd               "httpd-foreground"   11 minutes ago      Up 11 minutes       0.0.0.0:80->80/tcp   cranky_cori

Die Ergebnisse werden in Spalten angezeigt, und die Bedeutung des Werts jeder Spalte lautet wie folgt:

  • Container-ID: Die ersten 12 Buchstaben der eindeutigen ID des Containers
  • Bild: Der Name des Bildes, auf dem der Container ausgeführt wird
  • Befehl: Der Befehl, der ausgeführt wird, nachdem der Container gestartet wurde
  • Erstellt: Erstellte Zeit
  • Status: Der aktuelle Status des Containers
  • Ports: Detaillierte Informationen, die an den Host-Port gebunden sind
  • Namen: Der Name des Containers (da wir beim Starten des Containers keinen Namen angegeben haben, hier also ein zufällig generierter Name)

    Wie kann ich das laufende Protokoll eines Docker-Containers anzeigen?

Da wir im ersten Schritt den Parameter -d verwendet haben, um den Container von der aktuellen Shell zu trennen, wird er im Hintergrund ausgeführt. In diesem Fall wissen wir nicht, was im Container passiert ist, daher müssen wir das laufende Protokoll des Containers überprüfen. Docker stellt uns den Befehl logs zur Verfügung, der den Containernamen oder die ID als Parameter verwendet.

root@kerneltalks # docker container logs cranky_cori
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Thu May 31 18:35:07.301158 2018] [mpm_event:notice] [pid 1:tid 139734285989760] AH00489: Apache/2.4.33 (Unix) configured -- resuming normal operations
[Thu May 31 18:35:07.305153 2018] [core:notice] [pid 1:tid 139734285989760] AH00094: Command line: 'httpd -D FOREGROUND'

Hier habe ich den Containernamen als Parameter im Befehl verwendet. Sie können Apache-bezogene Protokolle im httpd-Container anzeigen.

Wie identifiziere ich den Prozess eines Docker-Containers?

Ein Container ist ein Prozess, der Hostressourcen zum Ausführen verwendet. Wenn dies zutrifft, finden Sie den Prozess des Containers in der Prozesstabelle auf dem Host. Mal sehen, wie man den Containerprozess auf dem Host überprüft.

Docker verwendet den berühmten Befehl top als Namen seiner Unterbefehle, um die vom Container generierten Prozesse anzuzeigen. Es verwendet den Containernamen oder die ID als Parameter. In älteren Versionen von Docker kann nur der Befehl docker top verwendet werden. In der neuen Version können wir jedoch die Befehle Docker Top und Docker Container Top verwenden.

root@kerneltalks # docker container top  cranky_cori
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                15702               15690               0                   18:35               ?                   00:00:00            httpd -DFOREGROUND
bin                 15729               15702               0                   18:35               ?                   00:00:00            httpd -DFOREGROUND
bin                 15730               15702               0                   18:35               ?                   00:00:00            httpd -DFOREGROUND
bin                 15731               15702               0                   18:35               ?                   00:00:00            httpd -DFOREGROUND
root@kerneltalks # ps -ef |grep -i 15702
root     15702 15690  0 18:35 ?        00:00:00 httpd -DFOREGROUND
bin      15729 15702  0 18:35 ?        00:00:00 httpd -DFOREGROUND
bin      15730 15702  0 18:35 ?        00:00:00 httpd -DFOREGROUND
bin      15731 15702  0 18:35 ?        00:00:00 httpd -DFOREGROUND
root     15993 15957  0 18:59 pts/0    00:00:00 grep --color=auto -i 15702

Die erste Ausgabe listet die vom Container generierte Prozessliste auf. Es enthält alle Informationen, einschließlich UID, PID, PID, Startzeit, Startbefehl usw. Sie können nach allen hier in der Prozesstabelle des Hosts angezeigten Prozessnummern suchen. Dies haben wir im zweiten Befehl getan. Dies beweist also, dass der Container tatsächlich nur ein Prozess auf dem Host-Host ist.

Wie stoppe ich den Docker-Container?

Bitte benutzen Sie den Stop Befehl! Ebenso wird der Containername oder die ID als Parameter verwendet.


root@kerneltalks # docker container stop cranky_cori
cranky_cori

Wie liste ich gestoppte oder nicht ausgeführte Docker-Container auf?

Nachdem wir unseren Container gestoppt haben und versuchen, den Container mit dem Befehl ls aufzulisten, können wir ihn nicht mehr sehen.


root@kerneltalks # docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Wenn Sie in diesem Fall gestoppte oder nicht ausgeführte Container anzeigen möchten, müssen Sie daher den Parameter -a im Befehl ls gleichzeitig wie folgt verwenden:


root@kerneltalks # docker container ls -a
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS                     PORTS               NAMES
c46f2e9e4690        httpd               "httpd-foreground"   33 minutes ago      Exited (0) 2 minutes ago                       cranky_cori

Nach Verwendung des Parameters -a können wir die gestoppten Container anzeigen. Bitte beachten Sie, dass der Status dieses Containers als "Beendet" markiert ist. Da der Container nur ein Prozess ist, ist es besser, exited zu verwenden, als anzuhalten.

Wie starte ich einen Docker-Container?

Starten wir nun den gestoppten Container, der sich immer noch vom Ausführen des Containers unterscheidet. Wenn Sie den Container ausführen, führen Sie Befehle in einem brandneuen Container aus. Wenn Sie einen Container starten, starten Sie einen alten gestoppten Container, der den alten Status gespeichert hat. Der Betrieb wird in dem Zustand wieder aufgenommen, in dem er sich befand, als er gestoppt wurde.


root@kerneltalks #  docker container start c46f2e9e4690
c46f2e9e4690
root@kerneltalks # docker container ls -a
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                NAMES
c46f2e9e4690        httpd               "httpd-foreground"   35 minutes ago      Up 8 seconds        0.0.0.0:80->80/tcp   cranky_cori

Wie entferne ich den Docker-Container?

Wenn wir den Container aus der Docker-Engine entfernen müssen, können wir den Befehl rm verwenden. Sie können jedoch keinen laufenden Container entfernen. Sie müssen den Behälter anhalten, bevor Sie ihn entfernen. Sie können jedoch auch den Befehl rm mit dem Parameter -f verwenden, um das Entfernen des Containers zu erzwingen. Dies wird jedoch nicht empfohlen.


root@kerneltalks # docker container rm cranky_cori
cranky_cori
root@kerneltalks # docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Nachdem der Container entfernt wurde, können wir den Befehl ls -a nicht mehr zum Anzeigen des Containers verwenden.

Ich denke du magst

Origin blog.51cto.com/15127589/2679552
Empfohlen
Rangfolge