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
-
export wirkt auf den Container und save auf das Bild, aber die Ergebnisse ihres Exports sind alle TAR-Dateien
-
Beim Exportieren kann jeweils nur ein Container exportiert werden, beim Speichern können mehrere Bilder gleichzeitig exportiert werden
-
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
-
import importiert Containerpakete und Load lädt Bildpakete, aber am Ende werden alle als Spiegelbilder wiederhergestellt
-
Das durch den Import wiederhergestellte Bild enthält bereits die aktuelle Bildebene, und das durch Laden wiederhergestellte Bild entspricht genau der Ebene des Originalbilds.
-
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.
-
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