Pozadie
Docker volume nám umožňuje dynamicky pripojiť niektoré súbory (napríklad konfiguračné súbory) tak, aby sme prepísali pôvodné súbory v obraze pri spustení docker kontajnera, ale čo sa stane, ak pripojíme priečinok alebo súbor, ktorý ešte neexistuje na hostiteľovi, do tohto kontajnera? LZ sa s takýmto problémom stretol vo svojej práci, preto si ho sám precvičil a výsledky experimentu zaznamenal nasledovne:
Držiak na zložky
Správanie Dockeru pri upevňovaní zložiek je jednotné, nasledovne:
- Ak priečinok neexistuje, najskôr sa vytvorí (alebo rekurzívne, ak ide o viacúrovňový priečinok)
- Prepíšte obsah priečinka v kontajneri obsahom priečinka na hostiteľovi
Podrobnosti sú nasledovné:
Priečinok na hostiteľi existuje a nie je prázdny
hostiteľ | kontajner | Výsledok montáže | | Existuje neprázdny priečinok A | Priečinok B, ktorý neexistuje | Najprv vytvor priečinok B v contanieri a potom skopíruj všetky súbory z priečinka A do B | | Existuje neprázdny priečinok A | Existuje neprázdny priečinok B | Najprv vyprázdnite pôvodný obsah čínskeho priečinka B a potom skopírujte čínsku kópiu A do B |
Bez ohľadu na to, či v kontajneri existuje priečinok B, A úplne prepíše obsah B
Priečinok na hostiteľovi existuje, ale je prázdny
hostiteľ | kontajner | Výsledok montáže | | Prázdny priečinok A, ktorý existuje | Existuje neprázdny priečinok B | Obsah kontajnera čínskeho priečinka B je vyprázdnený |
Obsah príslušného priečinka v kontajneri sa vyprázdni
Hostiteľský priečinok neexistuje
hostiteľ | kontajner | Výsledok montáže | | Priečinok A, ktorý neexistuje | Existuje neprázdny priečinok B | Vytvor priečinok A na hostiteľovi a obsah čínskeho priečinka B sa vyprázdni | | Priečinky A/B/C, ktoré neexistujú | Existuje neprázdny priečinok B | Vytvoria priečinky A/B/C na hostiteľi a obsah čínskeho priečinka B sa vyprázdni |
Obsah príslušného priečinka v kontajneri sa vyprázdni
súhrn
Hostiteľský priečinok určite prepíše kontajnerový čínsky priečinok:
hostiteľ | kontajner | Výsledok montáže | | Priečinok neexistuje/zložka existuje, ale je prázdna | Priečinok neexistuje/existuje, ale je prázdny/existuje a nie je prázdny | Nádoba na čínsky kus je zakrytá (vyprázdnená) | | Priečinok existuje a nie je prázdny | Priečinok neexistuje/existuje, ale je prázdny/existuje a nie je prázdny | obsah čínskych priečinkov v kontajneri sa prepíše (pôvodný obsah sa vyprázdni a obsah priečinka na hostiteľovi sa prepíše) |
Montáž súboru
Najväčší rozdiel medzi montážou súborov a montážou zložiek je:
- Docker zakazuje pripájanie súborov, ktoré na hostiteľovi neexistujú, na súbory, ktoré už v kontajneri existujú
- Pripájanie súborov nemá žiadny vplyv na iné súbory v tom istom priečinku
Okrem toho je jeho správanie pri prepisovaní konzistentné s pridávaním priečinkov, t.j.:
- Prepíšte obsah súboru v kontajneri obsahom súboru na hostiteľovi
Podrobnosti sú nasledovné:
hostiteľ
hostiteľ | kontajner | Výsledok montáže | | Súbory, ktoré neexistujú, configA.js | Dokumenty, ktoré už existujú, congfigB.js | Chyba, snažíte sa pripojiť adresár na súbor (alebo naopak)? Skontrolujte, či existuje špecifikovaná hostiteľská cesta a či je to očakávaný typ. Generuje dva prázdne adresáre configA.js a configB.js na hostiteľi súčasne, ale kontajner sa nemôže spustiť |
hostiteľ
hostiteľ | kontajner | Výsledok montáže | | Súčasný súbor configA.js | Súčasný súbor congfigB.js | kontajner čínsky predmet configB.js zostať rovnaký, ale obsah súboru je prepísaný congfigA.js obsahom | | Súčasný súbor configA.js | Súbory, ktoré neexistujú, congfigB.js | Nový súbor configB.js v kontajneri s obsahom configA.js zostáva nezmenený configB.js všetky ostatné súbory pod súborom |
súhrn
Súbor na hostiteľovi vždy prepíše zložku s čínskym kontajnerom
hostiteľ | kontajner | Výsledok montáže | | Súbory, ktoré neexistujú | Dokumenty, ktoré už existujú | Zakázané činy | | Existujúce dokumenty | Súbory, ktoré neexistujú / súbory, ktoré už existujú | Pridaj/prepíš (vytvorí adresár, ak neexistuje) |
záver
Držiak na zložky
- Ak povolíte vloženie neexistujúcich alebo prázdnych priečinkov do kontajnera, príslušné priečinky v kontajneri sa vyprázdnia
- Priradenie neprázdneho priečinka ku kontajneru prepíše pôvodný priečinok v kontajneri
Montáž súboru
- Je zakázané montovať neexistujúce súbory na súbory, ktoré už v kontajneri existujú
- Existujúce súbory budú prepísané, keď sú pripojené ku kontajneru, a ak súbory neexistujú, budú vytvorené
Aplikačné scenáre
- Z vyššie uvedenej analýzy je vidieť, že pripájanie priečinkov sa používa na prepísanie súborov v celom priečinku, takže sa môže použiť, keď je potrebné do kontajnera vložiť veľké množstvo súborov, a navyše, ak je pripojený prázdny priečinok alebo neexistujúci priečinok, zvyčajne sa používa opačne: to znamená, že po spustení kontajnera môžu byť niektoré súbory (napríklad logy) vygenerované pod priečinkom montážneho bodu v kontajneri a v tomto čase sú priamo viditeľné v priečinku na príslušnom hostiteľovi.
- Pripájanie súborov sa často používa na pripojenie konfiguračných súborov s cieľom dynamicky upraviť predvolenú konfiguráciu za behu, pretože prepíše len jeden súbor bez ovplyvnenia ostatných súborov v tom istom priečinku v kontajneri.
Prenesené z:Prihlásenie na hypertextový odkaz je viditeľné.
(Koniec) |