Android

Docker-Befehl mit Beispielen

Event Store - Message Broker für Event Sourcing und Domain Driven Design DDD (German)

Event Store - Message Broker für Event Sourcing und Domain Driven Design DDD (German)

Inhaltsverzeichnis:

Anonim

Docker ist eine Plattform, mit der Sie Anwendungen als tragbare, autarke Container entwickeln, testen und bereitstellen können, die praktisch überall ausgeführt werden.

Der docker run Befehl erstellt einen Container aus einem bestimmten Image und startet den Container mit einem bestimmten Befehl. Dies ist einer der ersten Befehle, mit denen Sie sich vertraut machen sollten, wenn Sie mit Docker arbeiten.

Wir werden das offizielle Nginx-Image verwenden, um verschiedene Möglichkeiten zum Ausführen eines Docker-Containers zu zeigen.

Docker-Befehl ausführen

Der docker run Befehl hat die folgende Form:

docker run IMAGE

Der Name des Images, aus dem der Container erstellt werden soll, ist das einzige erforderliche Argument für den Befehl docker run . Wenn das Image auf dem lokalen System nicht vorhanden ist, wird es aus der Registrierung abgerufen.

Wenn kein Befehl angegeben wird, wird der in den Anweisungen CMD oder ENTRYPOINT der Docker- ENTRYPOINT Befehl ausgeführt, wenn der Container ausgeführt wird.

Ab Version 1.13 wurde die Docker-CLI neu strukturiert und alle Befehle wurden unter dem Objekt gruppiert, mit dem sie interagieren.

Da der Befehl run mit Containern interagiert, ist er jetzt ein Unterbefehl von docker container . Die Syntax des neuen Befehls lautet wie folgt:

docker container run IMAGE

Die alte Syntax vor 1.13 wird weiterhin unterstützt. Unter der Haube ist docker run Befehl docker run ein Alias ​​für docker container run des docker container run . Benutzer werden aufgefordert, die neue Befehlssyntax zu verwenden.

Eine Liste aller docker container run finden Sie auf der Docker-Dokumentationsseite.

Führen Sie den Container im Vordergrund aus

Wenn für den docker run Befehl docker run keine Option angegeben ist, wird der Root-Prozess standardmäßig im Vordergrund gestartet. Dies bedeutet, dass die Standardeingabe, die Standardausgabe und der Standardfehler des Stammprozesses an die Terminalsitzung angehängt werden.

docker container run nginx

Die Ausgabe des Nginx-Prozesses wird auf Ihrem Terminal angezeigt. Da keine Verbindung zum Webserver besteht, ist das Terminal leer.

Um den Container zu stoppen, beenden Sie den laufenden Nginx-Prozess, indem Sie CTRL+C drücken.

Führen Sie den Container im getrennten Modus aus

Starten Sie den Container in einem getrennten Modus, damit er beim Beenden der Terminalsitzung weiter ausgeführt wird. Dies ähnelt dem Ausführen eines Linux-Prozesses im Hintergrund.

Verwenden Sie die Option -d , um einen getrennten Container zu starten:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

Der getrennte Container stoppt, wenn der Root-Prozess beendet wird.

Sie können die ausgeführten Container mit dem Befehl docker container ls auflisten.

Verwenden Sie den Befehl docker container attach um Ihr Terminal an den docker container attach .

Entfernen Sie den Behälter nach dem Verlassen

Wenn der Container beendet wird, bleibt sein Dateisystem standardmäßig auf dem Hostsystem erhalten.

Mit --rm Optionen --rm wird docker run Befehl --rm docker run --rm , den Container beim automatischen --rm zu entfernen:

docker container run --rm nginx

Das Nginx-Image ist möglicherweise nicht das beste Beispiel, um das Dateisystem des Containers nach dem Verlassen des Containers zu bereinigen. Diese Option wird normalerweise für Vordergrundcontainer verwendet, die kurzfristige Aufgaben ausführen, z. B. Tests oder Datenbanksicherungen.

Legen Sie den Containernamen fest

In Docker wird jeder Container anhand seiner UUID und seines Namens identifiziert. Wenn nicht explizit festgelegt, wird der Name des Containers standardmäßig automatisch vom Docker-Daemon generiert.

Verwenden Sie die Option --name , um dem Container einen benutzerdefinierten Namen zuzuweisen:

docker container run -d --name my_nginx nginx

Der Containername muss eindeutig sein. Wenn Sie versuchen, einen anderen Container mit demselben Namen zu starten, wird eine ähnliche Fehlermeldung angezeigt:

docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.

Führen Sie docker container ls -a um alle docker container ls -a und deren Namen anzuzeigen:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx

Die aussagekräftigen Namen sind nützlich, um auf den Container innerhalb eines Docker-Netzwerks oder beim Ausführen von Docker-CLI-Befehlen zu verweisen.

Container-Ports veröffentlichen

Wenn keine Ports veröffentlicht sind, kann standardmäßig nur von innerhalb des Containers auf den im Container ausgeführten Prozess zugegriffen werden.

Beim Veröffentlichen von Ports werden Container-Ports den Ports des Host-Computers zugeordnet, sodass die Ports für Dienste außerhalb von Docker verfügbar sind.

Verwenden Sie zum Veröffentlichen eines Ports die Optionen -p wie folgt:

-p host_ip:host_port:container_port/protocol

  • Wenn kein host_ip angegeben wird, wird standardmäßig 0.0.0.0 protocol Wenn kein protocol angegeben wird, wird standardmäßig TCP verwendet. Verwenden Sie zum Veröffentlichen mehrerer Ports mehrere -p Optionen.

Um den TCP-Port 80 (nginx) im Container dem Port 8080 auf der Host-Localhost-Schnittstelle zuzuordnen, führen Sie Folgendes aus:

docker container run --name web_server -d -p 8080:80 nginx

Sie können überprüfen, ob der Port veröffentlicht wurde, indem Sie in Ihrem Browser http://localhost:8080 öffnen oder auf dem Docker-Host den folgenden Befehl curl ausführen:

curl -I

Die Ausgabe sieht ungefähr so ​​aus:

HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes

Freigeben von Daten (Bereitstellen von Volumes)

Wenn ein Container angehalten wird, werden alle vom Container generierten Daten entfernt. Docker-Volumes sind die bevorzugte Methode, um die Daten dauerhaft zu speichern und für mehrere Container freizugeben.

Verwenden Sie zum Erstellen und Verwalten von Volumes die Optionen -p wie folgt:

-v host_src:container_dest:options

  • Der host_src kann ein absoluter Pfad zu einer Datei oder einem Verzeichnis auf dem Host oder einem benannten Volume sein. Der container_dest ist ein absoluter Pfad zu einer Datei oder einem Verzeichnis auf dem Container). Wenn keine Option angegeben ist, wird standardmäßig rw .

Um zu erklären, wie dies funktioniert, erstellen wir ein Verzeichnis auf dem Host und index.html eine index.html Datei hinzu:

mkdir public_html echo "Testing Docker Volumes" > public_html/index.html

public_html Nächstes das public_html in /usr/share/nginx/html im Container ein:

docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx

Anstatt den absoluten Pfad zum public_html anzugeben, verwenden wir den Befehl $(pwd) , der das aktuelle Arbeitsverzeichnis ausgibt.

Wenn Sie nun http://localhost:8080 in Ihren Browser index.html , sollten Sie den Inhalt der Datei index.html . Sie können auch curl :

curl

Testing Docker Volumes

Führen Sie den Container interaktiv aus

Verwenden Sie bei interaktiven Prozessen wie bash die Optionen -i und -t , um den Container zu starten.

Die Option -it weist Docker an, die Standardeingabe an das Terminal anzuhängen und eine Pseudotty zuzuweisen:

docker container run -it nginx /bin/bash

Die Bash-Shell des Containers wird an das Terminal angehängt und die Eingabeaufforderung ändert sich:

root@1da70f1937f5:/#

Jetzt können Sie mit der Shell des Containers interagieren und einen beliebigen Befehl ausführen.

In diesem Beispiel haben wir einen Befehl ( /bin/bash ) als Argument für den docker run , der anstelle des in der Docker-Datei angegebenen Befehls ausgeführt wurde.

Fazit

Docker ist der Standard für das Packen und Bereitstellen von Anwendungen und eine wesentliche Komponente von CI / CD, Automatisierung und DevOps.

Mit dem Befehl docker container run run werden Docker-Container erstellt und ausgeführt.

Docker