Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 9379|Odpoveď: 0

Súbor alebo priečinok neexistuje, keď je Docker zväzok pripojený

[Kopírovať odkaz]
Zverejnené 8. 11. 2021 9:20:35 | | |
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 APriečinok B, ktorý neexistujeNajprv 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 AExistuje neprázdny priečinok BNajprv 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ý existujeExistuje neprázdny priečinok BObsah 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ý neexistujeExistuje neprázdny priečinok BVytvor 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 BVytvoria 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ázdnaPriečinok neexistuje/existuje, ale je prázdny/existuje a nie je prázdnyNádoba na čínsky kus je zakrytá (vyprázdnená)
Priečinok existuje a nie je prázdnyPriečinok neexistuje/existuje, ale je prázdny/existuje a nie je prázdnyobsah čí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.jsDokumenty, ktoré už existujú, congfigB.jsChyba, 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.jsSúčasný súbor congfigB.jskontajner čínsky predmet configB.js zostať rovnaký, ale obsah súboru je prepísaný congfigA.js obsahom
Súčasný súbor configA.jsSúbory, ktoré neexistujú, congfigB.jsNový 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 dokumentySú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)




Predchádzajúci:Elasticsearch používa elasticdump na zálohovanie a migráciu dát
Budúci:Riešenie chybovej výnimky POI v Docker
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com