Band 3 Arten von Docker Compose aus dem Zweck betrachtet

Einführung

Um die folgenden Erfahrungen und egoistischen Überzeugungen zu beseitigen Ich habe es aus der Perspektive geschrieben, dass es leicht zu verstehen ist, wenn ich so denke

――Was ist .:! Die anfängliche Verwirrung

Warum Docker Volumen benötigt

Es gibt die folgenden Mechanismen von Docker, und ich denke, dass der Mechanismus zur Lösung jedes Mechanismus Volumen ist.

3 Arten von Volumen

--Host Volume? (Ich kenne den genauen Namen nicht)

Beginnen wir mit den Fällen, in denen jeder benötigt wird

Docker-Volume aus Sicht

Behalten Sie die Daten im Container bei => Möglich für alle Volumes

Wenn der Container gestoppt wird, werden die Daten im Container normalerweise nicht beibehalten (= nicht beibehalten). Der Mechanismus, um dies dauerhaft zu machen, ist das Volumen Beispiel) Alle Elemente, die nicht jedes Mal verloren gehen sollten, einschließlich DB-Daten

Synchronisation zwischen Host (lokale Seite) und Container => möglich mit Host-Volume

Während Docker den Host-Container als unabhängige Umgebung behandelt, ist es möglich, ein bestimmtes Verzeichnis auf der Host-Seite bereitzustellen und Daten zwischen Host und Container zu synchronisieren. Beispiel) Wenn die auf dem Host bearbeitete Datei jederzeit im Container angezeigt wird, z. B. in der Entwicklungsumgebung.

Volumen mit mehreren Containern teilen => möglich mit benanntem Volumen

Normalerweise werden Container als unabhängige Umgebungen behandelt und Dateien werden nicht gemeinsam genutzt. Teilen Sie Dateien einfach zwischen Containern, indem Sie ein benanntes Volume verwenden Beispiel) Beim Teilen mit statischem Inhalt zwischen Webserver (Container) und Anwendungsserver (Container)

Das? Was ist mit anonymem Volume? ??

Ich denke, dies ist ausreichend für Fälle, in denen Sie nur die Persistenz sicherstellen möchten, nicht mit dem Host synchronisieren müssen und nicht mit anderen Containern teilen müssen. Als Teil eines dauerhaften, gemeinsam genutzten Volumes Ich bin der Meinung, dass dies in Fällen effektiv ist, in denen Sie es wagen, die Unabhängigkeit zwischen Containern aufrechtzuerhalten. Beispielsweise können einige Verzeichnisse unter dem Volume, auf dem der Host bereitgestellt ist, als anonymes Volume getrennt werden, und der durch das anonyme Volume angegebene Pfad kann die Unabhängigkeit zwischen Containern sicherstellen.

Einstellungsbeispiel --Docker Volume 3-Typen

host mount: <host_path>:<container_path> Hängen Sie das Host-Verzeichnis ein und synchronisieren Sie es mit dem Pfad im Container

volumes:
  - .:/myapp # .(Aktuelles Verzeichnis)Montieren und in den Behälter/Mit myapp synchronisieren

named volume: <volume_name>:<container_path> Behandelt den Pfad im Container als Volume und macht ihn dauerhaft. Durch die Benennung kann er problemlos mit anderen Containern geteilt werden. ** Auch unter dem vom Host bereitgestellten Pfad wird das benannte Volume als ein anderes Volume behandelt und von der Hostseite getrennt **

volumes:
  - node_modules:/myapp/node_modules #Pfad im Container als Volume, Knoten beibehalten_Verwalten Sie mit den Namensmodulen

anonymous volume: <container_path> Der Unterschied zum benannten Volume besteht darin, dass es anonym ist, keinen Namen hat (ihm jedoch ein zufälliger Hash zugewiesen wurde) und dass es in Ordnung sein sollte, wenn Sie es nur persistent machen möchten, ohne davon auszugehen, dass es für andere Container freigegeben wird.

volumes:
  - /myapp/node_modules #Beschreiben Sie nur den Pfad im Container und machen Sie ihn als Volume dauerhaft

(Geplant, jederzeit aktualisiert zu werden)

Referenz

Häufige Optionen, die Sie kennen müssen, um "Docker Compose, ich verstehe ein wenig" zu werden - Referenz zur Dateiversion 3 (3.8) ---- Qiita

Recommended Posts

Band 3 Arten von Docker Compose aus dem Zweck betrachtet
Docker-Überwachung - Erläuterung der Grundlagen der Grundlagen
[Zusammenfassung der technischen Bücher] Zusammenfassung der Lektüre "Lernen Sie Docker aus den Grundlagen"
Vergleich von null-toleranten, null-toleranten und null-toleranten sicheren Typen aus der Perspektive der Null-Sicherheit
Ab Java9 werden Klassenkonstruktoren, die primitiven Typen entsprechen, als veraltet markiert.
[Herausforderung CircleCI von 0] Lernen Sie die Grundlagen von CircleCI
Untersuchen Sie den Ersatz von Docker zu Podman.
Die Geschichte der Aktualisierung des Docker-Containers von Sonar Qube
[Docker von 0 herausfordern] Übersicht und Bedingungen von Docker
Die Geschichte von RxJava, das unter NoSuchElementException leidet
Finden Sie den Unterschied von einem Vielfachen von 10
Hat sich der Inhalt von useBodyEncodingForURI von Tomcat8 geändert?
[Docker] Einführung in Docker Compose Grundlegende Zusammenfassung von Docker-Compose.yml
Verbessern Sie die Leistung der Docker-Entwicklungsumgebung
Ändern Sie den Docker-Image- und Container-Platzierungsordner