Die Dockerisierung hat den Bereitstellungs- und Automatisierungsprozess in der Softwareindustrie neu definiert. Seit ihrer Einführung hat das Docker-Team kontinuierlich daran gearbeitet, die automatisierte Bereitstellung nahtlos zu gestalten. Die Containerisierungstechnologie ermöglicht nicht nur eine schnelle Anwendungsentwicklung und Effizienz, sondern spart auch Zeit und mühsame Anstrengungen. Unschlagbare Funktionalitäten wie das Orchestrieren, Definieren und Ausführen von Multi-Container-Anwendungen machen Docker zu einer beliebten Wahl für Entwickler.
Docker-Container und -Images
Wenn Sie tiefer in Docker eintauchen möchten, ist es wichtig, die Grundlagen aufzufrischen. Zu verstehen, wie Docker funktioniert, kann knifflig sein, wenn Sie noch keine Erfahrung damit haben. In diesem Abschnitt werden wir einige Konzepte definieren, die für Anfänger unerlässlich sind. Wenn Sie glauben, mit diesen Konzepten vertraut zu sein, können Sie diesen Abschnitt gerne überspringen und mit dem nächsten fortfahren. Sie können auch einen Blick auf unseren umfassenden Leitfaden werfen, der die grundlegenden Docker-Konzepte erklärt.
-
Docker-Images
Docker-Images sind eine Sammlung von schreibgeschützten Dateien. Sobald Sie Docker-Images erstellt haben, können Sie diese nicht mehr ändern, obwohl das Löschen zulässig ist. Wir verwenden ein Docker-Image, um je nach Bedarf einen oder mehrere Docker-Container zu erstellen. Um die Anzahl der auf Ihrem System ausgeführten Images zu überprüfen, verwenden Sie den Befehl:
|
1 |
$docker images |
Wenn Sie Images aus einer Remote-Registry wie Docker Hub herunterladen, laden Sie Dateien und Ordner herunter. Um ein Image herunterzuladen, verwenden Sie den Befehl:
|
1 |
$docker pull (Name des the Images) |
-
Docker-Container
Docker-Images sind die Vorlage für Docker-Container. Technisch gesehen ist ein Docker-Container eine Instanz eines Docker-Images. Stellen Sie sich vor, ein Docker-Image ist wie ein Elternteil, dann ist ein Docker-Container das Kind. Im Gegensatz zu Docker-Images, die Sie einmal erstellen können, können Sie mehrere Container mit einem einzigen Image erstellen. Um die Liste der auf Ihrem System ausgeführten Images zu überprüfen, verwenden Sie den Befehl:
|
1 |
$docker ps |
Um einen Container herunterzuladen, verwenden Sie den folgenden Befehl:
|
1 |
$docker pull (Name des the Containers) |
-
Wie Docker-Images und -Container funktionieren
Docker-Images und -Container arbeiten Hand in Hand, um das Potenzial von Docker voll auszuschöpfen. Ein einzelner Container wird mithilfe des Docker-Images über den Befehl „run“ erstellt. Wenn Sie einen Docker-Container erstellen, wird eine neue Ebene namens „Container Layer“ erstellt. Die neu erstellte Ebene enthält die Anwendung und ihre Abhängigkeiten. Jeder von Ihnen erstellte Container verfügt über einen anderen beschreib- und lesbaren Container Layer, und alle im Docker-Container vorgenommenen Änderungen werden automatisch auf dem Container Layer reflektiert. Denken Sie daran: Wenn Sie sich entscheiden, einen Container zu löschen, verlieren Sie auch den Container Layer.
Sagen Sie Hallo zu Docker Compose
Docker Compose ist ein Container-Management-Tool, mit dem Sie alle Ihre Docker-Container in einer einzigen YAML-Datei konfigurieren und orchestrieren können. Das Starten, Anhalten und Erstellen von Verbindungen und Volumes zwischen Containern wird mit diesem Tool erleichtert.
-
Was macht Docker Compose?
Einfach ausgedrückt macht Docker Compose komplizierte Aufgaben einfacher, indem es Konflikte und organisatorische Probleme beseitigt. Es ermöglicht Benutzern, verschiedene Docker-Container zentral zu verwalten. Mit anderen Worten: Anstatt alle Dienste in einem großen Container zu haben, unterteilt Docker Compose einen Dienst in mehrere Dienste, sodass Benutzer mühelos auf sie zugreifen und sie verwalten können.
In dieser Anleitung führen wir Sie durch die Schritte zur Installation der aktuellen Version von Docker Compose zur Verwaltung von Multi-Container-Anwendungen auf CentOS 7. Wir werden auch einige grundlegende Befehle durchgehen, die Sie benötigen, um die Software erfolgreich zu nutzen.
-
So verwenden Sie Docker Compose
Die Verwendung von Docker Compose ist selbst für Anfänger extrem einfach. Sehen wir uns den dreistufigen Prozess an, der mit Docker Compose verbunden ist:
1. Build: Erstellen Sie zunächst Images im Dockerfile gemäß Ihren Projektanforderungen oder laden Sie sie aus der Registry herunter.
2. Definieren: Als Nächstes müssen Sie alle Komponentendienste in der compose.yml-Datei definieren.
3. Ausführen: Nach dem Definieren der Komponenten ist es an der Zeit, sie mit dem Befehl docker-compose auszuführen.
Voraussetzungen
Bevor wir mit der Installation von Docker Compose auf Ihrem CentOS-Server fortfahren, stellen Sie sicher, dass Sie Folgendes haben:
- Einen Nicht-Root-Benutzer mit sudo-Zugriff auf einem CentOS 7-Server.
- Docker auf Ihrem Rechner installiert. Bitte lesen Sie dieses Tutorial über die Installation und den Betrieb von Docker auf Ubuntu 18.04.
Sie sind nun startklar. Befolgen Sie als Nächstes die folgenden Schritte, um Docker Compose auf CentOS 7 zu installieren.
Schritt 1: Installieren von Docker Compose
Um die neueste Version von Docker Compose zu erhalten, folgen Sie den Anweisungen in der Docker-Dokumentation und laden Sie die Binärdateien herunter von Docker’s GitHub-Repository. Überprüfen Sie, ob Sie die neueste Version der Software haben, indem Sie den folgenden Befehl ausführen:
|
1 |
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
Um die Binärdatei ausführbar zu machen, legen Sie die folgenden Berechtigungen fest:
|
1 |
sudo chmod +x /usr/local/bin/docker-compose |
Suchen Sie als Nächstes nach Ihrer Version, um zu überprüfen, ob die Installation erfolgreich war:
|
1 |
$docker-compose --version |
Der folgende Code gibt die installierte Version aus:
Sie können dann ein “Hello World”-Beispiel mit dem von Ihnen installierten Docker Compose ausführen.
Schritt 2: Verwenden von Docker Compose zum Ausführen eines Containers
Es gibt ein “Hello World”-Image in Docker Hub, der öffentlichen Docker-Registry, das für Demonstrations- und Testzwecke verwendet werden kann. Es zeigt, wie man einen Container mit Docker Compose mit minimaler Konfiguration ausführt. Zuerst müssen Sie ein Verzeichnis für unsere YAML-Datei erstellen:
|
1 |
$mkdir hello-world |
Wechseln Sie als Nächstes in dieses Verzeichnis:
|
1 |
$cd hello-world |
Erstellen Sie dann mit Ihrem bevorzugten Texteditor die YAML-Datei. In diesem Tutorial verwenden wir Vi:
|
1 |
$vi docker-compose.yml |
Drücken Sie i, um in den Einfügemodus zu gelangen, und geben Sie dann Folgendes in die Datei ein:
|
1 2 |
my-test: image: hello-world |
In den Containernamen wird die erste Zeile integriert. Die zweite Zeile weist das Programm an, welches Image es zur Erstellung des Containers verwenden soll. docker-composeup sucht nach einem lokalen Image mit dem Namen hello-world, um zu prüfen, ob es verfügbar ist, wenn Sie den Befehl eingeben. Um den Einfügemodus zu verlassen, drücken Sie ESC. Geben Sie dann :x ein und drücken Sie ENTER, um die Datei zu speichern und zu beenden. Der Befehl docker images kann verwendet werden, um manuell nach Images auf Ihrem Rechner zu suchen:
|
1 |
$ sudo docker images |
Es erscheinen nur die Spaltenüberschriften, wenn überhaupt keine lokalen Images vorhanden sind:
Um den Container zu erstellen, führen Sie diesen Befehl aus, während Sie sich noch im Verzeichnis /hello-world befinden:
|
1 |
$sudo docker-compose up |
Wenn Sie den Befehl zum ersten Mal ausführen und kein lokales Image mit dem Namen hello-world vorhanden ist, wird es aus dem Docker Hub-Repository heruntergeladen:
Um sicherzustellen, dass die Installation funktioniert, Docker Compose zieht das Image, erstellt einen Container, hängt ihn an und führt das hello-Programm aus:
Danach wird ein Ausdruck mit einer Beschreibung der durchgeführten Schritte angezeigt:
Wenn hello seine Aufgabe erfüllt hat, wird der Container heruntergefahren und der Befehl wird nicht mehr im Container ausgeführt. Bei der Betrachtung aktiver Prozesse werden Spaltenüberschriften angezeigt. Der Container hello-world wird jedoch nicht aufgelistet, da er derzeit nicht in Betrieb ist:
|
1 |
$sudo docker ps |
Um alle Container anzuzeigen, nicht nur die aktuellen, verwenden Sie das -a-Flag:
|
1 |
$sudo docker ps -a |
Nachdem Sie nun versucht haben, einen Container auszuführen, können Sie fortfahren, um einige der grundlegenden Docker Compose-Befehle kennenzulernen.
Schritt 3: Docker Compose-Befehle
Um Ihnen den Einstieg in Docker Compose zu erleichtern, geht dieser Abschnitt auf die grundlegenden Befehle ein, die vom Tool docker-compose bereitgestellt werden. docker-compose ist ein Befehl, der verzeichnisweise arbeitet. Indem Sie ein Verzeichnis für jeden Container und eine docker-compose.yml-Datei pro Verzeichnis erstellen, können Sie viele Gruppen von Docker-Containern auf demselben Computer ausführen.
Bisher haben Sie Docker Compose selbstständig ausgeführt. Sie können es ausschalten, indem Sie Strg-C drücken. Dadurch kann das Terminalfenster Debug-Meldungen anzeigen. Es ist jedoch ratsam, docker-compose im Produktionsbetrieb als Dienst auszuführen. Die Option -d kann als einfache Möglichkeit verwendet werden, dies zu erreichen:
|
1 |
docker-compose up -d |
Jetzt wird docker-compose in den Hintergrund verschoben. Ihre Gruppe von Docker-Containern (entweder angehalten oder laufend) kann mit dem folgenden Befehl verwaltet werden:
|
1 |
$sudo docker-compose ps -a |
Der State eines Containers wird als Exited gemeldet, wenn er angehalten ist, wie im folgenden Beispiel zu sehen:
Ein Container, der gerade läuft, zeigt Folgendes an:
|
1 2 3 4 |
Name Command State Ports --------------------------------------------------------------- nginx_nginx_1 nginx -g daemon off; Up 443/tcp, 80/tcp |
Sie können alle laufenden Docker-Container im selben Verzeichnis wie die docker-compose.yml-Datei beenden, die Sie zum Starten der Docker-Gruppe verwendet haben:
|
1 |
$docker-compose stop |
Hinweis: Wenn Sie die Container gewaltsamer beenden müssen, steht auch docker-compose kill zur Verfügung.
In einigen Fällen können Docker-Container ihre alten Daten intern speichern. Verwenden Sie den Befehl rm, um alle Container aus Ihrer Containergruppe zu entfernen, wenn Sie von vorne beginnen möchten:
|
1 |
$docker-compose rm |
Das Ausführen eines dieser Befehle aus einem anderen Verzeichnis als dem, in dem sich der Docker-Container und die .yml-Datei befinden, führt zu einer Fehlermeldung:
|
1 2 3 4 5 6 |
ERROR: Can't find a suitable configuration file in this directory oder any parent. Are you in the right directory? Supported filenames: docker-compose.yml, docker-compose.yaml |
In diesem Abschnitt haben wir die Grundlagen der Bearbeitung von Containern mit Docker Compose behandelt. Wie besprochen, können Sie im folgenden Abschnitt auf das Docker-Dateisystem zugreifen und Befehle über eine Eingabeaufforderung im Container ausführen, wenn Sie zusätzliche Kontrolle über Ihre Container benötigen.
Schritt 4: Zugriff auf das Docker-Container-Dateisystem
Es ist möglich, eine Eingabeaufforderung in einem Container auszuführen und auf das Dateisystem des Containers zuzugreifen, indem Sie docker exec verwenden, ein Befehlszeilenwerkzeug. Führen Sie beispielsweise “Hello World” aus und sehen Sie, wie lange es dauert, bis der Befehl docker exec abgeschlossen ist. Für dieses Tutorial kann das Docker Hub-Image von Nginx verwendet werden. Erstellen Sie ein neues Verzeichnis namens nginx und wechseln Sie hinein:
|
1 2 |
mkdir ~/nginx cd ~/nginx |
Sie sollten nun eine docker-compose.yml-Datei haben, die Sie in einem Texteditor öffnen können:
|
1 |
vi docker-compose.yml |
Fügen Sie dann in der Datei Folgendes hinzu:
|
1 2 |
nginx: image: nginx |
Es ist an der Zeit, die Anwendung zu schließen. Um den Nginx-Container im Hintergrund zu starten, verwenden Sie den folgenden Befehl:
|
1 |
$sudo docker-compose up -d |
Docker Compose wird das Nginx-Image herunterladen und den Container im Hintergrund ausführen. Um fortzufahren, müssen Sie die CONTAINER ID des Containers eingeben. Sie können alle derzeit laufenden Container mit dem folgenden Befehl anzeigen:
|
1 |
$sudo docker ps |
Sie sehen Folgendes:
Wenn Sie das Dateisystem in diesem Container mithilfe von docker exec ändern möchten, würden Sie die eindeutige ID des Containers verwenden (in diesem Fall f139d0d78ca7) um eine Shell innerhalb des Containers zu erstellen:
|
1 |
$sudo docker exec -it f139d0d78ca7 /bin/bash |
Ein interaktives Terminal kann mit der Option -t geöffnet werden, während /bin/bash dem Container eine Bash-Shell zur Verfügung stellt. Dies ist die Bash-Eingabeaufforderung, die Sie danach für den Container sehen:
|
1 |
root@b86b6699714c:/# |
In Ihrem Container finden Sie eine Eingabeaufforderung. Ein Neustart des Containers überschreibt alle von Ihnen vorgenommenen Änderungen, es sei denn, Sie arbeiten in einem Verzeichnis, das als Teil eines Datenvolumens gespeichert wurde. Wenn Sie an die Arbeit mit Linux-Kommandozeilen-Tools gewöhnt sind, sollten Sie wissen, dass die meisten Docker-Images mit den einfachsten Linux-Installationen erstellt werden.
Fazit
Wir haben Sie durch die Schritte zur Installation der aktuellen Version von Docker Compose zur Verwaltung von Multi-Container-Anwendungen auf CentOS 7 geführt. Die Fähigkeit von Docker Compose, eine große Anzahl von Containern gleichzeitig zu starten und herunterzufahren, ist beeindruckend. Der Übergang von Vorlagen zu Anwendungen dauert nur wenige Minuten. Wenn Ihre Arbeit also das gleichzeitige Ausführen mehrerer Container beinhaltet, ist Docker Compose eine hervorragende Option. Dennoch ist es keine Universallösung. Je nach Ihren speziellen Anforderungen finden Sie möglicherweise auch bessere Optionen, wie zum Beispiel Kubernetes.
Um die Möglichkeiten von Docker Compose weiter zu erkunden, können Sie sich diese Tutorials von unserem Blog:
- Bereitstellung von Laravel, Nginx und MySQL mit Docker Compose
- So installieren und konfigurieren Sie Docker Compose auf Ubuntu 20.04
Viel Spaß beim Computing!






Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.