Verwendung von Docker-Containern
Ein Docker-Container ist eine leichtgewichtige, portable, eigenständige Softwareumgebung, die zum Ausführen von Anwendungen verwendet wird.
Docker-Container packen die Anwendung und alle ihre Abhängigkeiten, einschließlich Bibliotheken, Konfigurationsdateien, Systemtools usw., in ein standardisiertes Paket, sodass die Anwendung überall einheitlich ausgeführt werden kann.
Container sind Virtualisierung auf Betriebssystemebene. Sie müssen kein vollständiges Betriebssystem ausführen, was Start und Betrieb effizienter macht.
Die Beziehung zwischen Images und Containern
- Image:Eine statische Vorlage für Container, die alle Abhängigkeiten und Dateien enthält, die für die Ausführung der Anwendung erforderlich sind. Images sind unveränderlich.
- Container:Eine laufende Instanz eines Images mit eigenem Dateisystem, Prozessen, Netzwerk usw., und sie ist dynamisch. Ein Container startet aus einem Image und bleibt während der Laufzeit veränderbar.

Docker-Client
Der Docker-Client ist ein Befehlszeilenwerkzeug, das mit dem Docker-Daemon interagiert.
Der Docker-Client ist sehr einfach; wir können direkt den Befehl docker eingeben, um alle Befehlsoptionen des Docker-Clients anzuzeigen.
example@example:~# docker

Sie können den Befehldocker command --helpverwenden, um besser zu verstehen, wie ein angegebener Docker-Befehl verwendet wird.
Wenn wir beispielsweise diedocker statsdetaillierte Verwendung der Befehle anzeigen möchten:
example@example:~# docker stats --help

Die folgenden sind gängige Docker-Client-Befehle:
| Befehl | Funktionen | Beispiel |
|---|---|---|
docker run | Einen neuen Container starten und einen Befehl ausführen | docker run -d ubuntu |
docker ps | Derzeit laufende Container auflisten | docker ps |
docker ps -a | Alle Container auflisten (einschließlich gestoppter Container) | docker ps -a |
docker build | Verwenden Sie ein Dockerfile, um das Image zu erstellen. | docker build -t my-image . |
docker images | Alle lokal gespeicherten Images auflisten | docker images |
docker pull | Ein Image aus einer Docker-Registry ziehen | docker pull ubuntu |
docker push | Ein Image in eine Docker-Registry pushen | docker push my-image |
docker exec | Einen Befehl in einem laufenden Container ausführen | docker exec -it container_name bash |
docker stop | Einen oder mehrere Container stoppen | docker stop container_name |
docker start | Gestoppte Container starten | docker start container_name |
docker restart | Einen Container neu starten | docker restart container_name |
docker rm | Einen oder mehrere Container entfernen | docker rm container_name |
docker rmi | Ein oder mehrere Images entfernen | docker rmi my-image |
docker logs | Container-Logs anzeigen | docker logs container_name |
docker inspect | Detaillierte Informationen über einen Container oder ein Image abrufen | docker inspect container_name |
docker exec -it | Das interaktive Terminal eines Containers betreten | docker exec -it container_name /bin/bash |
docker network ls | Alle Docker-Netzwerke auflisten | docker network ls |
docker volume ls | Alle Docker-Volumes auflisten | docker volume ls |
docker-compose up | Eine Multi-Container-Anwendung starten (ausdocker-compose.ymlDatei) | docker-compose up |
docker-compose down | Den Container stoppen und entfernen, der erstellt wurde vondocker-composeden Containern, Netzwerken usw., die gestartet werden | docker-compose down |
docker info | Detaillierte Informationen über das Docker-System anzeigen | docker info |
docker version | Versionsinformationen für den Docker-Client und -Daemon anzeigen | docker version |
docker stats | Ressourcennutzung von Containern in Echtzeit anzeigen | docker stats |
docker login | Bei der Docker-Registry anmelden | docker login |
docker logout | Von der Docker-Registry abmelden | docker logout |
Beschreibungen allgemeiner Optionen:
-d: Den Container im Hintergrund ausführen, zum Beispieldocker run -d ubuntu。-it: Den Container in einem interaktiven Terminal ausführen, zum Beispieldocker exec -it container_name bash。-t:Einem Image ein Tag zuweisen, zum Beispieldocker build -t my-image .。
Container-Verwendung
Image abrufen
Wenn wir das ubuntu-Image nicht lokal haben, können wir den Befehl docker pull verwenden, um das ubuntu-Image zu laden:
$ docker pull ubuntu
Container starten
Der folgende Befehl startet einen Container mit dem ubuntu-Image, mit dem Parameter, um den Container im Kommandozeilenmodus zu betreten:
$ docker run -it ubuntu /bin/bash

Parameter description:
- -i:Interaktiver Betrieb.
- -t: Terminal.
- ubuntu: ubuntu-Image.
- /bin/bash: Der Teil nach dem Image-Namen ist der Befehl. Hier wollen wir eine interaktive Shell, also verwenden wir /bin/bash.
Um das Terminal zu beenden, geben Sie einfachexit ein:
root@ed09e4490c57:/# exit

Einen gestoppten Container starten
Die Befehle zum Anzeigen aller Container sind wie folgt:
$ docker ps -a
Klicken Sie auf das Bild, um eine größere Version anzuzeigen:
Verwenden Sie docker start, um einen gestoppten Container zu starten:
$ docker start b750bbbcfd88

Im Hintergrund ausführen
In den meisten Szenarien möchten wir, dass der Docker-Dienst im Hintergrund läuft. Wir können-dden Ausführungsmodus des Containers angeben.
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
Klicken Sie auf das Bild, um eine größere Version anzuzeigen:
Hinweis:hinzugefügt-dDer Parameter gelangt standardmäßig nicht in den Container; um in den Container zu gelangen, müssen Sie den Befehl docker execverwenden (Dies wird unten vorgestellt.)
Einen Container stoppen
Der Befehl zum Stoppen eines Containers lautet wie folgt:
$ docker stop <容器 ID>

Ein gestoppter Container kann mit docker restart neu gestartet werden:
$ docker restart <容器 ID>

Container betreten
Bei Verwendung von-dWenn Sie einen Container mit dem Parameter starten, läuft der Container im Hintergrund. Wenn Sie zu diesem Zeitpunkt in den Container wechseln müssen, können Sie den folgenden Befehl verwenden, um hineinzugelangen:
-
docker attach: Ermöglicht die Interaktion mit der Standardeingabe (stdin), der Standardausgabe (stdout) und der Standardfehlerausgabe (stderr) des Containers.
-
docker exec:Es wird empfohlen, den Befehl docker exec zu verwenden, da dieser Befehl das Container-Terminal beendet, den Container aber nicht stoppt.
attach-Befehl
Beispiel für die Verwendung des Befehls docker attach:
$ docker attach 1e560fca3906
Hinweis:Wenn Sie aus diesem Container aussteigen, wird der Container gestoppt.
exec-Befehl
Beispiel für die Verwendung des Befehls docker exec:
docker exec -it 243c32535da7 /bin/bash
Hinweis:Wenn Sie aus diesem Container aussteigen, wird der Container nicht gestoppt, weshalb es empfohlen wird, dass alledocker exec verwenden。
Für weitere Parameterbeschreibungen verwenden Sie bittedocker exec --help, um sie mit dem Befehl anzuzeigen.
Container exportieren und importieren
Container exportieren
Wenn Sie einen lokalen Container exportieren möchten, können Sie den Befehldocker exportverwenden.
$ docker export 1e560fca3906 > ubuntu.tar
Exportieren Sie den Snapshot des Containers 1e560fca3906 in die lokale Datei ubuntu.tar.
Dadurch wird ein Snapshot des Containers in eine lokale Datei exportiert.
Einen Container-Snapshot importieren
Sie können docker import verwenden, um eine Container-Snapshot-Datei wieder als Image zu importieren. Das folgende Beispiel importiert die Snapshot-Datei ubuntu.tar in das Image test/ubuntu:v1:
$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1
Darüber hinaus können Sie auch importieren, indem Sie eine URL oder ein Verzeichnis angeben, zum Beispiel:
$ docker import http://example.com/exampleimage.tgz example/imagerepo
Container löschen
Um einen Container zu löschen, verwenden Sie den Befehldocker rm:
$ docker rm -f 1e560fca3906
Der folgende Befehl kann alle Container im beendeten Zustand bereinigen.
$ docker container prune
Eine Webanwendung ausführen
Die Container, die wir zuvor ausgeführt haben, hatten keinen bestimmten Zweck.
Als Nächstes versuchen wir, mit Docker eine Webanwendung zu erstellen.
Wir werden eine Python-Flask-Anwendung in einem Docker-Container ausführen, um eine Webanwendung auszuführen.
example@example:~# docker pull training/webapp # 载入镜像 example@example:~# docker run -d -P training/webapp python app.py

Parameter description:
-
-d:Führen Sie den Container im Hintergrund aus.
-
-P:Mappen Sie die im Container verwendeten Netzwerkports zufällig auf den von uns verwendeten Host.
Webanwendungscontainer anzeigen
Verwenden Sie docker ps, um die Container anzuzeigen, die wir ausführen:
example@example:~# docker ps CONTAINER ID IMAGE COMMAND ... PORTS d3d5e39ed9d3 training/webapp "python app.py" ... 0.0.0.0:32769->5000/tcp
Hier haben wir zusätzliche Portinformationen.
PORTS 0.0.0.0:32769->5000/tcp
Docker hat Port 5000 geöffnet (den Standard-Python-Flask-Port) und ihn auf Host-Port 32769 gemappt.
An diesem Punkt können wir über einen Browser auf die WEB-Anwendung zugreifen.

Wir können auch den -p-Parameter verwenden, um verschiedene Ports festzulegen:
example@example:~$ docker run -d -p 5000:5000 training/webapp python app.py
docker psLaufende Container anzeigen
example@example:~# docker ps CONTAINER ID IMAGE PORTS NAMES bf08b7f2cd89 training/webapp ... 0.0.0.0:5000->5000/tcp wizardly_chandrasekhar d3d5e39ed9d3 training/webapp ... 0.0.0.0:32769->5000/tcp xenodochial_hoov
Der interne Port 5000 des Containers ist auf Port 5000 auf unserem lokalen Host gemappt.
Netzwerkport-Verknüpfung
Durchdocker pskann der Befehl die Portzuordnungen des Containers anzeigen.dockerbietet außerdem eine weitere Abkürzung:docker port, verwenden Siedocker port, um den Host-Port anzuzeigen, auf den ein bestimmter Port eines angegebenen Containers (nach ID oder Name) abgebildet ist.
Der oben erstellte Webanwendungscontainer hat die IDbf08b7f2cd89mit dem Namenwizardly_chandrasekhar。
Ich kanndocker port bf08b7f2cd89oderdocker port wizardly_chandrasekharverwenden, um den Status der Portzuordnung des Containers anzuzeigen.
example@example:~$ docker port bf08b7f2cd89 5000/tcp -> 0.0.0.0:5000
example@example:~$ docker port wizardly_chandrasekhar 5000/tcp -> 0.0.0.0:5000
Die Protokolle der Webanwendung anzeigen
docker logs [ID oder Name] kann die Standardausgabe aus dem Containerinneren anzeigen.
example@example:~$ docker logs -f bf08b7f2cd89 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 - 192.168.239.1 - - [09/May/2016 16:30:37] "GET /favicon.ico HTTP/1.1" 404 -
-f:Lassen Siedocker logswie bei Verwendung vontail -f funktionieren.Ähnlich gibt es die Standardausgabe aus dem Containerinneren aus.
Aus dem Obigen können wir ersehen, dass die Anwendung Port 5000 verwendet und wir die Zugriffsprotokolle der Anwendung einsehen können.
Die Prozesse des Webanwendungscontainers anzeigen
Wir können auch docker top verwenden, um die im Container laufenden Prozesse anzuzeigen
example@example:~$ docker top wizardly_chandrasekhar UID PID PPID ... TIME CMD root 23245 23228 ... 00:00:00 python app.py
Die Webanwendung inspizieren
Verwendungdocker inspectUm die zugrunde liegenden Informationen von Docker anzuzeigen. Es gibt eine JSON-Datei zurück, die die Konfigurations- und Statusinformationen des Docker-Containers aufzeichnet.
example@example:~$ docker inspect wizardly_chandrasekhar
[
{
"Id": "bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",
"Created": "2018-09-17T01:41:26.174228707Z",
"Path": "python",
"Args": [
"app.py"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 23245,
"ExitCode": 0,
"Error": "",
"StartedAt": "2018-09-17T01:41:26.494185806Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
......
Webanwendungscontainer stoppen
example@example:~$ docker stop wizardly_chandrasekhar wizardly_chandrasekhar
Webanwendungscontainer neu starten
Für einen bereits gestoppten Container können wir den Befehl docker start verwenden, um ihn zu starten.
example@example:~$ docker start wizardly_chandrasekhar wizardly_chandrasekhar
docker ps -l fragt den zuletzt erstellten Container ab:
# docker ps -l CONTAINER ID IMAGE PORTS NAMES bf08b7f2cd89 training/webapp ... 0.0.0.0:5000->5000/tcp wizardly_chandrasekhar
Für laufende Container können wirdocker restartals Befehl zum Neustarten verwenden.
Webanwendungscontainer entfernen
Wir können den Befehl docker rm verwenden, um unnötige Container zu löschen.
example@example:~$ docker rm wizardly_chandrasekhar wizardly_chandrasekhar
Beim Löschen eines Containers muss sich der Container in einem gestoppten Zustand befinden, andernfalls wird der folgende Fehler gemeldet.
example@example:~$ docker rm wizardly_chandrasekhar Error response from daemon: You cannot remove a running container bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. Stop the container before attempting removal or force removeWeitere Erweiterungen




