Pozadí
Docker volume nám umožňuje dynamicky připojit některé soubory (například konfigurační soubory) tak, aby se původní soubory v obraze přepsali při spuštění docker kontejneru, ale co se stane, když připojíme složku nebo soubor, který na hostiteli ještě neexistuje, do kontejneru? LZ se s tímto problémem setkal ve své práci, a tak si ho sám procvičoval a výsledky experimentu zaznamenal následovně:
Držák na složky
Chování Dockeru při montáži složek je jednotné, a to následovně:
- Pokud složka neexistuje, vytvoří se nejprve (nebo rekurzivně, pokud jde o víceúrovňovou složku)
- Přepiš obsah složky v kontejneru obsahem složky na hostiteli
Podrobnosti jsou následující:
Složka na hostiteli existuje a není prázdná
hostitel | kontejner | Výsledek montáže | | Existuje neprázdná složka A | Složka B, která neexistuje | Nejprve vytvořte složku B v contanieru a pak zkopírujte všechny soubory ze složky A do B | | Existuje neprázdná složka A | Existuje neprázdná složka B | Nejprve vyprázdnit původní obsah kontejneru čínské složky B a poté zkopírovat čínskou kopii A do B |
Bez ohledu na to, zda složka B v kontejneru existuje, A zcela přepíše obsah B
Složka na hostiteli existuje, ale je prázdná
hostitel | kontejner | Výsledek montáže | | Prázdná složka A, která existuje | Existuje neprázdná složka B | Obsah kontejneru čínské složky B je vyprázdněn |
Obsah příslušné složky v kontejneru je vyprázdněn
Složka hostitele neexistuje
hostitel | kontejner | Výsledek montáže | | Složka A, která neexistuje | Existuje neprázdná složka B | Vytvořte složku A na hostiteli a obsah kontejneru Chinese folder B je vyprázdněn | | Složky A/B/C, které neexistují | Existuje neprázdná složka B | Vytvořte složky A/B/C na hostiteli a obsah kontejneru Chinese folder B je vyprázdněn |
Obsah příslušné složky v kontejneru je vyprázdněn
shrnutí
Hostitelská složka určitě přepíše složku s čínským kontejnerem:
hostitel | kontejner | Výsledek montáže | | Složka neexistuje/složka existuje, ale je prázdná | Složka neexistuje/neexistuje, ale je prázdná/existuje a není prázdná | Nádoba s čínským kusem je zakrytá (vyprázdněná) | | Složka existuje a není prázdná | Složka neexistuje/neexistuje, ale je prázdná/existuje a není prázdná | Obsah čínských složek v kontejneru je přepsán (původní obsah je vyprázdněn a obsah složky na hostiteli přepsán) |
Montáž souboru
Největší rozdíl mezi montáží souborů a montáží složek je:
- Docker zakazuje připojování souborů, které na hostiteli neexistují, na soubory, které už v kontejneru existují
- Připojování souborů nemá žádný vliv na ostatní soubory ve stejné složce
Navíc jeho přepisování je konzistentní s přikládáním složek, tj.
- Přepiš obsah souboru v kontejneru obsahem souboru na hostiteli
Podrobnosti jsou následující:
hostitel
hostitel | kontejner | Výsledek montáže | | Soubory, které neexistují, configA.js | Dokumenty, které již existují, congfigB.js | Chyba, snažíte se připojit adresář na soubor (nebo naopak)? Zkontrolujte, zda existuje zadaná hostitelská cesta a je očekávaným typem. Generuje dva prázdné adresáře configA.js a configB.js na hostiteli současně, ale kontejner nemůže začít |
hostitel
hostitel | kontejner | Výsledek montáže | | Současný spis configA.js | Současný soubor congfigB.js | kontejner čínský předmět configB.js zůstat stejný, ale obsah souboru je přepsán congfigA.js obsahem | | Současný spis configA.js | Soubory, které neexistují, congfigB.js | Nový soubor configB.js v kontejneru s obsahem configA.js zůstává configB.js všechny ostatní soubory pod souborem nezměněn |
shrnutí
Soubor na hostiteli vždy přepíše složku s čínským kontejnerem
hostitel | kontejner | Výsledek montáže | | Soubory, které neexistují | Dokumenty, které již existují | Zakázané činy | | Existující dokumenty | Soubory, které neexistují / soubory, které už existují | Přidává/přepsává (vytvoří adresář, pokud neexistuje) |
závěr
Držák na složky
- Pokud povolíte vložení neexistujících nebo prázdných složek do kontejneru, příslušné složky v kontejneru budou vyprázdněny
- Připojení neprázdné složky ke kontejneru přepíše původní složku v kontejneru
Montáž souboru
- Je zakázáno připojovat neexistující soubory na soubory, které již v kontejneru existují
- Existující soubory budou přepsány, když jsou připojeny ke kontejneru, a pokud soubory neexistují, budou vytvořeny
Scénáře použití
- Z výše uvedené analýzy je patrné, že připojení složek slouží k přepsání souborů v celé složce, takže může být použito při vložení velkého počtu souborů do kontejneru, a navíc, pokud je připojena prázdná složka nebo neexistující složka, obvykle se používá opačně: to znamená, že po spuštění kontejneru mohou být některé soubory (například logy) generovány pod složkou připojovacího bodu v kontejneru a v tuto chvíli jsou přímo viditelné ve složce na příslušném hostiteli.
- Připojení souborů se často používá k připojení konfiguračních souborů za účelem dynamické úpravy výchozí konfigurace za běhu, protože přepisuje pouze jeden soubor, aniž by ovlivnil ostatní soubory ve stejné složce v kontejneru.
Převedeno z:Přihlášení k hypertextovému odkazu je viditelné.
(Konec) |