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 |
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.
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.
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 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 |
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.
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.
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.
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 vonDocker-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.
Definieren Sie das Netzwerk, an dem der Dienst teilnimmt. Da es oft weggelassen wird, werde ich es weglassen.
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. |
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:~#
ls -a
)❯ 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
Recommended Posts