So verwenden Sie den Docker Run-Befehl [Beginners Guide]

Der Befehl docker run wird verwendet, um Container zu starten und auszuführen. Erlernen der Verwendung docker run command ist eine Empfehlung für jeden Entwickler, der sich mit Docker vertraut machen möchte.

Bei der Arbeit mit Docker verwenden Softwareentwickler meist den Befehl ‘docker run’, um:

  • Erstellen Sie einen Container aus einem bestimmten Docker-Image
  • Führen Sie einen Container mit einem optionalen Namen aus
  • Führen Sie einen Container im Vordergrund aus
  • Führen Sie einen Container im getrennten Modus aus
  • Führen Sie einen Container im interaktiven Modus aus
  • Veröffentlichen Sie Container-Ports auf dem Host-Computer
  • Daten zwischen Containern und Host-Rechner teilen
  • Entferne einen Behälter, sobald er angehalten hat

Docker-Ausführungsbefehl

Die Syntax des Befehls:

docker run [options] image-name [command] [arg...]

Um einen Docker-Container auszuführen, können Sie einfach den folgenden Befehl ausführen, vorausgesetzt, Sie haben Docker bereits installiert:

docker run image-name

Wo:

image-name kann ein Docker-Image auf Ihrem lokalen Computer sein oder aus der Online-Registrierung wie Docker Hub und Quay.io abgerufen werden.

Im Folgenden example, führen Sie einen Container von einem öffentlichen Image ‘hello-world’ aus, das sich auf Docker Hub befindet.

$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Wenn Sie den Container zum ersten Mal ausführen, ruft der Docker-Daemon das Image ‘hello-world’ vom Docker-Hub ab. Dann erstellt es einen neuen Container aus diesem Image und streamt die Ausgabe an Ihr Terminal. Von nun an wurde das Image auf Ihren lokalen Computer heruntergeladen. Sie können alle Docker-Images auflisten, indem Sie Folgendes ausführen:

$ sudo docker image ls

Ausgabe:

REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 4e2eef94cd6b 9 days ago 73.9MB
nginx latest 4bb46517cac3 2 weeks ago 133MB
alpine latest a24bb4013296 3 months ago 5.57MB
truongnh1992/go latest 57b4af3567ac 3 months ago 7.41MB
hello-world latest bf756fb1ae65 7 months ago 13.3kB

Wenn Sie dieses Bild das nächste Mal ausführen, ist es schneller als das erste und Sie können die IMAGE-ID anstelle des Bildnamens verwenden. Für example:

$ sudo docker run bf756fb1ae65

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Notiz: Ab der Docker-Version 1.13 verwenden wir aufgrund der neuen Syntax des Releases ‘docker container run’ anstelle von ‘docker run’.

Es wird empfohlen, den Befehl docker run mit voranzustellen sudo oder der andere Workaround ohne sudo.

Führen Sie einen Container mit einem definierten Namen aus

Wenn Sie einen Container mit der grundlegenden Syntax ‘docker container run’ ausführen, generiert der Docker zufällig einen Namen für jeden Container, wie Sie unten sehen können:

$ sudo docker container ls -a

Ausgabe:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
941b67537bbb ubuntu "/bin/bash" 4 seconds ago Exited (0) 3 seconds ago musing_elgamal
a7b197b56d2c bf756fb1ae65 "/hello" About a minute ago Exited (0) About a minute ago determined_faraday
0b40e331161e hello-world "/hello" 4 minutes ago Exited (0) 4 minutes ago nervous_sammet

Wenn Sie Ihrem Container explizit einen Namen zuweisen möchten, führen wir den Befehl mit der folgenden Syntax aus:

$ docker container run --name container-name image-name

Für example:

$ sudo docker container run --name hello-linoxide hello-world

Ausgabe:

$ sudo docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eb2f0c9cc658 hello-world "/hello" 21 seconds ago Exited (0) 20 seconds ago hello-linoxide
...

Führen Sie einen Container im Vordergrund aus

Wenn wir mit Docker-Containern arbeiten, gibt es zwei Ausführungsmodi: angehängter Modus und getrennter Modus.

Standardmäßig führt Docker den Container im Vordergrund aus. Dies bedeutet, dass der Containerprozess an die Terminalsitzung angehängt wird und die Ausgabe anzeigt. Wenn der Container noch ausgeführt wird, wird die Eingabeaufforderung nicht zurückgegeben.

Für example:

$ sudo docker container run nginx

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Configuration complete; ready for start up

Führen Sie einen Container im getrennten Modus aus

Wenn Sie diesen Container im Hintergrundprozess (abgelöster Modus) ausführen möchten, verwenden wir den -d Möglichkeit:

$ sudo docker container run -d nginx
4fd8f2933eafaebcc75ef4fe6d0a961f76d8fdbf64383caff7f422a25c60951f

Führen Sie einen Container im interaktiven Modus aus

Docker unterstützt das Ausführen eines Containers im interaktiven Modus. Dank dieser Funktion können Sie Befehle innerhalb eines Containers mit einer Shell ausführen.

Verwendung der -it Option mit ‘/bin/bash’ oder ‘/bin/sh’, um den interaktiven Modus zu starten, für example:

$ sudo docker container run -it ubuntu /bin/bash
root@d99e70bff763:/# echo $0
/bin/bash

$ sudo docker container run -it ubuntu /bin/sh
# echo $0
/bin/sh

Portweiterleitung eines Containers

Um auf den Prozess zuzugreifen, der in einem Container ausgeführt wird, müssen Sie standardmäßig in ihn hineingehen. Wenn Sie von außen darauf zugreifen möchten, öffnen wir einen Port. Durch das Veröffentlichen von Ports können Sie die Container-Ports den Ports auf Ihrem Host-Rechner zuordnen, indem Sie -p Möglichkeit wie folgt:

$ dock container run -p host-port:container-port image

Für example, um Port 80 des Containers nginx dem Port 8080 auf dem Host-Rechner zuzuordnen, führen Sie Folgendes aus:

$ sudo docker container run -d -p 8080:80 nginx
cd85a291dab1ff92fa2ee6275446f758baa8322de2b706f7b581a54825142c5b

Jetzt verwenden wir ‘curl’ um den Inhalt von localhost abzurufen:8080

$ curl localhost:8080

Montagevolumen eines Containers

Daten in einem Container sind kurzlebig, sie sind nicht mehr vorhanden, wenn der Container gestoppt wird. Wenn Sie die Daten dauerhaft im Container behalten möchten, müssen Sie diese auf einem freigegebenen Speichervolume mounten.

Lass uns verwenden -v Option zum Mounten von Volumes wie folgt:

$ docker container run -v host-machine-location:container-storage image

Für example, mounten wir das ‘share-data’-Verzeichnis auf Ihrem Host-Rechner in ‘/home’ im Container:

$ mkdir share-data/
$ echo "Hello linoxide readers" > share-data/test.txt
$ sudo docker container run -it -v $(pwd)/share-data:/home alpine

Ausgabe:

/ # ls /home/
test.txt
/ # cat /home/test.txt
Hello linoxide readers

Entferne einen Behälter, sobald er angehalten hat

Wenn ein Container stoppt, verbleibt sein Dateisystem standardmäßig weiterhin auf dem Hostcomputer. Sie verbrauchen viel Speicherplatz. Wenn Sie den Container nach dem Beenden automatisch entfernen möchten, verwenden Sie --rm Möglichkeit:

$ docker container run --rm image

Für example, Ausführen eines Docker-Containers ohne --rm Möglichkeit:

$ sudo docker container run ubuntu
$ sudo docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ad348fb61463 ubuntu "/bin/bash" 8 seconds ago Exited (0) 6 seconds ago distracted_hoover

Beim Benutzen --rm Option, wenn der Container angehalten wird, wird er automatisch entfernt.

$ sudo docker container run --rm ubuntu
$ sudo docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Fazit

Docker ist eine Open-Source-Plattform, die es Softwareentwicklern ermöglicht, containerisierte Anwendungen zu erstellen, bereitzustellen und zu verwalten. Docker ist ein wirklich leistungsstarkes Tool für jeden Entwickler, insbesondere für DevOps-Ingenieure. Die Beherrschung der Verwendung von ‘Docker Container Run’-Befehlen ist der Schlüssel, um die Leistungsfähigkeit von Docker zu entdecken.

Vielen Dank fürs Lesen und hinterlassen Sie bitte Ihren Vorschlag im Kommentarbereich unten.