[Cloud Native] Alle Befehle, die üblicherweise bei der Containerverwaltung in Docker verwendet werden

1. Docker-Container-Erstellungsprozess

 

2. Die Essenz des Containerbetriebs

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
创建容器基本选项:

--name:为容器命名
-i:交互式创建容器
-d:后台创建容器
-t:为容器分配伪终端

Der Sinn der Existenz des Docker-Containers besteht darin, die Anwendung im Container auszuführen und externe Dienste bereitzustellen. Der Zweck des Startens des Containers besteht also darin, die Anwendung im Container zu starten und auszuführen. Nachdem die Anwendung im Container ausgeführt wurde, wird der Container automatisch beendet. Wenn Sie also nicht möchten, dass der Container sofort nach dem Start beendet wird, müssen Sie verhindern, dass die Containeranwendung sofort beendet wird. Normalerweise gibt es zwei Möglichkeiten, die Anwendung in den Zustand der Interaktion mit dem Benutzer oder in den Wartezustand zu versetzen.

3. Docker-Lauf

Erstellen Sie einen neuen Container aus dem Image und führen Sie ihn aus

Format:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Erstellen Sie ein Centos7.9-Image

[root@localhost ~]# docker run  -it --name centos7 centos:7.9.2009
[root@4c392a1a06d7 /]# 
#前台退出容器 ctrl+p+q
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE             COMMAND       CREATED          STATUS          PORTS     NAMES
4c392a1a06d7   centos:7.9.2009   "/bin/bash"   11 seconds ago   Up 10 seconds             centos7

Die Tastenkombination zum Verlassen des Containers im Vordergrund lautet Strg+P+q. Der Container wird im Hintergrund ausgeführt

4. Docker-Exec

Führen Sie Befehle in einem laufenden Container aus

Format:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Optionen:

--detach,-d:分离模式:在后台执行命令
--detach-keys:覆盖分离容器的键序列
--env -e:设置环境变量
--env-file:读写一个环境变量文件
--interactive,-i:保持STDIN打开,即使没有连接
--privileged:赋予命令扩展权限
--tty,-t:分配一个伪终端
--user,-u;用户名或UID(格式:< name| UID >[:<group|gid>])
--workdir,-w:容器内的工作目录

Geben Sie den Centos7-Container ein

[root@localhost ~]# docker exec -it -w /tmp  centos7 /bin/bash
[root@4c392a1a06d7 tmp]# pwd
/tmp
Docker-Attach

Hängen Sie lokale Standard-Eingabe-, Ausgabe- und Fehlerströme an einen laufenden Container an

Format:

docker attach [OPTIONS] CONTAINER
Was ist der Unterschied zwischen Docker Exec und Docker Attach?
  • Docke Exec erstellt einen neuen Prozess, um auf den Containerprozess zuzugreifen. Er wird im Allgemeinen in Verbindung mit der Option -it verwendet. Verwenden Sie im Allgemeinen den Befehl „exit“, um i zu verlassen und den aktuellen Prozess zu beenden

  • Docker Attach erstellt keinen neuen Prozess, sondern gibt den ursprünglichen Prozess des Containers ein. Sie können den Container je nach Situation mit Exit oder Strg + P + Q verlassen

5. Docker PS

Listencontainer

Format:

docker ps [OPTIONS]

Optionen:

-a, -all: alle Container anzeigen (Standard zeigt die Ausführung an)
-f: Filtert die Ausgabe basierend auf den bereitgestellten Kriterien
--latest, -l: Zeigt den zuletzt erstellten Container an (einschließlich aller Status)
--no-trunc: Ausgabe nicht abschneiden
--quiet, -q: Zeigt nur die Container-ID an
--size, -s: Gesamtdateigröße anzeigen

Hinweis: Docker PS unterstützt die Übertragung von Dateikopien zwischen Containern nicht

6. Docker-Top

Zeigt den laufenden Prozess des Containers an

Format:

docker top CONTAINER [ps OPTIONS]

7. Docker-Containerverwaltung

Start-up
docker start [OPTIONS] CONTAINER [CONTAINER...]
stoppen
docker stop [OPTIONS] CONTAINER [CONTAINER...]
#强制停止
docker kill [OPTIONS] CONTAINER [CONTAINER...]
neu starten
docker restart [OPTIONS] CONTAINER [CONTAINER...]
Pause
docker pause CONTAINER [CONTAINER...]
Pause machen
docker unpause CONTAINER [CONTAINER...]

8.Docker-Protokolle

Containerprotokolle abrufen

Format:

docker logs [OPTIONS] CONTAINER

Optionen:

--details: Zeigt zusätzliche Details an, die vom Protokoll bereitgestellt werden
--follow, -f: Protokollausgabe folgen
--since: Zeigt Protokolle vom Zeitstempel (z. B. 2013-01-02T13:23:37Z) oder relative Protokolle (z. B. 42 Minuten von 42 Minuten)
--tail, -n: Anzahl der Zeilen, die ab dem Ende des Protokolls angezeigt werden sollen
-t: Protokollzeitstempel anzeigen
--until: Zeigt Protokolle vor dem Zeitstempel (z. B. 2013-01-02T13:23:37Z) oder relativ (z. B. 42 m für 42 Minuten) an.

Sehen Sie sich die ersten 3 Zeilen des Protokollinhalts vor 5 Sekunden an

[root@localhost ~]# docker logs --until 5s -n 3 nginx1
2023/07/12 10:04:58 [notice] 1#1: start worker process 32
2023/07/12 10:04:58 [notice] 1#1: start worker process 33
2023/07/12 10:04:58 [notice] 1#1: start worker process 34

9.docker cp

Kopieren Sie Dateien/Ordner zwischen Container und lokalem Dateisystem

Format:

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Optionen:

-a: Archivmodus (alle UID-/GID-Informationen kopieren)
--quiet, -q: Fortschrittsausgabe während des Kopierens unterdrücken. Fortschrittsausgabe automatisch unterdrücken, wenn kein Terminal angeschlossen ist

10.docker rm

Entfernen Sie einen oder mehrere Behälter

Format:

docker rm [OPTIONS] CONTAINER [CONTAINER...]

Optionen:

--force, -f: Entfernen Sie den laufenden Container gewaltsam (verwenden Sie SIGKILL).
--link, -l: Entferne den angegebenen Link
--volumes, -v: Mit Containern verknüpfte anonyme Volumes entfernen

11. Docker-Commit

Erstellen Sie ein neues Image basierend auf den Containeränderungen

Format:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Optionen:

--author, -a: Autor (z. B. John Hannibal Smith <[email protected]>)
--change, -c: Dockerfile-Anweisungen auf das erstellte Image anwenden
--message, -m: Nachricht festschreiben
--pause, -p: Den Container während des Commits anhalten

Erstellen Sie einen Centos7-Spiegel, installieren Sie das Net-Tools-Tool und packen Sie es dann in einen Spiegel

[root@localhost ~]#  docker run -itd --name centos centos:7.9.2009
1d1725c19cbe9c6e119f055827a316dd351eb4adeae291a878a39418312daed5
[root@localhost ~]# docker exec -it centos /bin/bash
[root@1d1725c19cbe /]# yum -y install net-tools

packen

[root@localhost ~]# docker commit -a '[email protected]' centos centos7:net-tools
sha256:0db0f584d14de19f7b377fa385ea43e7abcb57223f4a51c690c5b1628e882f70
[root@localhost ~]# docker images
REPOSITORY        TAG         IMAGE ID       CREATED         SIZE
centos7           net-tools   0db0f584d14d   6 seconds ago   418MB

Erstellen Sie dann einen Container basierend auf dem aktuellen Bild

12. Docker-Export/Import

Docker-Export

Exportieren Sie das Container-Dateisystem als TAR-Archiv

Format:

docker export [OPTIONS] CONTAINER

Optionen:

--output, -o: In eine Datei schreiben statt in stdout

Verpacken Sie den aktuellen Container

[root@localhost ~]# docker export -o centos.tar centos
[root@localhost ~]# ls
centos.tar  Dockerfile  httpd-2.4.57.tar.gz  image.tar  my.cnf  original-ks.cfg
Docker-Import

Importieren Sie Inhalte aus einem Tarball, um ein Dateisystem-Image zu erstellen

Format:

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

Optionen:

--change, -c: Dockerfile-Anweisungen auf das erstellte Image anwenden
--message, -m: Commit-Nachricht für importierte Bilder festlegen
--platform: Wenn der Server mehrere Plattformen unterstützt, legen Sie die Plattform fest

Stellen Sie den gerade verpackten Behälter wieder her

[root@localhost ~]# docker import centos.tar centos:test
sha256:6bc2adb97476b7b797a5a129c68afcba4ce05ab487812727c7049003f2a1049e
[root@localhost ~]# docker images
REPOSITORY        TAG         IMAGE ID       CREATED             SIZE
centos            test        6bc2adb97476   4 seconds ago       394MB

13. Der Unterschied zwischen Docker-Image-/Container-Export und -Import

exportieren und speichern
  1. export wirkt auf den Container und save auf das Bild, aber die Ergebnisse ihres Exports sind alle TAR-Dateien

  2. Beim Exportieren kann jeweils nur ein Container exportiert werden, beim Speichern können mehrere Bilder gleichzeitig exportiert werden

  3. Export exportiert lediglich den Dateisystem-Snapshot des aktuellen Containers, wodurch alle Verlaufs- und Metadateninformationen des Originalbilds verloren gehen, während Save den vollständigen Datensatz des Originalbilds speichert.

importieren und laden
  1. import importiert Containerpakete und Load lädt Bildpakete, aber am Ende werden alle als Spiegelbilder wiederhergestellt

  2. Das durch den Import wiederhergestellte Bild enthält bereits die aktuelle Bildebene, und das durch Laden wiederhergestellte Bild entspricht genau der Ebene des Originalbilds.

  3. Das durch den Import wiederhergestellte Bild ist ein neu erstelltes Bild, das sich von der Bild-ID des Originalbilds unterscheidet. Das durch Laden wiederhergestellte Bild ist dasselbe Bild wie das Originalbild, dh die Bild-ID ist dieselbe.

  4. Import kann <Repository> und <Tag> für das importierte Bild angeben, und das durch Laden geladene Bild kann nicht <Repository> und <Tag> angeben, was mit dem Originalbild identisch ist

14.Docker-System

Docker verwalten

1.Docker-System df

Docker-Festplattennutzung anzeigen

Format:

Docker System df [OPTIONEN]

Sehen Sie sich die Docker-Festplattennutzung des aktuellen Systems an

[root@localhost ~]# docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          9         2         1.504GB   1.435GB (95%)
Containers      2         1         213.9MB   213.9MB (100%)
Local Volumes   3         1         6.174MB   1.501MB (24%)
Build Cache     19        0         465.4MB   465.4MB

Optionen:

--format: Verwenden Sie eine benutzerdefinierte Vorlage, um die Ausgabe zu formatieren: „table“: Verwenden
docker system events [OPTIONS]
Spaltenüberschriften drucken die Ausgabe im Tabellenformat (Standard). „Tabellenvorlage“: Verwenden Sie die angegebene Go-Vorlage, um die Ausgabe im Tabellenformat zu drucken. „JSON“: Verwenden Sie die angegebene Go-Vorlage, um die Ausgabe zu drucken. Weitere Informationen zum Formatieren der Ausgabe mithilfe von Vorlagen finden Sie unter https://docs.docker.com/go/formatting/
--verbose, -v: ausführliche Informationen zur Speicherplatznutzung anzeigen
2. Docker-Systemereignisse

Erhalten Sie Echtzeitereignisse vom Server

Format:

docker system events [OPTIONS]

Optionen:

--filter, -f: Ausgabe anhand der bereitgestellten Kriterien filtern
--format: Formatiert die Ausgabe mit der angegebenen Go-Vorlage
--since: Zeigt alle Ereignisse an, die seit dem Zeitstempel erstellt wurden
--until: Ereignisse bis zu diesem Zeitstempel streamen

Öffnen Sie zwei Terminals

Schalter 1

docker system events

Terminal 2

[root@localhost ~]# docker stop test
test

Terminal 1 ansehen

[root@localhost ~]# docker system events
2023-07-15T17:04:37.334836848+08:00 container kill d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290 (image=progrium/consul, name=great_easley, signal=15)
2023-07-15T17:04:41.428854481+08:00 network disconnect 462ad2de000e7aae527224ae21c66e15aac0e68ed45f96b65528e22e272851fa (container=d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290, name=bridge, type=bridge)
2023-07-15T17:04:41.430294298+08:00 volume unmount 0e452a14a460fdc4cfa0b2644761923359a263fe9abeca5fd1952927231ca0a7 (container=d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290, driver=local)
2023-07-15T17:04:41.430357838+08:00 container stop d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290 (image=progrium/consul, name=great_easley)
3.Docker-Systeminformationen

Systemweite Informationen anzeigen

Format:

docker system info [OPTIONS]

Identisch mit Docker-Informationen

4. Docker-System bereinigen

Entfernen Sie nicht verwendete Daten

Format:

docker system prune [OPTIONS]

Optionen:

--all, -a: Alle nicht verwendeten Bilder entfernen, nicht nur die baumelnden
--filter: Geben Sie einen Filterwert an (z. B. label=<key>=<value>)
--force, -f: Nicht zur Bestätigung auffordern
--volumes: Volumes entfernen

Löschen Sie alle nicht verwendeten Container und Bilder mit leeren Namen und leeren Beschriftungen sowie nicht verwendeten Netzwerken im aktuellen Docker-Server

[root@localhost ~]# docker system prune
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache
  
übersetzen:
Achtung! Dadurch wird Folgendes gelöscht:
- alle angehaltenen Container
— alle Netzwerke, die nicht von mindestens einem Container genutzt werden
- Alle hängenden Bilder
- Alle baumelnden Build-Caches
Sind Sie sicher, dass Sie fortfahren möchten? [J/N]
Bist du dir sicher, dass du weitermachen willst? [J/N] J
Gelöschte Container:
1d1725c19cbe9c6e119f055827a316dd351eb4adeae291a878a39418312daed5
d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290
Gelöschte Netzwerke:
mynet1
mac_net1
Gelöschte Build-Cache-Objekte:
kutjwzwfdu28eldqlwo07uax7
0p5xfeo29k8ojauchfzf97kp0
a9puvqnewb05luw84rnanr2lh
y6mdonbx0pvs2trx7xd97738u
kj09ara8y3v3b6f50xtzie6lv
itk7ujtbdy4c2nirz68e2ivck
2a7d9sfcsnvl9owzau11l0jrq
oe2ukyl2cpguwqjm0kddg5tcx
4fom9yi9x5i125uvb96d29ext
tdwcwf0eze1lrvgherr4sxrs5
9hffla6qush85p7jhf89l56ek
Gesamter zurückgewonnener Speicherplatz: 679,3 MB
[root@localhost ~]# docker images
REPOSITORY        TAG         IMAGE ID       CREATED         SIZE
centos            test        6bc2adb97476   25 hours ago    394MB
centos7           net-tools   0db0f584d14d   26 hours ago    418MB
busybox           latest      beae173ccac6   18 months ago   1.24MB
nginx             latest      605c77e624dd   18 months ago   141MB
voltest           latest      3af6982c965f   18 months ago   141MB
redis             latest      7614ae9453d1   19 months ago   113MB
mysql             5.7         c20987f18b13   19 months ago   448MB
centos            7.9.2009    eeb6ee3f44bd   22 months ago   204MB
progrium/consul   latest      09ea64205e55   8 years ago     69.4MB
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
462ad2de000e   bridge    bridge    local
c598e7da9321   host      host      local
36391f761fe6   none      null      local

15.Docker erstellen

Erstellen Sie einen neuen Container

Es ähnelt run, der einzige Unterschied besteht jedoch darin, dass create nur Container erstellt und nicht ausführt, Docker run jedoch Container erstellt und ausführt

Format:

docker create [OPTIONS] IMAGE [COMMAND] [ARG...zz

Guess you like

Origin blog.csdn.net/weixin_53678904/article/details/132101792