Detaillierte Erläuterung der am häufigsten verwendeten Image-Befehle und Container-Befehle von Docker

Detaillierte Erläuterung der am häufigsten verwendeten Image-Befehle und Container-Befehle von Docker

Dieser Artikel listet die am häufigsten verwendeten Image-Befehle und Container-Befehle bei der Verwendung von Docker auf und zeigt Ihnen, wie Sie Containerdatenvolumes bedienen und Containerdaten sichern. Nachdem Sie diese Befehle beherrschen, können Sie die Bereitstellung einfacher Anwendungen üben und mehr über die Erstellung von Docker-Images, Sicherung, Wiederherstellung, Migration, Image-Repository, Netzwerk, Cluster und mehr erfahren.

Spiegelbezogene Befehle

Offizielle Dokumentation: https://docs.docker.com/reference/

Spiegel anzeigen

[root@localhost ~]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
hallo-welt neueste bf756fb1ae65 vor 7 Monaten 13.3kB
  • REPOSITORY : Der Name des Bildes im Repository, in diesem Artikel als Bildname bezeichnet
  • TAG : Bild-Tag
  • IMAGE ID : Bild-ID
  • CREATED : Das Datum, an dem das Bild erstellt wurde (nicht das Datum, an dem das Bild erhalten wurde)
  • SIZE : Bildgröße

Diese Images werden im Verzeichnis /var/lib/docker des Docker-Hosts gespeichert.

Suchspiegel

Wenn Sie das gewünschte Bild im Netzwerk suchen müssen, können Sie mit dem folgenden Befehl danach suchen.

Docker-Suche nach Image-Namen 

  • NAME : Bildname
  • DESCRIPTION : Bildbeschreibung
  • STARS : Benutzerbewertungen, die die Popularität eines Bildes widerspiegeln
  • OFFICIAL : Ob es sich um einen offiziellen Build handelt
  • AUTOMATED : Automatisch erstellt, was darauf hinweist, dass das Image durch den automatischen Erstellungsprozess von Docker Hub erstellt wird.

Ziehen Sie das Bild

Beim Pullen eines Images wird das Image aus dem zentralen Repository auf den lokalen Computer heruntergeladen.

Docker-Pull-Image-Name

Wenn ich das CentOS-Image auf den lokalen Computer ziehen möchte und die Tag-Image-Label-Informationen nicht deklariere, wird standardmäßig die neueste Version gezogen. Sie können das Image auch über https://hub.docker.com/ suchen, um die unterstützten Tag-Informationen anzuzeigen.

Indem wir uns die Tag-Informationen ansehen, wenn wir das CentOS7-Image herunterladen möchten.

Docker-Pull Centos:7

Löschen eines Bildes

Löschen Sie ein Bild anhand seiner ID.

# Löschen Sie ein einzelnes Image Docker RMI Image ID
# Mehrere Bilder löschen Docker RMI Bild-ID Bild-ID Bild-ID

docker images -q können die IDs aller Images abgefragt und durch die Kombination von Befehlen alle Images gelöscht werden.

Docker RMI `Docker-Images -q`

Hinweis: Wenn ein Container aus einem Image erstellt wird, kann das Image nicht gelöscht werden.

Lösung: Löschen Sie zuerst den Container im Image und löschen Sie dann das Image.

Containerbezogene Befehle

Container anzeigen

Zeigen Sie die laufenden Container an.

[root@localhost ~]# docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
  • CONTAINER ID : Container-ID
  • IMAGE : das Bild, zu dem es gehört
  • COMMAND :
  • CREATED : Erstellungszeit
  • STATUS : Containerstatus
  • PORTS : Hafen
  • NAMES : Containername

Angehaltene Container anzeigen.

docker ps -f status=beendet

Alle Container anzeigen (sowohl laufende als auch gestoppte).

Docker ps -a

Zeigen Sie den zuletzt ausgeführten Container an.

Docker ps -l

Erstellen und Starten eines Containers

docker run [OPTIONEN] IMAGE [BEFEHL] [ARG…]
  • -i : bedeutet, den Container auszuführen;
  • -t : Gibt an, dass der Container nach dem Start seine Befehlszeile eingibt. Nachdem Sie diese beiden Parameter hinzugefügt haben, können Sie sich nach der Erstellung beim Container anmelden. Das heißt, weisen Sie ein Pseudoterminal zu.
  • --name : Benennen Sie den erstellten Container;
  • -v : Gibt die Verzeichniszuordnungsbeziehung an (ersteres ist das Hostverzeichnis und letzteres ist das dem Host zugeordnete Verzeichnis). Sie können mehrere -v verwenden, um mehrere Verzeichnisse oder Dateien zuzuordnen. Hinweis: Am besten führen Sie eine Verzeichniszuordnung durch, nehmen Änderungen auf dem Hostcomputer vor und geben diese dann für den Container frei.
  • -d : Fügen Sie nach dem Ausführen den Parameter -d hinzu, um einen geschützten Container zu erstellen und im Hintergrund auszuführen (Sie werden sich nach der Erstellung des Containers nicht automatisch beim Container anmelden. Wenn Sie nur die Parameter -i -t hinzufügen, betreten Sie den Container automatisch, nachdem der Container erstellt wurde);
  • -p : zeigt die Portzuordnung an. Ersterer ist der Host-Port und letzterer der Zuordnungsport im Container. Sie können mehrere -p-Optionen verwenden, um mehrere Ports zuzuordnen.
  • -P : Verwendet nach dem Zufallsprinzip die verfügbaren Ports auf dem Host, um sie den im Container verfügbaren Ports zuzuordnen.

Container erstellen und eingeben

Mit der folgenden Befehlszeile können Sie einen Container BB über das Image AA erstellen, den Container ausführen und in die Datei /bin/bash des Containers wechseln.

docker run -it --name Containername Imagename: Tag /bin/bash

Hinweis: Damit ein Docker-Container ausgeführt werden kann, muss er einen Vordergrundprozess haben. Wenn kein Vordergrundprozess ausgeführt wird, befindet sich der Container im Leerlauf und wird automatisch beendet.

Den aktuellen Container verlassen

Ausfahrt

Container auf geschützte Weise erstellen

docker run -di --name Containername Imagename: Tag

Login Guard-Containermodus

docker exec -it Containername | Container-ID /bin/bash

Stoppen und Starten von Containern

# Stoppen Sie den Container Docker Stop Containername | Container-ID
# Starten Sie den Container Docker Start Containername | Container-ID

Dateikopie

Wenn wir Dateien in den Container kopieren müssen, können wir den Befehl cp verwenden.

docker cp Die zu kopierende Datei oder das zu kopierende Verzeichnis Containername: Containerverzeichnis

Es ist auch möglich, Dateien aus dem Container zu kopieren.

Docker CP-Containername: Die Datei oder das Verzeichnis, das in das Containerverzeichnis kopiert werden soll

Verzeichnis-Mount (Container-Datenträger-Vorgang)

Beim Erstellen eines Containers können wir das Host-Verzeichnis dem Verzeichnis im Container zuordnen, sodass wir den Container beeinflussen können, indem wir die Dateien in einem Verzeichnis des Hosts ändern. Dieser Vorgang ist bidirektional gebunden, was bedeutet, dass der Vorgang im Container auch den Host beeinflusst und die Sicherungsfunktion realisiert.

Beim Löschen des Containers werden die Inhalte des Host-Rechners allerdings nicht gelöscht, da die darunterliegende Schicht durch Kopieren implementiert wird. Wenn mehrere Container dasselbe Verzeichnis mounten und einer der Container gelöscht wird, hat dies keine Auswirkungen auf den Inhalt anderer Container. Ebenso wird die darunterliegende Schicht durch Kopieren implementiert.

Beim Löschen des Containers werden die Inhalte des Hosts allerdings nicht gelöscht. Wenn mehrere Container dasselbe Verzeichnis bereitstellen und einer der Container gelöscht wird, hat dies keine Auswirkungen auf den Inhalt der anderen Container.

Das Datenvolumen zwischen Container und Host ist eine Referenzbeziehung. Das Datenvolumen wird von außen in den Container eingebunden, sodass es unabhängig vom Lebenszyklus des Containers existieren kann. Gerade weil der Lebenszyklus des Datenvolumens nicht mit dem Lebenszyklus des Containers identisch ist, wird das Datenvolumen nicht beeinflusst, wenn der Container beendet oder gelöscht wird. Der Lebenszyklus des Datenvolumens wird fortgesetzt, bis kein Container es mehr verwendet.

Fügen Sie beim Erstellen eines Containers den Parameter -v im Format宿主機目錄:容器目錄hinzu, zum Beispiel:

docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# Mehrere Verzeichnisse mount docker run -di -v /host-Verzeichnis:/Container-Verzeichnis -v /host-Verzeichnis 2:/Container-Verzeichnis 2 Image-Name

Beim Einbinden des Verzeichnisses wird möglicherweise angezeigt, dass nicht genügend Berechtigungen erforderlich sind. Dies liegt daran, dass das Sicherheitsmodul SELinux in CentOS7 die Berechtigungen deaktiviert hat. Wenn Sie Docker ausführen, fügen Sie dem Container Berechtigungen hinzu, indem Sie --privileged=true verwenden, um das Problem fehlender Berechtigungen für das bereitgestellte Verzeichnis zu lösen.

Anonymer Berg

Für die anonyme Einbindung ist lediglich ein Schreiben in das Containerverzeichnis erforderlich. Das entsprechende Verzeichnis außerhalb des Containers wird in /var/lib/docker/volume generiert.

# Anonymer Mount Docker Run -di -v /usr/local/data --name centos7-02 centos:7
# Volumedaten anzeigen Volumeinformationen Docker Volume ls 

Benanntes Reittier

Beim benannten Mounten wird dem Datenvolumen ein Name gegeben und das entsprechende Verzeichnis außerhalb des Containers wird in /var/lib/docker/volume generiert.

# Anonymer Mount Docker Run -di -v docker_centos_data:/usr/local/data --name centos7-03 centos:7
# Volumedaten anzeigen Volumeinformationen Docker Volume ls

Zum Mounten das Verzeichnis angeben

Die eingangs erläuterte Methode besteht darin, das angegebene Verzeichnis zu mounten. Diese Mount-Methode generiert keinen Inhalt im Verzeichnis /var/lib/docker/volume .

docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# Mehrere Verzeichnisse mount docker run -di -v /host-Verzeichnis:/Container-Verzeichnis -v /host-Verzeichnis 2:/Container-Verzeichnis 2 Image-Name

Anzeigen von Verzeichnisbereitstellungsbeziehungen

Sie können die Verzeichnisadresse des Hostcomputers anzeigen, der dem Datenvolumen entspricht, indem docker volume inspect 數據卷名稱.

[root@localhost ~]# Docker-Volume prüfen docker_centos_data
[
 {
 "Erstellt am": "2020-08-13T20:19:51+08:00",
 "Treiber": "lokal",
 "Labels": null,
 "Einhängepunkt": "/var/lib/docker/volumes/docker_centos_data/_data",
 "Name": "docker_centos_data",
 "Optionen": null,
 "Geltungsbereich": "lokal"
 }
]

Sie können detaillierte Informationen zur Datenbereitstellung anzeigen, indem docker inspect 容器ID或名稱und im zurückgegebenen JSON-Knoten Mounts suchen.

Nur Lesen/Lesen/Schreiben

# Nur lesen. Die Datenverwaltung des Containers kann nur durch Ändern des Host-Inhalts erreicht werden.
docker run -it -v /host directory:/container directory:ro image name# Lesen/Schreiben, Standard. Der Host und der Container können Daten in beide Richtungen verarbeiten.
docker run -it -v /host-Verzeichnis:/Container-Verzeichnis:rw Image-Name

volumes-from (Vererbung)

# Container centos7-01 gibt das zu mountende Verzeichnis an docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# Die Container centos7-04 und centos7-05 entsprechen der Übernahme des Mount-Verzeichnisses des Containers centos7-01 docker run -di --volumes-from centos7-01 --name centos7-04 centos:7
docker run -di --volumes-from centos7-01 --name centos7-05 centos:7

Anzeigen der Container-IP-Adresse

Mit dem folgenden Befehl können wir die Metadaten des Containers anzeigen.

Docker untersucht Containernamen | Container-ID

Sie können auch direkt den folgenden Befehl ausführen, um die IP-Adresse direkt auszugeben.

docker inspect --format='{{.NetworkSettings.IPAddress}}' Containername | Container-ID

Löschen eines Containers

# Löschen Sie den angegebenen Container Docker RM Containername | Container-ID
# Mehrere Container löschen docker rm Containername | Container-ID Containername | Container-ID

Ich habe Ihnen zuvor die detaillierte Verwendung des Docker-Run-Befehls vorgestellt. Interessierte Freunde können sich darauf beziehen!

Damit ist dieser Artikel über die am häufigsten verwendeten Docker-Image-Befehle und Container-Befehle abgeschlossen. Weitere relevante Docker-Image-Befehle und Container-Befehle finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Analyse des Implementierungsprozesses der Docker-Container-Orchestrierung
  • Erstellen und Verwenden von Docker-Datenvolumencontainern
  • Detaillierte Erklärung der Datenmengen von Docker-Containern
  • So generieren Sie ein Docker-Image und schließen die Containerbereitstellung in einem Spring-Boot-Projekt ab
  • So installieren Sie den Kibana-Tokenizer im Docker-Container
  • Detaillierte Erläuterung des Prozesses zum Erstellen und Ausführen von Docker-Containern
  • 10 schlechte Angewohnheiten, die Sie bei Docker-Containeranwendungen vermeiden sollten
  • Detaillierte Erläuterung des Konfigurationsprozesses des Docker-Container-Netzwerkports

<<:  So lösen Sie das Problem der hohen Parallelität in der MySQL-Datenbank

>>:  Vue verwendet Echart, um Beschriftungen und Farben anzupassen

Artikel empfehlen

Lösung für die lange Verzögerung der MySQL-Datenbank-Master-Slave-Replikation

Vorwort Die Verzögerung der MySQL Master-Slave-Re...

Spezifische Verwendung von GNU Parallel

Was ist das? GNU Parallel ist ein Shell-Tool zum ...

Beispielcode für horizontales Balkendiagramm von Echarts Bar

Inhaltsverzeichnis Horizontales Balkendiagramm Da...

MySQL-Implementierung für pessimistisches und optimistisches Sperren

Inhaltsverzeichnis Vorwort Tatsächlicher Kampf 1....

XHTML-Erste-Schritte-Tutorial: Einfache Webseitenerstellung

Erstellen Sie Ihre erste Webseite in einer Minute...

Mit CSS3 3D-Effekten einen Würfel erstellen

Wenn wir lernen, die 3D-Effekte von CSS3 zum Erst...

Detaillierte Erklärung der MySQL-Datengruppierung

Gruppe erstellen Die Gruppierung wird in der GROU...

js realisiert das Verpacken mehrerer Bilder in Zip

Inhaltsverzeichnis 1. Dateien importieren 2. HTML...

Erste Schritte Tutorial für Anfänger ④: So binden Sie Unterverzeichnisse

Um zu verstehen, was das bedeutet, müssen wir zunä...

Detailliertes Installationstutorial für Mysql5.7.19 unter Centos7

1. Herunterladen Laden Sie mysql-5.7.19-linux-gli...

Detaillierte Erläuterung des vite2.0-Konfigurationslernens (Typescript-Version)

einführen Die ursprünglichen Worte von You Yuxi. ...

Natives JS zum Erzielen eines nahtlosen Karusselleffekts

Native js realisiert den Karusselleffekt (nahtlos...

Implementierung der Nginx-Lastverteilung/SSL-Konfiguration

Was ist Lastenausgleich? Wenn ein Domänenname auf...