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
Es gibt die folgenden Mechanismen von Docker, und ich denke, dass der Mechanismus zur Lösung jedes Mechanismus Volumen ist.
--Host Volume? (Ich kenne den genauen Namen nicht)
Beginnen wir mit den Fällen, in denen jeder benötigt wird
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
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.
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)
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.
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)
Recommended Posts