So starten Sie Container mit Docker Compose

So starten Sie Container mit Docker Compose

Dieser Artikel wird Docker komponieren und zeigen, wie Sie ihn für Ihre Bedürfnisse bearbeiten können. Wir werden es installieren, eine einfache Komponierungsdatei schreiben und den Container starten.

Wir werden dann sehen, wie man mehrere Container startet. Anschließend werden wir sehen, wie Sie Bilder erstellen und in letzter Zeit mit mehreren Komponierungsdateien zum Starten von Containern in verschiedenen Umgebungen wie Entwicklung und Produktion verwendet werden können.

In diesem Tutorial lernen Sie:

  • So installieren Sie Docker Compose
  • So schreiben Sie eine einfache Komponierungsdatei
  • So führen Sie Docker-Compose-Befehle aus, um Container zu starten und zu stoppen
  • So starten Sie mehrere Container
  • So erstellen Sie Bilder mit Docker Compose
  • So überschreiben Sie mithilfe mehrerer Docker -komponierter Dateien
Phpmyadmin.

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Ubuntu 18.04
Software Docker komponieren
Andere Privilegierter Zugriff auf Ihr Linux -System als Root oder über die sudo Befehl.
Konventionen # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können

Einführung



Wir haben bisher gesehen, wie Docker sich hervorragend zum Verwalten von Bildern und zum Starten von Containern eignet. Häufig erfordern Anwendungen, dass verschiedene Container aufsteigen und miteinander kommunizieren. Wenn Sie sie über das Netzwerk verbinden, werden sie das Teilen von Festplattenvolumina und die Übergabevariablen zur Verfügung gestellt, die sich leicht in eine Folge von Befehlen verwandeln können, die im Laufe der Zeit schwer zu dokumentieren und zu warten sind. Dort tritt Docker Compose ein. Beginnen wir mit der Installation und schreiben Sie dann die Kompose -Datei.

Installieren von Docker Compose

In Ubuntu 18.04 Installieren von Docker Composer ist unkompliziert:

# APT INSTALLEN SIE DOCKER-COMPOSE 

Um es zu testen, ist es installiert, können Sie die Version überprüfen:

$ docker-compose -v docker-compose Version 1.17.1, unbekannt bauen 

Docker Engine und Docker Compose -Versionen sind wichtig, da ihre Veröffentlichungen häufig sind und die Funktionen hinzugefügt und entfernt werden. Die oben gezeigte Version (1.17.1) wurde im November 2017 veröffentlicht. Wenn Sie eine neuere Version benötigen, können Sie entweder Ubuntus Universe Repository aktivieren und ein neueres Paket erhalten oder sogar die neueste Version direkt von der Docker Compose -Website herunterladen und installieren:

# curl -l "https: // github.com/docker/komponieren/veröffentlichen/download/1.23.2/Docker-Compose-$ (uname -s)-$ (uname -m) "-O/usr/local/bin/docker-compose # sudo chmod +x/usr/local/bin/docker-compose 


Die Docker -Komponierungsdatei

Docker Compose liest eine YAML -Datei, die normalerweise benannt ist Docker-Compose.YML.

Version: "3" Dienste: Apache: Bild: Php: 7.3 -Apache Container_Name: 'Apache' Ports: - "80:80" Volumes: - ./www:/var/www/html 
Kopieren

Am Anfang wird die Syntaxversion als 3 informiert. Als nächstes wird im Abschnitt Dienste nur ein Container angegeben (Apache) und die Tags Bild, Container_Name, Häfen, Und Bände werden verwendet, um zu beschreiben, wie es ausgeführt werden soll.

Erstellen Sie nun ein Verzeichnis mit dem Namen www und lass das fallen Index.html Datei im Inneren.

  Hallo   

Als nächstes arbeitet PHP, um diese Datei zu testen www.

 


Docker Compose -Befehle

Der hoch Der Befehl kümmert sich um alles: Laden Sie die Bilder von Docker Hub herunter, wenn sie noch nicht im lokalen Cache vorhanden sind, benutzerdefinierte Bilder erstellen (was nicht der Fall ist; wir werden diesen nächsten Abschnitt abdecken) und die Container starten.

$ docker -compose up -d 

Der -D Switch weist Docker Compose an, Container im Hintergrund auszuführen. Im Falle eines weiteren Dateinamens wird statt von verwendet Docker-Compose.YML, Es kann mit informiert werden -F.

Beachten Sie, dass der Startbefehl viel einfacher ist als er Docker Gegenstück ausführen. Es hat zwei weitere Vorteile: Es ändert sich unabhängig vom Inhalt der Komponierungsdatei nicht, und wenn die Komponierungsdatei mehr als einen Container angibt, werden alle gestartet. Nur zum Vergleich wäre der Befehl Docker Run:

$ Docker run -d --Name = 'apache -alone' -p 80:80 -v $ pwd/www:/var/www/html Php: 7.3-Apache 

Weil die Dateisyntax komponieren. Wenn Sie Syntaxfehler erhalten, überprüfen Sie die YAML -Syntax mit einem Online -Parser wie diesen.

Sie können überprüfen, ob der Container ausgeführt wird.

$ docer ps container id bandbefehl erstellte statusports namens 3937d997e029 PHP: 7.3-apache "Docker-Php-Intrypoi ..." vor 8 Minuten hoch 8 Minuten 0.0.0.0: 80-> 80/TCP Apache 

Jetzt Zugang http: // localhost in Ihrem bevorzugten Browser und dann http: // localhost/phpinfo.Php.



Starten Sie mehrere Container

Lassen Sie uns nun eine komplexere Komponierungsdatei sehen. Stellen wir uns vor, wir werden eine lokale Umgebung einrichten, um eine Lampenanwendung zu entwickeln. Wir brauchen einen Container mit Apache und PHP, einen anderen Container mit MySQL und möglicherweise einen PhpMyAdmin -Behälter, um mit MySQL zu interagieren. Der Docker-Compose.YML wird sein:

Version: "3" Dienste: Apache: Bild: Php: 7.3 -Apache Container_Name: 'Apache' neu starten: 'Immer' Ports: - "80:80" - "443: 443" Volumes: - ./www:/var/www/html - ./PHP/PHP.INI:/usr/local/etc/php/PHP.Ini - ./sites-fähig:/etc/apache2/sites-fähig-Apache-Logs:/var/log/apache2 mysql: Bild: mariadb: 10.4 container_name: 'mysql' restart: 'always' volumes: - mysql-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: somepassword MYSQL_DATABASE: db_site MYSQL_USER: user MYSQL_PASSWORD: password phpmyadmin: image: phpmyadmin/phpmyadmin:4.8 Container_Name: 'PhpMyAdmin' Umgebung: PMA_HOST: MySQL PMA_PORT: 3306 Ports:-'8080: 80' Volumes: Apache-Logs: Mysql-Data: 
Kopieren

Diese Komponierungsdatei startet drei Container, jeweils einen Abschnitt unter Diensten. Beachten Sie, dass wir einige Umgebungsvariablen unter definieren Umfeld. Der Neustart: Immer Die Definition weist Docker an, die Container automatisch zu starten, wenn der Docker -Dienst gestartet wird (beispielsweise im Fall eines Neustarts).

Der Befehl zum Starten der drei Container ist der gleiche wie im vorherigen einfachen Beispiel. Leicht zu erinnern, richtig?

$ docker -compose up -d 

Überprüfen Sie, ob die Container erstellt werden.



$ docer ps container id bombild erstellte Statusports Namen F76ECE3508FE PHPMYADMIN/PHPMYADMIN: 4.8 "/rennen.SH Supervisford… "Vor 20 Sekunden 4 Sekunden 9000/TCP, 0.0.0.0: 8080-> 80/TCP phpmyadmin 69b1b5054f3d Mariadb: 10.4 "Docker-Entrypoint.S… "Vor 20 Sekunden 6 Sekunden 3306/TCP MySQL 6747D7580DAC PHP: 7.3-apache "Docker-Php-Intrypoi ..." vor 2 Tagen vor 14 Sekunden 0.0.0.0: 80-> 80/TCP, 0.0.0.0: 443-> 443/TCP Apache 
Kopieren

Es ist interessant zu bemerken, dass die Container über ihre Namen kommunizieren und auf die Ports des anderen zugreifen können, ohne ihre Ports dem Host auszusetzen. Zum Beispiel haben wir den Port 3306 des MySQL -Dienstes (wie in der obigen Ausgabe zu sehen) nicht enthüllt, aber PhpMyAdmin kann auf diesen Port zugreifen. Um auf Phpmyadmin zuzugreifen, gehen Sie zu http: // localhost: 8080 und melden Sie sich mit dem im MySQL -Dienst definierten Benutzer und Kennwort an (Benutzer / Kennwort).

Aufbau von Bildern mit Docker Compose

Wenn Sie ein Bild erstellen müssen, anstatt ein vorhandenes zu verwenden, fügen Sie einfach a hinzu bauen Schild. Im folgenden Beispiel geben wir Docker zusammen, um das aktuelle Verzeichnis für eine Dockerfile zu untersuchen. Das Bild -Tag wird verwendet, um das neue Bild zu benennen.

Version: "3" Dienste: Apache: Build: . Bild: My-Image-Name Container_Name: 'Apache' Neustart: 'Immer' Ports:-"80:80" 
Kopieren

Überschreiben Sie mithilfe mehrerer Docker -komponierter Dateien

Docker Compose erleichtert das Anpassen des Starts von Containern für verschiedene Umgebungen. Sie müssen nur die aufgerufenen Override -Dateien erstellen und die Container starten, die sie angeben. Sie werden frühere Definitionen überschreiben.

Lassen Sie uns beispielsweise eine überschreibende Datei mit dem Namen erstellen Docker-Compose-Prod.YML und definieren Sie ein anderes Passwort für MySQL.

Version: "3" -Dienste: MySQL: Umgebung: mysql_root_password: treffword_other mysql_database: db_sit_other mysql_user: user_other mysql_password: password: password_other 
Kopieren

Sie können einen anderen Host verwenden, um die Container zu starten. Wenn Sie denselben Host verwenden, ist es erforderlich, um den MySQL -Container zu löschen, und das zugeordnete Volumen ist das zugeordnete Volumen. Andernfalls wird der vorhandene Container mit den alten Anmeldeinformationen verwendet.

$ Docker Stop MySQL $ Docker RM MySQL $ Docker Volume LS $ Docker Volume RM Directory_Mysql-Datena 

Und dann können Sie den Befehl unten ausführen. Es ist wichtig, die Reihenfolge der Dateien zu behalten. Mehrere Dateien können verwendet werden. In unserem Beispiel nur die Umfeld Abschnitt von Mysql Der Service wird überschrieben.

$ docker-compose -f docker-compose.YML -f Docker-Compose-Prod.yml up -d 

Versuchen Sie nach der Überprüfung der Container mit den neuen Anmeldeinformationen, um PHPMYADMIN zuzugreifen.

Abschluss

In diesem Artikel wurde Docker Compose eingeführt, ein praktisches Tool, um den Start mehrerer Container im selben Host zu orchestrieren. Es gibt viele Möglichkeiten, und das Lesen des Docker -Kompose -Handbuchs wird sehr empfohlen. In den nächsten Artikeln werden wir Wege untersuchen, um Docker -Container unter mehreren Hosts zu orchestrieren.

Mehr in dieser Docker -Artikelserie

  • Eine praktische Einführung in Docker-Container
  • So interagieren Sie mit Docker -Containern
  • So stellen Sie Docker -Bilder mit Dockerfiles an

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • So erstellen Sie einen Docker -basierten Lampenstapel mit Docker auf…
  • Mastering -Bash -Skriptschleifen beherrschen
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Dinge zu installieren auf Ubuntu 22.04
  • So installieren Sie Debian in einem vorhandenen Luks -Container
  • So installieren und richten Sie Ghost CMS auf Ubuntu ein und setzen Sie
  • GDB -Debugging -Tutorial für Anfänger