Docker Compact Manual (3: Docker-Compose)

Zunaechst

Dieser Artikel "Docker Compact Manual" besteht aus 4 Elementen. Weitere Artikel finden Sie hier.

Postleitzahl Untertitel und Zugriffsziel
1 Grundlegende / grundlegende Befehle
2 Mount- und Datenpersistenz
3 docker-compose (* Dieser Beitrag)
4 Erstellen Sie ein benutzerdefiniertes Bild

Zweck dieses Artikels

In diesem Artikel möchte ich Docker-compose zusammenfassen, das mehrere Container gleichzeitig startet.

docker-compose Verwenden mehrerer Container in Kombination auf dem Docker-Host Dies ist über das Docker-Netzwerk möglich. Als Problem ist es jedoch erforderlich, die Reihenfolge des Starts zu kennen und auszuführen. Führen Sie auch in diesem Fall "Docker Run" aus und benennen Sie es mit "--name". Setze die Halterung mit --mount ... Sie müssen die langen Befehle auf jeden Fall nacheinander ausführen. ~~ Es ist nervig! ~~

Durch Lesen der Definitionsdatei wird eine Reihe von Vorgängen zum Erstellen, Stoppen und Zerstören dieses komplizierten Containers ausgeführt Sie können "Docker-Compose" ausführen.

1d54fa053d39.jpg

docker-compose befindet sich in der Definitionsdatei (docker-compose.yml) Sammeln Sie die Dateien, die Sie ausführen / kopieren möchten, in einem Verzeichnis. Wenn diese Datei mit einem Tool namens Docker-Compose ausgeführt wird, werden Volumes und Netzwerke erstellt. Die Container beginnen zusammen.

Vorteile von Docker-Compose

  1. Es ist nicht erforderlich, lange Argumente wie Docker Run anzugeben, die in der Vergangenheit erforderlich waren.
  2. Sie können mehrere Container gleichzeitig starten.
  3. Sie können auch die Startreihenfolge angeben
  4. Container können sofort gestoppt / zerstört werden
  5. Initialisierungsvorgänge wie die Befehlsausführung können nach dem Start des Containers ausgeführt werden.

Installieren Sie Docker-Compose

Es ist ein Tool von Python, das Docker-Compose und Docker unterstützt. Da es von Docker Engine getrennt ist, muss es separat installiert werden. Docker für Mac, Windows enthält Compose Wenn Sie das oben genannte installiert haben, müssen Sie sich dessen nicht bewusst sein. Für alle Fälle können Sie die unten stehende Version von Docker-Compose überprüfen.

docker-compose --version
docker-compose version 1.27.2, build 18f557f9

Docker-Compose-Operation

Docker-Compose ist ein "Docker-Compose-Befehlsoptionsargument" Verarbeiten Sie die Datei "docker-compose.yml" und führen Sie sie aus.

Es gibt viele Befehle, aber den, den ich am häufigsten benutze Ich denke, es gibt sechs davon: up`` down`` start`` stop run exec`. Die folgende Tabelle ist ein Auszug aus den anderen Befehlstypen.

-Docker-Compose-Befehl

Befehl Befehlsinhalt
up Erstellen und starten Sie einen Container
down Stoppen und löschen Sie alle Container, Netzwerke, Bilder und Volumes.
Das Image und das Volume müssen jedoch durch optionale Argumente angegeben werden.
start Dienst starten
stop Dienst anhalten
run Führen Sie den Container aus
exec Führen Sie einen Befehl aus
ps Container auflisten
config Überprüfen und Anzeigen von Dateien erstellen
kill Den Behälter gewaltsam anhalten
restart Starten Sie den Dienst neu
build Erstellen oder erstellen Sie das Image für den Dienst neu
events Echtzeit-Ereignisempfang vom Container

Die häufig verwendeten Befehlsargumente "up" lauten wie folgt. Ich denke, die am häufigsten verwendete Option ist "-d".

-Docker-komponieren optionales Argument

up Option Optionsinhalt
-d Wird im Trennmodus ausgeführt (Hintergrundoperation). Ich denke, ich benutze es oft.
--no-deps Verknüpfte Dienste nicht anzeigen
--force-recreate Generieren Sie den Container neu, auch wenn keine Änderungen an den Einstellungen oder Bildern vorgenommen wurden.
--no-Kann nicht gleichzeitig mit der Neuerstellung angegeben werden
--no-create Wenn der Container bereits vorhanden ist, wird er nicht neu generiert.
--force-Kann nicht gleichzeitig mit der Neuerstellung angegeben werden
--no-build Nicht erstellen, wenn das Bild nicht gefunden wurde
--build Erstellen Sie das Image, bevor Sie den Container starten
--abort-on-container-exit Wenn auch nur ein Container gestoppt ist, stoppen Sie alle Container.
-Kann nicht gleichzeitig mit der Option d angegeben werden
-t,--timeout ** Die Anzahl der Sekunden, die beim Anhalten des Containers abgelaufen sind. Die Regelung beträgt 10 Sekunden
--remove-orpahns Entfernen Sie den Container für Dienste, die nicht in der Compose-Datei definiert sind

In ähnlicher Weise hat "down" ein optionales Argument. Wenn Sie viele Bilder haben oder diese beim nächsten Mal nicht verwenden möchten Ich denke, es ist besser, es mit down mit --rmi zu löschen. Wenn Sie "Docker-Compose Down --rmi all --volumes" sagen Sie können alle Bilder und Volumes gleichzeitig löschen.

-Docker-compose down optionales Argument

Option nach unten Optionsinhalt
--rmi all, local Das Bild wird auch gelöscht, nachdem es zerstört wurde.
Wenn alle angegeben sind, werden alle verwendeten Bilder gelöscht.
Bei lokalen Dateien sind nur Bilder ohne benutzerdefinierte Tags im Bild verfügbar.
--v,--volumes Löschen Sie die in Volumes beschriebenen Volumes.
Die als extern angegebenen sind jedoch ausgeschlossen.
--remove-orphans docker-compose.Löschen Sie Container für Dienste, die nicht in yml definiert sind

Hinweise zum Docker-Compose nach unten, oben

Wenn sich die Datei "docker-compose.yml" beim Ausführen von "docker-compose up" und "down" unterscheidet docker-compose down funktioniert anhand der aktuellen docker-compose.yml-Datei. Wenn die Containerbeschreibung seit "up" gelöscht wurde, wird der Container auch dann nicht zerstört, wenn "down". Achten Sie darauf, den Container nicht gelöscht zu lassen oder den Container oder das Netzwerk unbeabsichtigt zu löschen.

So schreiben Sie eine docker-compose.yml-Datei

Für docker-compose.yml sind drei Definitionen erforderlich: Dienst, Netzwerk und Volume. Beschreiben Sie außerdem in der Datei im yml-Format in eingerückten Blockeinheiten. Wenn der Einzug falsch ist, wird die Beschreibung nicht wiedergegeben und es tritt ein Fehler auf. Beachten Sie auch, dass Tabulatorzeichen nicht zum Einrücken verwendet werden können.

Die für docker-compose.yml erforderliche Beschreibung lautet wie folgt.

1. Versionsdefinition

Ab September 2020.9 ist Version 3.8 die neueste. Wenn in der Versionsspezifikation "3" beschrieben wird, wird "3.0" angewendet. Wenn Sie die Einstellung der Nebenversion wiedergeben möchten, wird sie nur wiedergegeben, wenn Sie sie als "3.8" schreiben.

Note: When specifying the Compose file version to use, make sure to specify both the major and minor numbers. If no minor version is given, 0 is used by default and not the latest minor version. As a result, features added in later versions will not be supported.

Compose-versioning

2. Service

Es bezieht sich auf jeden Behälter, aus dem das Ganze besteht. Es ist die Basis der Einstellung docker-compose.yml.

Serviceeinstellungen werden im folgenden Format beschrieben.

services:
Service Ein Name:
Service A-Einstellungen
・ ・ ・
Name von Service B.:
Service B-Einstellungen

・ Hauptdiensteinstellungen Nachstehend finden Sie eine Liste der Diensteinstellungen, die auf der offiziellen Website wahrscheinlich häufig verwendet werden. Weitere Informationen finden Sie auf der offiziellen Website. Compose file referende

Serviceartikel Inhalt Zusatzinformationen
image Geben Sie das zu verwendende Bild an redis,postgres,MySQL usw.
ports Verwenden Sie die Portzuordnung postgres 5432:5432 usw.
build Zur Erstellungszeit einstellen.
Als Zeichenfolge, die den Pfad zum Build-Kontext enthält
Kann angegeben werden.
build .Im Falle von
Docker-Datei im aktuellen Verzeichnis
verweisen.
depends_on Zeigt an, dass dies von einem anderen Dienst abhängt.
docker-compose up,Wenn unten
Der angegebene Dienst wird zuerst gestartet oder beendet
Wird kommen, um zu tun.
Wird für die Einstellung auf db auf der App-Seite usw. verwendet.
volumes Definieren Sie Bind-Mounts und Volume-Mounts --Geben Sie wie die Mount-Option ein:,source:etc
Es ist auch möglich, in detaillierten Einstellungen zu beschreiben
command Überschreiben Sie den Standardstartbefehl Bündel Exec Rails s etc.
environment Umgebungsvariablen festlegen. DB-Passwort, Benutzername usw.

Es gibt viele andere Serviceeinstellungselemente als die oben genannten, und es wird empfohlen, diese einmal zu lesen. Ab Version 3.8 wurde eine Beschreibungseinstellung hinzugefügt, die die Anzahl der Replikatsätze angibt. Es gibt Updates auch für kleinere Versionen. Seien Sie also vorsichtig, wenn Sie die Version angeben.

3. Netzwerk

Definieren Sie das Netzwerk, an dem der Dienst teilnimmt. Da es oft weggelassen wird, werde ich es weglassen.

4. Lautstärke

Definiert das vom Container verwendete Volumen. Sie können optional den Treibernamen usw. angeben. Das Folgende sind die Hauptoptionen.

Artikel Inhalt
driver Name des Volume-Treibers
driver_opts Lautstärkeoptionen. NFS etc.
external docker-compose Gibt an, dass das Volume nicht verwaltet wird.
Dieses Volume muss im Voraus erstellt werden.
external true, external: name:Wenn angegeben von etc.
docker-compose down -Es wird nicht gelöscht, auch wenn Sie v.

Individueller Servicebetrieb mit Docker-Compose

Manchmal möchten Sie vielleicht nur einen Container starten oder betreiben. Zu diesem Zeitpunkt können Sie den Docker-Befehl verwenden, jedoch den Docker-Compose-Befehl Basierend auf der Datei docker-compose.yml können Sie Befehle ausführen, die Abhängigkeiten berücksichtigen. (* Die Einstellung "abhängig von", mit der die Datenbank vor dem Ausführen der Anwendung gestartet wird, wird angezeigt usw.)

docker-Befehl komponieren Entsprechender Docker-Befehl Bewegung
docker-compose exec docker exec Befehlsausführung im Container
docker-compose run docker run Führen Sie einen bestimmten Container aus
docker-compose start docker start Starten Sie einen bestimmten Dienst
docker-compose stop docker stop Stoppen Sie bestimmte Dienste
docker-compose rm docker rm Löschen Sie einen gestoppten Container
docker-compose logs docker logs Zeigen Sie die Ausgabe des Containers an

Führen Sie den Befehl wie unten gezeigt aus, wenn Sie einzelne Container bedienen. Ich denke, die am häufigsten verwendeten sind "exec" und "run". Das Folgende ist das, wenn die Shell-Ausführung mit / bin / bash in einem Container namens web ausgeführt wird. Für den Docker-Befehl ist "-it" erforderlich, für "Compose" sind diese Optionen jedoch nicht erforderlich. Dadurch wird die Eingabeaufforderung geändert und Sie können Befehle in den Container eingeben. (* 12e7a08bb0bd ist die Container-ID. Dies hängt von der Umgebung ab.)

❯ docker-compose exec web bash
root@12e7a08bb0bd:~# 
❯ docker-compose exec web bash
root@12e7a08bb0bd:~# ls -a
.		 .gem	     .rspec		Dockerfile	 README.md	  config	      log		 public       storage	      yarn.lock
..		 .git	     .rubocop.yml	Gemfile		 Rakefile	  config.ru	      memo.md		 public_data  tmp
.bash_history	 .github     .rubocop_todo.yml	Gemfile.lock	 app		  db

Dieser Artikel endet hier. Danke fürs Lesen.

Recommended Posts

Docker Compact Manual (3: Docker-Compose)
Docker Compact-Handbuch (1: Basic / Basic-Befehle)
Docker Compact-Handbuch (2: Mount und Datenpersistenz)
Docker Compact Manual (4: Erstellen eines benutzerdefinierten Bildes)
Installieren Sie Docker, Docker-Compose für Debin10
Docker
Installieren Sie Docker und Docker-Compose unter Alpine Linux