Docker-Tutorial: Container verwenden (einfaches Beispiel)

Docker-Tutorial: Container verwenden (einfaches Beispiel)

Wenn Sie mit Docker noch nicht vertraut sind, sehen Sie sich einige der grundlegenden Befehle an, die Sie lernen sollten, um mit der Verwaltung von Containern zu beginnen.

Docker hatte einen enormen Einfluss auf den Softwareentwicklungszyklus und machte die Bereitstellung von Software im großen Maßstab einfach und sicher. Dieses Tutorial behandelt die Grundlagen zum Ausführen, Starten, Stoppen und Löschen von Docker-Containern.

Docker erleichtert die Verwendung verschiedener Programmiersprachen auf unterschiedlichen Betriebssystemen, alles auf demselben Host.

Das Bereitstellen Ihrer Software hinter Docker wird viel einfacher und Sie müssen sich keine Sorgen machen, dass Sie Systemkonfigurationen oder Voraussetzungen verpassen.

Docker und virtuelle Maschinen

Wenn Sie zum Ausführen Ihrer Software Virtualisierung verwenden, warum benötigen Sie dann stattdessen Docker?

Der Hauptunterschied zwischen ihnen besteht darin, dass Docker ein separater Prozess ist, der innerhalb Ihres nativen Betriebssystems ausgeführt wird, während eine VM ein vollständig isoliertes Betriebssystem ist, das auf dem Host-Betriebssystem ausgeführt wird und mehr Zeit zum Laden benötigt. Docker bietet also gegenüber virtuellen Maschinen weitere Vorteile, beispielsweise:

  • Die Ladegeschwindigkeit unterscheidet sich von virtuellen Maschinen und erfordert nur sehr wenige Hardwareressourcen.
  • Führen Sie mehrere Docker-Container gleichzeitig auf demselben Betriebssystem aus.
  • Sie können den Container ändern und bereitstellen oder die Docker-Dateidefinition an einen Freund weitergeben, damit dieser in derselben Umgebung arbeiten kann.

Tatsächlich ist Docker kein Ersatz für virtuelle Maschinen, sondern löst spezifische Probleme.

Angenommen, Ihre Anwendung erfordert drei oder mehr Dienste, die auf unterschiedlichen Betriebssystemen ausgeführt werden. Dann können Sie drei Container problemlos auf demselben Host ausführen, anstatt drei virtuelle Maschinen auf demselben Host auszuführen. Klingt super!

Ausführen Ihres Containers

Stellen Sie vor dem Beginn sicher, dass Docker ordnungsgemäß installiert und bereit ist, Befehle anzunehmen. Geben Sie den folgenden Befehl in ein neues Terminalfenster ein:

$ docker -v

Der obige Befehl gibt die auf Ihrem PC installierte Docker-Version aus:

Docker version 17.12.0-ce-rc2, build f9cde63

Es ist Zeit, den Container auszuführen:

$ docker container run alpine echo "Hello World"

Wenn Sie den obigen Befehl zum ersten Mal ausführen, sollten Sie in Ihrem Terminalfenster eine Ausgabe ähnlich dieser sehen:

Das ist einfach, nicht wahr? Versuchen Sie, denselben Befehl erneut auszuführen:

$ docker container run alpine echo "Hello World"

Wenn Sie den obigen Befehl zum zweiten, dritten oder x-ten Mal ausführen, sollten Sie in Ihrem Terminal nur diese Ausgabe sehen:

Hello World

Nachdem Sie den Container erfolgreich ausgeführt haben, ist es an der Zeit zu analysieren, was genau passiert ist. Siehe die folgenden Befehle:

$ docker container run alpine echo "Hello World"

Dieser Befehl besteht aus mehreren Teilen. Zuerst haben Sie das Wort „Docker“. Dies ist der Name der Docker-Befehlszeilenschnittstelle (CLI), die zur Interaktion mit der Docker-Engine verwendet wird, die für die Ausführung von Containern verantwortlich ist.

Als Nächstes haben Sie das Wort „Container“, das den Kontext angibt, mit dem Sie arbeiten.

Der nächste Schritt besteht darin, den Befehl „run“ tatsächlich auszuführen.

Jetzt müssen Sie Docker mitteilen, welcher Container ausgeführt werden soll. Hier ist der Alpencontainer im Einsatz.

Schließlich müssen Sie den Prozess- oder Aufgabentyp definieren, der innerhalb des Containers ausgeführt werden soll, wenn der Container ausgeführt wird. Dies ist der letzte Teil des Befehls, echo „Hallo Welt“.

Ausführen eines Prozesses innerhalb eines Containers

Nachdem Sie nun die Teile des Befehls zum Ausführen eines Containers verstehen, versuchen Sie, einen anderen Prozess in einem anderen Container auszuführen:
$ docker container run centos ping -c 5 127.0.0.1

Die Ausgabe lautet wie folgt:

Im vorhergehenden Beispiel ist das verwendete Container-Image CentOS und der im CentOS-Container ausgeführte Prozess ist ping -c 5 127.0.0.1, der die Loopback-Adresse fünfmal anpingt, bis er stoppt.

Die erste Zeile lautet:

Unable to find image 'centos:latest' locally

Dies bedeutet, dass Docker im lokalen Cache des Systems kein Image mit dem Namen „centos:latest“ gefunden hat. Daher weiß Docker, dass es es aus einem Image-Repository abrufen muss, in dem der Container gespeichert ist.

Standardmäßig ist die Docker-Umgebung so konfiguriert, dass Images vom Docker-Hub unter hub.docker.com abgerufen werden. Dies wird durch die zweite Zeile wie folgt dargestellt:

latest: Pulling from library/centos

Die nächsten drei Ausgabezeilen lauten wie folgt:

85432449fd0f: Pull completeDigest: sha256:3b1a65e9a05...Status:

Dies zeigt Ihnen, dass Docker das Image centos:latest erfolgreich vom Docker Hub abgerufen hat.

Die nachfolgende Ausgabe wird vom im Container ausgeführten Prozess generiert, in diesem Fall dem Ping-Tool.

Möglicherweise fällt Ihnen auch auf, dass das Schlüsselwort „latest“ einige Male vorkommt. Jedes Image hat eine Version (auch Tag genannt), und wenn eine Version nicht explizit angegeben ist, geht Docker automatisch davon aus, dass es sich um die neueste Version handelt.

Wenn Sie diesen Container erneut auf Ihrem System ausführen, werden die vorherigen fünf Zeilen nicht ausgegeben, da Docker das Container-Image lokal zwischengespeichert hat und es daher nicht zuerst herunterladen muss. Versuchen Sie herauszufinden, ob dies der Fall ist.

Ausführen eines zufälligen Referenzcontainers

Um den Zufallsaussagecontainer ausführen zu können, ist ein Algorithmus zur Generierung von Zufallsaussagen erforderlich. Die API zur Generierung dieser zufälligen Anweisungen finden Sie hier [1].
Das Ziel besteht nun darin, im Container einen Prozess auszuführen, der alle 5 Sekunden eine zufällige Anweisung generiert und diese auf STDOUT ausgibt:


Drücken Sie Strg+C, um das Skript zu stoppen. Dies ist die Ausgabe:


Jede Antwort ist eine JSON-formatierte Zeichenfolge, die das Zitat, den Autor und seine Kategorie enthält.
Lassen Sie uns diesen Container jetzt im Hintergrund ausführen. Dazu müssen Sie das vorherige Skript auf eine Zeile reduzieren und mit /bin/sh -c "…" ausführen. Der Ausdruck für Docker lautet wie folgt:

$ Docker-Container ausführen -d --Name Anführungszeichen alpine \ /bin/sh -c "während :; mache wget -qO- https://talaikis.com/api/quotes/random; printf '\n'; sleep 5; fertig"

Im obigen Ausdruck haben Sie zwei Befehlszeilenparameter verwendet: -d und --name. -d weist Docker an, den Container als Linux-Daemon auszuführen. Der Parameter -name wird verwendet, um einen expliziten Namen für den Container anzugeben.

Wenn Sie keinen expliziten Containernamen angeben, weist Docker dem Container automatisch einen zufälligen, aber eindeutigen Namen zu. Der Name besteht aus dem Namen eines berühmten Wissenschaftlers und einem Adjektiv.

Wie zum Beispiel „boring_borg“ oder „angry_goldberg“. Ziemlich lustig, nicht wahr?

Ein wichtiger Aspekt ist, dass Containernamen eindeutig sein müssen. Stellen Sie sicher, dass der Anführungszeichen-Container aktiv ist:

$ docker container ls -l

Der wichtige Teil der vorherigen Ausgabe ist die Spalte STATUS, die in diesem Fall UP 16 Sekunden anzeigt. Dies bedeutet, dass der Container seit 16 Sekunden aktiv ist.

Listencontainer

Wenn Sie im Laufe der Zeit weiterhin Container ausführen, kann Ihr System schließlich über viele Container verfügen. Um die Container zu finden, die aktuell auf dem Host ausgeführt werden, können Sie den Befehl „container ls“ wie folgt verwenden:

$ docker container ls

Dadurch werden alle aktuell ausgeführten Container aufgelistet.
Standardmäßig gibt Docker sieben Spalten mit den folgenden Bedeutungen aus:

Wenn Sie alle auf Ihrem System definierten Container auflisten möchten, können Sie die Kommandozeilenparameter -a oder -all wie folgt verwenden:

$ docker container ls -a

Dadurch werden Container in jedem Status aufgelistet, unabhängig davon, ob sie erstellt, ausgeführt oder beendet wurden.

Manchmal möchten Sie möglicherweise nur die IDs aller Container auflisten. Hierzu steht Ihnen der Parameter -q zur Verfügung:

$ docker container ls -q

Sie fragen sich vielleicht, wozu das nützlich ist. Hier ist ein Beispiel:

$ docker container rm -f $(docker container ls -a -q)

Der obige Befehl entfernt alle aktuell im System definierten Container, einschließlich angehaltener Container. Der Befehl rm steht für „Remove“ und wird in diesem Tutorial weiter erläutert.
Im vorherigen Abschnitt haben Sie den Parameter -l mit dem Listenbefehl verwendet. Versuchen Sie, mithilfe der Docker-Hilfe herauszufinden, wofür der Parameter -l steht. Die Hilfe zum List-Befehl können Sie wie folgt aufrufen:
$ Docker-Container ls -h

Stoppen und Starten von Containern

Manchmal müssen Sie einen laufenden Container vorübergehend anhalten. Probieren Sie diesen Container:

$ Docker-Container ausführen -d --Name Anführungszeichen alpine \ /bin/sh -c "während :; mache wget -qO- https://talaikis.com/api/quotes/random; printf '\n'; sleep 5; fertig"

Nun können Sie diesen Container mit dem folgenden Befehl stoppen:

$ docker container stop quotes

Wenn Sie versuchen, den Container anzuhalten, stellen Sie möglicherweise fest, dass es eine Weile dauert (etwa 10 Sekunden), bis der Vorgang abgeschlossen ist. Warum passiert das? Docker sendet das Linux-SIGTERM-Signal an den Hauptprozess, der im Container ausgeführt wird.

Im obigen Befehl wird der Name des Containers verwendet, um den zu stoppenden Container anzugeben. Auch die Verwendung einer Container-ID ist möglich.

Wie erhalten Sie die Container-ID?

Hierzu gibt es mehrere Möglichkeiten. Die manuelle Methode besteht darin, alle laufenden Container aufzulisten und den gesuchten Container in der Liste zu finden. Kopieren Sie einfach die ID von dort.
Ein automatisierterer Ansatz ist die Verwendung von Shell-Skripten und Umgebungsvariablen. Wenn Sie beispielsweise die ID eines Angebotscontainers abrufen möchten, sehen Sie hier ein Beispiel:

$ export CONTAINER_ID = $(Docker-Container ls | grep-Anführungszeichen | awk '{print $1}')

Hier verwenden wir AWK, um das erste Feld zu erhalten, das die Container-ID ist. Anstatt den Containernamen zu verwenden, können Sie in Ihrem Ausdruck jetzt die Variable $CONTAINER_ID verwenden:

$ Docker-Container-Stopp $CONTAINER_ID

Sobald der Container gestoppt wird, ändert sich sein Status in „Beendet“.

Sie können einen angehaltenen Container mit dem Befehl „Docker Container Start“ neu starten.

Einen Container entfernen

Wenn Sie den Befehl „Docker Container ls -a“ ausführen, werden viele Container im Status „Beendet“ angezeigt.

Wenn Sie diese Container nicht mehr benötigen, entfernen Sie sie am besten aus dem Speicher, da sie sonst wertvolle Ressourcen beanspruchen. Der Befehl zum Löschen des Containers lautet:

$ docker container rm <container ID>

Alternativ können Sie diesen Befehl verwenden:

$ docker container rm <container name>

Manchmal ist es nicht möglich, einen laufenden Container zu löschen; wenn Sie das Löschen erzwingen möchten, können Sie den Kommandozeilenparameter -f oder --force verwenden.
Die Containerisierung hat die Arbeitsweise der Branche verändert, die Wartungskosten um mehr als 50 % gesenkt und die Markteinführungszeit um etwa 90 % verkürzt. Darüber hinaus machen Container Anwendungen sicherer, als wenn sie außerhalb von Containern ausgeführt werden.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Funktionsprinzips und der Verwendung des Docker-Image-Submission-Befehls Commit
  • So funktioniert Docker Networking
  • Detaillierte Erklärung zum Anzeigen der von Docker-Containern verwendeten Ressourcen
  • Detaillierte Erläuterung des Docker-Arbeitsmodus und -Prinzips

<<:  So implementieren Sie einen variablen Ausdrucksselektor in Vue

>>:  MySQL 5.7.17 Installations-Tutorial mit Lösungen für das Problem, dass der MySQL-Dienst nicht gestartet werden kann

Artikel empfehlen

So installieren Sie Nginx schnell unter Linux

Inhaltsverzeichnis Was ist nginx 1. Laden Sie die...

Vue3 verwendet Axios Interceptor zum Drucken von Front-End-Protokollen

Inhaltsverzeichnis 1. Einleitung 2. Verwenden Sie...

Ausführliches Tutorial zu Installations- und Upgradeproblemen bei MySQL 5.7.30

Keil Da auf dem Computer eine relativ alte MySQL-...

Centos6.9-Installation Mysql5.7.18 Schrittaufzeichnung

Installationsreihenfolge rpm -ivh mysql-community...

Tutorial zu HTML-Tabellen-Tags (27): Zell-Hintergrundbild-Attribut BACKGROUND

Wir können ein Hintergrundbild für die Zelle fest...

Vue implementiert unregelmäßige Screenshots

Inhaltsverzeichnis Bilderfassung durch SVG CSS-Te...

jQuery realisiert dynamische Partikeleffekte

In diesem Artikel wird der spezifische Code von j...

Wie viele Ports kann ein Linux-Server maximal öffnen?

Inhaltsverzeichnis Hafenbezogene Konzepte: Bezieh...

Vue implementiert die Bottom-Query-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

Natives JS zur Implementierung des Spiels 2048

2048 Minispiel, zu Ihrer Information, der spezifi...

Installieren Sie MySQL 5.6 aus der Yum-Quelle im Centos7.4-System

Systemumgebung: centos7.4 1. Prüfen Sie, ob die D...

Element Plus implementiert Affix

Inhaltsverzeichnis 1. Komponenteneinführung 2. Qu...