Docker Compose ist ein Tool, mit dem Sie Docker-Anwendungen mit mehreren Containern definieren und ausführen können.
Mit Compose definieren Sie die Dienste, Netzwerke und Volumes der Anwendung in einer einzigen YAML-Datei und drehen Ihre Anwendung dann mit einem einzigen Befehl.
Compose kann für verschiedene Zwecke verwendet werden, z. B. für die Bereitstellung von Einzelhostanwendungen, automatisierte Tests und lokale Entwicklung.
Dieses Tutorial führt Sie durch die Installation der neuesten Version von Docker Compose unter CentOS 7. Wir werden auch die grundlegenden Docker Compose-Konzepte und -Befehle behandeln.
Voraussetzungen #
Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen, bevor Sie mit diesem Lernprogramm fortfahren:
- Als Benutzer mit sudo-Berechtigungen angemeldet.
- Haben Sie Docker auf Ihrem CentOS 7-System installiert.
Installieren Sie Docker Compose unter CentOS #
Die empfohlene Methode zum Installieren von Docker Compose auf CentOS 7 ist das Herunterladen der Compose-Binärdatei aus dem GitHub-Repository von Docker.
Zum Zeitpunkt der Erstellung dieses Artikels ist die neueste stabile Version von Docker Compose Version 1.23.1 . Bevor Sie die Compose-Binärdatei herunterladen, besuchen Sie die Compose-Repository-Release-Seite auf GitHub und prüfen Sie, ob eine neue Version zum Download verfügbar ist.
Führen Sie die folgenden Schritte aus, um Docker Compose auf CentOS 7 zu installieren:
-
Laden Sie zunächst die Docker Compose-Binärdatei in
/usr/local/binherunter Verzeichnis mit dem folgendencurlBefehl:sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -
Sobald der Download abgeschlossen ist, machen Sie die Binärdatei ausführbar, indem Sie Folgendes eingeben:
sudo chmod +x /usr/local/bin/docker-compose -
Um die Installation zu überprüfen, geben Sie den folgenden Befehl ein, um die Compose-Version zu drucken:
docker-compose --versionDie Ausgabe sieht in etwa so aus:
docker-compose version 1.23.1, build b02f1306
Erste Schritte mit Docker Compose #
In diesem Abschnitt zeigen wir, wie Sie mit Docker Compose einen WordPress-Stack auf Ihrem CentOS 7-Rechner ausführen.
Erstellen Sie zunächst ein neues Verzeichnis für das Projekt und navigieren Sie darin:
mkdir my_app && cd my_app
Erstellen Sie als Nächstes eine Datei mit dem Namen docker-compose.yml innerhalb des Projektverzeichnisses:
nano docker-compose.yml Fügen Sie den folgenden Inhalt ein:
docker-compose.ymlversion: '3.3'
services:
db:
image: mysql:5.7
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
wordpress:
image: wordpress
restart: always
volumes:
- ./wp_data:/var/www/html
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
depends_on:
- db
volumes:
db_data:
wp_data:
Lassen Sie uns den Code Zeile für Zeile analysieren.
Die erste Zeile gibt die Compose-Dateiversion an. Es gibt mehrere verschiedene Versionen des Compose-Dateiformats mit Unterstützung für bestimmte Docker-Versionen.
Als nächstes definieren wir zwei Dienste, db und wordpress . Jeder Dienst führt ein Image aus und erstellt einen separaten Container, wenn docker-compose ausgeführt wird.
Die db Dienst:
- Verwendet
mysql:5.7Bild. Wenn das Image auf Ihrem System nicht vorhanden ist, ruft Compose es aus dem öffentlichen Docker-Hub-Repository ab. - Verwendet den Neustart
alwaysRichtlinie, die den Container anweist, immer neu zu starten. - Erzeugt ein benanntes Volume
db_dataum die Datenbank persistent zu machen. - Definiert die Umgebungsvariablen für
mysql:5.7Bild.
Die wordpress Dienst:
- Verwendet
wordpressBild. Wenn das Image auf Ihrem System nicht vorhanden ist, ruft Compose es aus dem öffentlichen Docker-Hub-Repository ab. - Verwendet den Neustart
alwaysRichtlinie, die den Container anweist, immer neu zu starten. - Mountt die
wp_dataVerzeichnis auf dem Host nach/var/lib/mysqlim Behälter. - Leitet den exponierten Port 80 auf dem Container an Port 8080 auf dem Host-Rechner weiter.
- Definiert die Umgebungsvariablen für
wordpressBild. - Der
depends_onab Instruktion definiert die Abhängigkeit zwischen den beiden Diensten. In diesem Beispieldbwird vorwordpressgestartet .
Starten Sie aus dem Projektverzeichnis die WordPress-Anwendung mit dem folgenden Befehl:
docker-compose up Die Ausgabe sollte in etwa so aussehen:
...
wordpress_1 | [Sat Oct 13 21:30:48.286382 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.10 configured -- resuming normal operations
wordpress_1 | [Sat Oct 13 21:30:48.286425 2018] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
Compose zieht beide Bilder, startet zwei Container und erstellt die wp_data Verzeichnis in Ihrem Projektverzeichnis.
Öffnen Sie Ihren Browser und geben Sie http://0.0.0.0:8080/ ein in und Sie sehen den Wordpress-Installationsbildschirm.
An diesem Punkt ist die WordPress-Anwendung betriebsbereit und Sie können mit der Arbeit an Ihrem Design oder Plugin beginnen.
Um Compose zu stoppen, drücken Sie CTRL+C .environment-VariablenWenn Sie Compose in einem getrennten Modus starten möchten, verwenden Sie das -d Flagge:
docker-compose up -d
Um die laufenden Dienste zu überprüfen, verwenden Sie den ps Möglichkeit:
docker-compose ps Name Command State Ports
----------------------------------------------------------------------------------
my_app_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
my_app_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Wenn Compose im getrennten Modus ausgeführt wird, um die Dienste zu stoppen, verwenden Sie:
docker-compose stop
Um die Container vollständig zu entfernen, verwenden Sie den down Möglichkeit:
docker-compose down
Übergeben der --volumes Schalter entfernt auch die Datenmengen:
docker-compose down --volumes Docker Compose deinstallieren #
Wenn Sie Docker Compose deinstallieren möchten, löschen Sie einfach die Binärdatei mit dem folgenden Befehl:
sudo rm /usr/local/bin/docker-compose