Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 9379|Răspunde: 0

Fișierul sau folderul nu există atunci când volumul Docker este montat

[Copiază linkul]
Postat pe 08.11.2021 09:20:35 | | |
Fond

Volumul Docker ne permite să montăm dinamic unele fișiere (cum ar fi fișierele de configurare) pentru a suprascrie fișierele originale din imagine atunci când pornim un container Docker, dar ce se întâmplă dacă montăm un folder sau un fișier care încă nu există pe gazdă în container? LZ a întâmpinat o astfel de problemă în lucrările sale, așa că a exersat-o singur și a înregistrat rezultatele experimentale astfel:

Montare pentru foldere

Comportamentul Docker la montarea folderelor este uniform, după cum urmează:

  • Dacă folderul nu există, acesta este creat mai întâi (sau recursiv dacă este un folder multinivel)
  • Suprascrie conținutul folderului în container cu conținutul folderului pe gazdă


Detaliile sunt următoarele:

Folderul de pe gazdă există și nu este gol

gazdă
container
Rezultatul montajului
Există folderul negolit AFolderul B care nu existăCreează mai întâi folderul B în contanier, apoi copiază toate fișierele din folderul A în B
Există folderul negolit AFolderul negol B existăMai întâi, golește conținutul original al folderului container chinezesc B, apoi copiază copia chineză A în B

Indiferent dacă folderul B există sau nu, A va suprascrie complet conținutul lui B

Folderul de pe host există, dar este gol

gazdă
container
Rezultatul montajului
Dosarul A gol care existăFolderul negol B existăConținutul containerului din dosarul chinezesc B este golit

Conținutul folderului corespunzător din container este golit

Folderul gazdă nu există

gazdă
container
Rezultatul montajului
Folderul A care nu existăFolderul negol B existăCreează folderul A pe gazdă, iar conținutul folderului chinezesc container B este golit
Foldere A/B/C care nu existăFolderul negol B existăCreează folderele A/B/C pe gazdă, iar conținutul folderului container Chinese B este golit

Conținutul folderului corespunzător din container este golit

rezumat

Folderul gazdă va suprascrie cu siguranță folderul chinezesc container:

gazdă
container
Rezultatul montajului
Folderul nu există/folderul există, dar este golFolderul nu există/există, dar este gol/există și nu este golBucata chinezească din container este acoperită (golită)
Folderul există și nu este golFolderul nu există/există, dar este gol/există și nu este golconținutul folderului chinezesc container este suprascris (conținutul original este golit, iar conținutul folderului de pe gazdă este suprascris)

Montare de fișier

Cea mai mare diferență între montarea fișierelor și montarea folderelor este:

  • Docker interzice montarea fișierelor care nu există pe gazdă către fișiere care deja există în container
  • Montarea fișierelor nu are niciun efect asupra celorlalte fișiere din același folder

În plus, comportamentul său de suprascriere este consistent cu montarea folderelor, adică:

  • Suprascrie conținutul fișierului din container cu conținutul fișierului de pe gazdă


Detaliile sunt următoarele:

gazdă

gazdă
container
Rezultatul montajului
Fișiere care nu există configA.jsDocumente care deja există congfigB.jsEroare, încerci să montezi un director pe un fișier (sau invers)? Verifică dacă calea gazdă specificată există și este tipul așteptat. Generează două directoare goale configA.js și configB.js pe gazdă în același timp, dar containerul nu poate porni

gazdă

gazdă
container
Rezultatul montajului
Dosarul prezent configA.jsDosar prezent congfigB.jselementul container chinezesc configB.js rămâne aceleași, dar conținutul fișierului este suprascris de conținutul congfigA.js
Dosarul prezent configA.jsFișiere care nu există congfigB.jsUn fișier nou configB.js în container împreună cu conținutul fișierului configA.js rămâne neschimbat configB.js toate celelalte fișiere din fișier

rezumat

Fișierul de pe gazdă va suprascrie întotdeauna folderul chinezesc al containerului

gazdă
container
Rezultatul montajului
Fișiere care nu existăDocumente care există dejaActe interzise
Documente care existăFișiere care nu există / fișiere care există dejaAdaugă/suprascrie (creează un director dacă nu există)

concluzie

Montare pentru foldere

  • Dacă permiți montarea folderelor inexistente sau a folderelor goale în container, folderele corespunzătoare din container vor fi golite
  • Atașarea unui folder negolit la un container va suprascrie folderul original din container

Montare de fișier

  • Este interzis să se monteze fișiere inexistente pe fișiere care deja există în container
  • Fișierele existente vor fi suprascrise când sunt atașate containerului, iar dacă fișierele nu există, ele vor fi create

Scenarii de aplicație

  • Din analiza de mai sus, se poate observa că montarea folderului este folosită pentru a suprascrie fișierele din întregul folder, deci poate fi folosită atunci când trebuie montate un număr mare de fișiere în container; în plus, dacă este montat un folder gol sau inexistent, este folosit în general invers: adică, după ce containerul este pornit, unele fișiere (cum ar fi jurnalele) pot fi generate sub folderul punctului de montare din container și, în acest moment, pot fi văzute direct în folderul de pe gazda corespunzătoare.
  • Montarea fișierelor este adesea folosită pentru a monta fișiere de configurare pentru a modifica dinamic configurația implicită la rulare, deoarece suprascrie doar un singur fișier fără a afecta celelalte fișiere din același folder din container.

Transferat din:Autentificarea cu hyperlink este vizibilă.

(Sfârșit)




Precedent:Elasticsearch folosește elasticdump pentru a face backup și a migra datele
Următor:Soluția excepțiilor de eroare POI Docker
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com