GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So führen Sie Docker-Container aus

Wenn Sie neu bei Docker sind, fragen Sie sich vielleicht, wie Sie einen Docker-Container ausführen. Lassen Sie mich Ihnen das schnell zeigen.

Sie können einen Container mit dem folgenden Befehl erstellen und ausführen:

docker run -it -d --name container_name image_name bash

Und wenn Sie dann den Container betreten möchten (um Befehle innerhalb des Containers interaktiv auszuführen), können Sie den docker exec-Befehl verwenden:

docker exec -it container_ID_or_name /bin/bash

Hier ist ein Beispiel, in dem ich einen neuen Container mit Ubuntu als Basis-Image erstelle und dann den laufenden Ubuntu-Container betrete und den Befehl ls ausführe:

[email protected]:~$ docker run -it -d --name my_container ubuntu bash
7e77640bca686108ad415318278a1fa148e1c84d3b180276e19ec2b970ba9b67
[email protected]:~$ docker exec -it my_container bash
[email protected]:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[email protected]:/# 

Hat verloren? Mach dir keine Sorgen. Ich werde im Detail erklären, was die beiden obigen Befehle tun und was das -it ist Option im Docker-Befehl run and exec.

Wie man einen Docker-Container ausführt

Wenn Sie einen Docker-Container mit einem bestimmten Image und einem bestimmten Befehl ausführen möchten, können Sie dies folgendermaßen tun:

docker run -it -d --name container_name image_name bash

Der obige Befehl erstellt einen neuen Container mit dem angegebenen Namen aus dem angegebenen Docker-Image. Der Containername ist optional.

  • Die Option -i bedeutet, dass es sich um einen interaktiven Modus handelt (Sie können Befehle eingeben)
  • Die Option -t gibt Ihnen ein Terminal (damit Sie es verwenden können, als ob Sie ssh zum Betreten des Containers verwendet hätten).
  • Die Option -d (Daemon-Modus) lässt den Container im Hintergrund laufen.
  • Bash ist der Befehl, den es ausführt.

Der Grund für die Ausführung von bash als Befehl hier ist, dass der Container nicht sofort anhält.

[email protected]:~$ docker run -it -d ubuntu bash
82766613e7bc0ae98887bb1c776fa0de7f3c4771db9ac7ffc5db5c2c68ab497b
[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
82766613e7bc        ubuntu              "bash"              4 seconds ago       Up 3 seconds                            determined_blackburn

Im obigen Beispiel habe ich den Container nicht benannt, also wurde er nach dem Zufallsprinzip „determinated_blackburn.

“ genannt

Und wie Sie sehen können, führt der Container den Bash-Befehl im Hintergrund aus.

Docker Run vs. Start vs. Create:Unterschied erklärtFür einen Docker-Anfänger könnten Begriffe wie Docker-Start, Docker-Run und Docker-Erstellung verwirrend sein. Dieser Artikel erklärt den Unterschied anhand von Beispielen. Linux-HandbuchAbhishek Prakash

Was passiert, wenn Sie es nicht als Daemon ausführen (Option -d) im Hintergrund?

Wenn Sie die Option -d nicht verwenden, erstellt docker run einen neuen Container und Sie haben ein Terminal im interaktiven Modus, auf dem die Bash-Shell ausgeführt wird.

Wie Sie im Beispiel unten sehen können, wird der Container erstellt und ich befinde mich automatisch im Container (Bash-Shell).

Das Problem dabei ist, dass der Container stoppt, wenn Sie den Container verlassen.

[email protected]:~$ docker run -it ubuntu bash
[email protected]:/# echo this is a new container
this is a new container
[email protected]:/# exit
exit
[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
82766613e7bc        ubuntu              "bash"              2 minutes ago       Up 2 minutes                            determined_blackburn
[email protected]:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
6098c44f2407        ubuntu              "bash"              27 seconds ago      Exited (0) 8 seconds ago                       bold_benz
82766613e7bc        ubuntu              "bash"              2 minutes ago       Up 2 minutes                                   determined_blackburn

Was passiert, wenn du nur die Option -i (interaktiv) verwendest?

Angenommen, Sie verwenden nur die Option -i. In diesem Fall sehen Sie eine interaktive Eingabeaufforderung, aber wenn Sie die interaktive Eingabeaufforderung verlassen (mit Strg+D oder dem Exit-Befehl), verlassen Sie den Container und der Container wird angehalten.

[email protected]:~$ docker run -i ubuntu bash
echo "this is interactive"
this is interactive
[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[email protected]:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
b6b79a9f7789        ubuntu              "bash"              27 seconds ago      Exited (0) 9 seconds ago                       loving_galileo

Was passiert, wenn du nur die Option -t (terminal/tty) verwendest?

Das ist eine knifflige Situation, denn in diesem Fall haben Sie ein Pseudo-Terminal (wenn Sie die Option -t verwenden), aber Sie haben nicht die STDIN. Mit anderen Worten, Sie können nichts eingeben und keinen Befehl innerhalb des Containers ausführen, wie Sie es zuvor getan haben:

[email protected]:~$ docker run -t ubuntu bash
[email protected]:/# echo hello

^C^C
[email protected]:/# echo "hi"  
^C^C
[email protected]:/# exit
^C^C
[email protected]:/#

Im obigen Fall musste ich den Container von einem anderen Terminal aus stoppen.

So beenden Sie einen Docker-Container Dieser schnelle kleine Docker-Tipp zeigt, wie Sie einen Docker-Container beenden. Linux-HandbuchAbhishek Prakash

Wie man einen bestehenden Container ausführt

Der Befehl docker run erstellt einen neuen Container aus dem angegebenen Image. Aber was passiert, wenn Sie bereits einen Container haben?

Wenn Sie einen vorhandenen Container ausführen möchten, müssen Sie zuerst den Container starten und können dann die Option exec wie folgt verwenden:

docker start existing_container_ID_or_name
docker exec -it existing_container_ID_or_name /bin/bash

Dieses Beispiel wird für Ihr Verständnis besser sein:

[email protected]:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
b6b79a9f7789        ubuntu              "bash"              7 minutes ago       Exited (0) 7 minutes ago                       loving_galileo
[email protected]:~$ docker start b6b79a9f7789
b6b79a9f7789
[email protected]:~$ docker exec -it b6b79a9f7789 bash
[email protected]:/# echo "inside existing container"
inside existing container
[email protected]:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[email protected]:/# exit
exit
[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b6b79a9f7789        ubuntu              "bash"              8 minutes ago       Up 43 seconds                           loving_galileo

Warum immer Bash verwenden?

In allen obigen Beispielen habe ich bash oder /bin/bash als Befehl verwendet, der mit dem Container ausgeführt wird. Ich habe es verwendet, weil es eine Shell gibt und wenn Sie den Container ausführen, können Sie dank der Shell reguläre Befehle innerhalb des Containers ausführen, als ob Sie sich in einem normalen Linux-System befinden.

Sie können den Container bitten, jeden Befehl auszuführen, aber denken Sie daran, dass der Container existiert, sobald der Befehl abgeschlossen ist.

Wie Sie im folgenden Beispiel sehen können, gibt es diesmal keine interaktive Terminalsitzung. Sie befinden sich nicht mehr im Container, da der echo-Befehl fast sofort beendet wird.

[email protected]:~$ docker exec -it b6b79a9f7789 echo hello
hello
[email protected]:~$

Sie können tatsächlich auch andere Befehle ausführen und den Container anschließend betreten.

Im folgenden Beispiel habe ich einen neuen Container erstellt, der den nginx-Server auf Port 80 ausführt. Da ich ihn als Daemon mit der Option -d ausführe, läuft der nginx-Container weiter.

Und dann verwende ich den Befehl docker exec, um eine interaktive Bash-Shell zu erhalten, und betrete so den nginx-Container (der im Grunde ein mit nginx vorkonfiguriertes Linux ist).

[email protected]:~$ docker container run -it -d -p 8000:80 nginx
262ca5b17bf8aac5afbfdf66af6383be164cd8488f8cd64c06ee466b4d7462e9
[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
262ca5b17bf8        nginx               "nginx -g 'daemon of…"   9 seconds ago       Up 8 seconds        0.0.0.0:8000->80/tcp   zen_kilby
b6b79a9f7789        ubuntu              "bash"                   20 minutes ago      Up 12 minutes                              loving_galileo
[email protected]:~$ docker exec -it 262ca5b17bf8 bash
[email protected]:/# ls
bin  boot  dev	etc  home  lib	lib64  media  mnt  opt	proc  root  run  sbin  srv  sys  tmp  usr  var
[email protected]:/# 

Ich hoffe, Sie haben ein besseres Verständnis dafür, wie Docker-Container ausgeführt werden und warum bestimmte Optionen verwendet werden.

Wenn Sie Fragen oder Vorschläge haben, lassen Sie es mich im Kommentarbereich wissen.


Docker
  1. Wie führe ich ein Programm in einem Docker-Container aus?

  2. So führen Sie MySQL in einem Docker-Container aus

  3. So führen Sie einen Befehl in einem laufenden Docker-Container aus

  4. So teilen Sie Daten zwischen Docker-Containern

  5. So listen Sie Docker-Container auf

So führen Sie Grafana in einem Docker-Container aus

So führen Sie SSH in Docker-Container ein [Schritt für Schritt]

So entfernen Sie Docker-Container

So stoppen Sie Docker-Container

So benennen oder umbenennen Sie Docker-Container

So verwalten Sie Docker-Container