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

Verbessern Sie Ihr DevOps-Spiel mit diesen Beispielen für Docker-Ausführungen

Der docker run command ist einer der ersten Befehle, die Sie nach der Installation von Docker lernen sollten. Aber haben Sie sich gefragt, wie Sie docker run sonst noch verwenden können? Befehle zum effektiven Bereitstellen und Verwalten Ihrer Anwendungen? Gehen Sie ein Beispiel für eine Docker-Ausführung durch (docker run) wäre großartig. Aber raten Sie mal, in diesem Tutorial erfahren Sie mehr!

In diesem Artikel erfahren Sie, wie Sie Ihr DevOps-Spiel mit einigen Docker-Laufbeispielen verbessern können, die Sie zur Verbesserung Ihres Arbeitsablaufs verwenden können.

Lesen Sie weiter und gehen Sie nie wieder verloren, wenn Sie Docker-Befehle erneut ausführen!

Voraussetzungen

Dieses Tutorial wird eine praktische Demonstration sein. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes haben.

  • Eine Linux-Maschine – Diese Demo verwendet Ubuntu 20.04, aber jede Linux-Distribution funktioniert. So installieren Sie Ubuntu.
  • Docker auf der Maschine installiert.
  • Ein Benutzerkonto mit Root-/sudo-Berechtigungen.

Docker-Ausführungsbeispiel Nr. 1:Interaktives Ausführen eines Containers

Sie betreiben Container vielleicht schon seit einiger Zeit, aber wussten Sie, dass es einige bevorzugte Situationen gibt, um einen Docker-Container im interaktiven Modus auszuführen?

Mit Docker können Sie Container im interaktiven Modus ausführen, wenn:

  • Sie beheben ein Problem und müssen die Ausgabe der im Container ausgeführten Befehle sehen.
  • Sie experimentieren mit einem neuen Docker-Befehl und möchten die Befehlsergebnisse in Echtzeit sehen.
  • Sie führen einen Prozess im Container aus, der eine manuelle Eingabe von Ihnen erfordert.

Beim Ausführen eines Docker-Run-Beispiels ( docker run ) ohne Optionen verwenden, besteht das Standardverhalten darin, den Container im interaktiven Modus auszuführen. Wenn Sie einen Container im interaktiven Modus ausführen, können Sie die Ausgabe der Befehle, die Sie im Container ausführen, auf Ihrem Terminal sehen, während sie ausgeführt werden.

1. Führen Sie den folgenden Befehl aus, um einen Container auszuführen (my_nginx ) im interaktiven Modus und veröffentlichen (-p ) Port 80 des Containers an den Port 8080 Ihres Host-Rechners. Sie können den Namen des Containers nach Belieben ändern.

Der Befehl verwendet den nginx image aus dem Docker-Hub, um den Container zu erstellen und automatisch zu entfernen (--rm ) den Container, wenn der Container gestoppt wird.

docker container run --rm --name my_nginx -p 8080:80 nginx

Da Sie einen Nicht-Root-Benutzer mit verwenden sudo-Berechtigungen , beim Ausführen von Docker-Befehlen muss sudo nicht vorangestellt werden

Sie sehen die Protokollausgabe des nginx-Webservers direkt in Ihrem Terminal, wie unten gezeigt.

Das Ausführen eines interaktiven Containers bietet viele Informationen, aber vielleicht ziehen Sie es vor, Informationen herauszufiltern, die Sie nur benötigen. Hängen Sie in diesem Fall das Flag -a an und geben Sie einen Standard-Stream (-a) für den Container an, wie unten gezeigt.

Die Angabe eines Standardstreams weist Docker an, nur die stdout-Ausgabe des my_nginx-Containers anzuzeigen.

docker container run -a stdout --rm --name my_nginx -p 8080:80 nginx

Wenn Sie das Flag -a nicht angeben, werden stdin, stdout und stderr standardmäßig alle an das Terminal angehängt. Das Flag -a akzeptiert die folgenden Argumente und hilft, Ihre Ausgabe zu entrümpeln, damit nur die relevanten Informationen angezeigt werden:

  • -a stdin – hängt stdin an an den Container, wobei alle Eingaben auf Ihrem Terminal an den Container gesendet werden.
  • -a stdout – hängt stdout an an den Container und zeigt alle vom Container generierten Ausgaben auf Ihrem Terminal an.
  • -a stderr – hängt stderr an an den Container und zeigt alle vom Container generierten Fehlermeldungen an Ihrem Terminal an.

Sie können unten sehen, dass die Ausgabe jetzt weniger überladen ist.

2. Öffnen Sie als Nächstes ein anderes Terminal und führen Sie docker ps aus Befehl, um die Liste der Container anzuzeigen, die auf Ihrem Hostcomputer ausgeführt werden.

docker ps

Unten sehen Sie Ihren my_nginx-Container in der Ausgabe aufgelistet.

3. Führen Sie abschließend curl aus Befehl unten, um den Nginx-Webserver zu testen.

curl http://localhost:8080

Sie können unten sehen, dass die Protokollausgabe des nginx-Webservers in Ihrem Terminal (linke Seite) angezeigt wird, sobald die Ausgabe generiert wird.

Docker-Ausführungsbeispiel Nr. 2:Ausführen des Containers im getrennten Modus

Sie haben gerade gelernt, Ihre Container im interaktiven Modus auszuführen und die Ausgabe in Ihrem Terminal zu sehen, während sie ausgeführt werden. Wenn Sie jedoch nicht nach Ausgaben des Containers in Ihrem Terminal suchen, können Sie den Container im getrennten Modus ausführen.

Im getrennten Modus läuft der Container im Hintergrund und Sie sehen die Ausgabe der Befehle, die Sie im Container ausführen, nicht in Ihrem Terminal.

Führen Sie den folgenden Befehl aus, um einen Container auszuführen (my_nginx ) im getrennten Modus (-d ).

docker container run --rm --name my_nginx -d -p 8080:80 nginx

Sobald der Container im getrennten Modus ausgeführt wird, leitet Docker die Ausgabe an die Protokolle des Containers um. Zu diesem Zeitpunkt wird der my_nginx-Container in den Hintergrundbefehlsausgaben ausgeführt, wie unten gezeigt.

Sie können auch die eindeutige Container-ID in der Ausgabe sehen. Sie können diese ID verwenden, um den Container anzuhängen oder den Container zu starten/stoppen/entfernen.

Führen Sie nun docker ps aus Befehl, um die Liste der Container anzuzeigen, die auf Ihrem Hostcomputer ausgeführt werden.

Da der Container (my_nginx) im Hintergrund läuft, können Sie alle Befehle ausführen, ohne ein neues Terminal zu öffnen.

docker ps

Sie sehen die folgende Ausgabe, die zeigt, dass die Datei my_nginx Container läuft jetzt im getrennten Modus.

Wenn Ihre NGINX-Webserver aus irgendeinem Grund nicht richtig funktionieren, während Ihr Container im getrennten Modus ausgeführt wird, müssen Sie Ihr Terminal an den laufenden Container anschließen. Sie können an einen laufenden Container anhängen, indem Sie docker attach ausführen Befehl gefolgt von der ID oder dem Namen des Containers (my_nginx ), wie unten gezeigt.

docker container attach my_nginx

Wie Sie unten sehen, haben Sie sich erfolgreich mit my_nginx verbunden Container. Jetzt können Sie die Ursache des Problems herausfinden und beheben.

Erstellen eines Bridge-Netzwerks

Einer der Vorteile der Verwendung von Docker besteht darin, dass es Ihre Container-Netzwerke für Sie verwaltet. Mit Docker müssen Sie sich keine Gedanken über die Konfiguration Ihres Netzwerks machen. Docker richtet das Netzwerk automatisch für Sie ein. Dazu gehören das Erstellen von Netzwerken, das Verbinden von Containern mit Netzwerken und das Verwalten von IP-Adressen.

Sehen Sie, wie Docker das Netzwerk für Ihre Container einrichtet und ein Bridge-Netzwerk erstellt.

1. Führen Sie den docker aus Befehl unten, um einen Ubuntu-Container mit vollem Zugriff auf die Netzwerkressourcen auf dem Hostcomputer auszuführen (--net=host ), was praktisch zum Debuggen ist.

Die Optionen -ti weisen Docker an, den Container im interaktiven Modus zu halten. Sie müssen diese Option angeben, wenn Sie mit der Bash-Shell arbeiten. Das Ausführen dieses Befehls wie im Abschnitt „Interaktives Ausführen eines Containers“ funktioniert nicht.

docker run -ti --rm --net=host ubuntu bash

2. Führen Sie als nächstes das apt update aus Befehl im Container, um die Paketliste zu aktualisieren.

apt update -y

3. Führen Sie den folgenden Befehl zum install aus die bridge-utils Paket. Dieses Paket wird zum Erstellen und Verwalten von Bridge-Geräten benötigt.

apt install bridge-utils

4. Führen Sie nun die folgende brctl show aus Befehl, um die Bridge-Netzwerke auf Ihrem System aufzulisten.

brctl show

Sie sehen eine Liste von Bridge-Netzwerken ähnlich der folgenden Ausgabe. Beachten Sie, dass es ein Bridge-Gerät namens docker0 gibt. Dieses Netzwerk ist das virtuelle Netzwerk, das Docker verwendet, um virtuelle Netzwerke für Ihre Container zu erstellen, wenn Sie kein benutzerdefiniertes virtuelles Bridge-Netzwerk angeben.

5. Öffnen Sie ein anderes Terminal und führen Sie das docker network aus Befehl unten, um ein neues Netzwerk zu erstellen. Sie können das Netzwerk anders benennen, aber in diesem Tutorial heißt das Netzwerk my-ata-network .

docker network create my-ata-network

Sie sehen eine eindeutige Netzwerk-ID, die zurückgegeben wird, wie unten gezeigt. Notieren Sie sich die Netzwerk-ID, da Sie sie später mit der neuen Bridge-Netzwerk-ID abgleichen (Schritt 6).

6. Kehren Sie zu Ihrem Ubuntu-Container-Terminal zurück und führen Sie den folgenden Befehl aus, um das Bridge-Netzwerk aufzulisten (show ) auf Ihrem System erneut.

brctl show

Wie unten gezeigt, sehen Sie in der Ausgabe ein neues Bridge-Netzwerk mit dem Namen br-d9ba7f94ac73. Sie sehen, dass der Teil d9ba7f94ac73 mit der in Schritt 5 zurückgegebenen Netzwerk-ID übereinstimmt.

Diese Ausgabe bestätigt, dass Docker ein neues Bridge-Netzwerk namens my-ata-network erstellt und den Ubuntu-Container zu diesem Bridge-Netzwerk hinzugefügt hat.

Docker-Ausführungsbeispiel Nr. 3:Ausführen eines Containers mit Portweiterleitung

Docker verwendet die integrierten Firewall-Funktionen des Linux-Kernels, nämlich die iptables Befehl, um Firewall-Regeln zu erstellen. Diese Firewall-Regeln steuern, wann Pakete zwischen den Bridges gesendet werden und somit für die an diese Bridges angeschlossenen Container verfügbar werden.

Sehen Sie sich an, wie Docker mit iptables die Portweiterleitung unter der Haube bewerkstelligt .

1. Führen Sie den folgenden Befehl aus, um einen privilegierten Ubuntu-Container zu starten (--privileged=true ) mit vollem Zugriff auf alle Netzwerkressourcen auf dem Host, einschließlich Portweiterleitung.

docker run -ti --rm --net=host --privileged=true ubuntu bash

2. Führen Sie als Nächstes den folgenden Befehl zum update aus die Paketliste und install iptables .

apt update && apt install iptables

3. Führen Sie iptables aus Befehl unten auf dem privilegierten Ubuntu-Container zum Auflisten (-L ) der nat Tabellenregel.

iptables -n -L -t nat

Was Sie unten sehen können, sind nur die Standardregeln, die mit Ubuntu ausgeliefert werden.

4. Führen Sie nun den folgenden Befehl aus und führen Sie ein Ubuntu aus Container mit Portweiterleitung zu Ihrem Host auf Port 8080 .

docker run -ti --rm -p 8080:8080 ubuntu bash

5. Führen Sie abschließend die iptables erneut aus Befehl unten, um den nat aufzulisten Tabellenregel.

iptables -n -L -t nat

Beachten Sie unten, dass eine neue Regel hinzugefügt wird, die alle Pakete vom Port des Hosts (8080) an den Port des Containers (8080) weiterleitet. Sie können sehen, dass das Offenlegen von Ports in Docker lediglich eine Portweiterleitung auf der Netzwerkschicht ist.

Erstellen eines benutzerdefinierten Netzwerks

Ihre Docker DCA-Prüfung fordert Sie möglicherweise auf, Bridge-Netzwerke für Entwickler zu erstellen. Wie? Verwenden des docker network Befehl können Sie ein Bridge-Netzwerk (ein benutzerdefiniertes virtuelles Netzwerk) erstellen. Das docker network bietet eine Möglichkeit für Container in verschiedenen Netzwerken zu kommunizieren.

1. Führen Sie das docker network aus Befehl unten, um ein neues Bridge-Netzwerk mit dem Namen ata-app-net zu erstellen über die bridge Treiber.

docker network create --driver bridge ata-app-net

2. Führen Sie als Nächstes den folgenden Befehl aus, um (ls ) die Bridge-Netzwerke auf Ihrem Host.

docker network ls

Beachten Sie unten, dass ein neues benutzerdefiniertes Bridge-Netzwerk namens ata-app-net erstellt wurde.

3. Führen Sie den folgenden Befehl aus, um anzuzeigen (inspect ) die Details des ata-app-net Brückennetzwerk.

docker network inspect ata-app-net

Beachten Sie unten, dass das Bridge-Netzwerk ata-app-net ein einzelnes Subnetz hat (172.21.0.0/16). Dieses Subnetz wird automatisch zugewiesen, wenn Sie ein Bridge-Netzwerk erstellen. Sie können auch den Treiber (Bridge) sehen, der dem Bridge-Netzwerk zugeordnet ist.

4. Führen Sie nun dieses Docker-Laufbeispiel aus ( docker run ) Befehl unten, um ein paar Alpine-Container in Ihren benutzerdefinierten Bridge-Netzwerken auszuführen und zu versuchen, sich gegenseitig zu pingen.

docker run -dit --name ata-app1 --network ata-app-net alpine ash

5. Führen Sie docker ps aus Befehl, um die laufenden Container aufzulisten.

docker ps

Wie Sie unten sehen, laufen jetzt beide Container.

6. Führen Sie den Docker-Netzwerkbefehl unten erneut aus, um inspect Ihr ata-app-net Bridge-Netzwerk.

docker network inspect ata-app-net

Sie können unten sehen, dass Ihre beiden Container jetzt zusammen mit ihren IP-Adressen und Namen mit dem ata-app-net Bridge-Netzwerk verbunden sind.

7. Führen Sie nun docker container attach aus unten, um eine Verbindung zu Ihrer ata-app1 herzustellen Container.

docker container attach ata-app1

8. Ping an ata-app2 um zu überprüfen, ob die Container miteinander kommunizieren können.

ping ata-app2

9. Als nächstes pingen Sie google.com um zu überprüfen, ob ata-app1 kann mit dem Internet kommunizieren.

ping google.com

10. Wiederholen Sie abschließend die Schritte sieben bis neun, um eine Verbindung zu ata-app2 herzustellen und pingen Sie ata-app1 .

Achten Sie darauf, STRG + PQ zu drücken, um sich vom ata-app1-Container zu trennen und ihn am Laufen zu halten. Andernfalls wird der Container angehalten, und wenn Sie ata-app1 von ata-app2 aus pingen, schlägt der Ping-Befehl fehl.

docker container attach ata-app2
ping ata-app1
ping google.com

Unten sehen Sie, dass alle Pakete gesendet und empfangen werden, was bestätigt, dass beide Container miteinander und mit dem Internet kommunizieren können.

Schlussfolgerung

In diesem Tutorial haben Sie viele Beispiele für Docker-Ausführungen gelernt ( docker run ) können Sie verwenden, um die Bereitstellung und Verwaltung Ihrer Anwendungen zu vereinfachen. Sie können Docker jetzt effektiver nutzen, indem Sie verstehen, wie docker run s und wie Docker das Netzwerk für Ihre Container einrichtet.

An diesem Punkt wissen Sie bereits, wie Sie das Docker-Ausführungsbeispiel nutzen können ( docker run ) Befehle, um Ihr DevOps-Spiel zu verbessern.

Warum stellen Sie Ihre Anwendungen mit diesem Wissen nicht effizienter und skalierbarer bereit?


Docker
  1. Installieren Sie ModSecurity mit Apache in einem Docker-Container

  2. So führen Sie Nginx in einem Docker-Container aus:Eine Schritt-für-Schritt-Anleitung

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

  4. So stellen Sie einen Nginx-Container mit Docker auf Linode bereit

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

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

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

Tutorial „Erste Schritte mit Azure Docker“.

So kopieren Sie Dateien mit Docker cp in Ihren Docker-Container

So führen Sie Docker-Container aus

Docker-Container im Hintergrund ausführen (getrennter Modus)