Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 9379|Svar: 0

Filen eller mappen existerar inte när Docker-volymen är monterad

[Kopiera länk]
Publicerad på 2021-11-08 09:20:35 | | |
Bakgrund

Docker-volymen låter oss dynamiskt montera vissa filer (som konfigurationsfiler) för att skriva över originalfilerna i bilden när vi startar en docker-container, men vad händer om vi monterar en mapp eller fil som ännu inte finns på värden till containern? LZ stötte på ett sådant problem i sitt arbete, så han övade själv på det och antecknade de experimentella resultaten enligt följande:

Mappfäste

Dockers beteende vid mappmontering är enhetligt, enligt följande:

  • Om mappen inte finns skapas mappen först (eller rekursivt om det är en flernivåmapp)
  • Skriv över mappens innehåll i container med mappinnehållet på värden


Detaljerna är följande:

Mappen på värden finns och är inte tom

värd
behållare
Resultat av monteringen
Icke-tom mapp A existerarMapp B som inte existerarSkapa mapp B i Contanier först, och kopiera sedan alla filer i mapp A till B
Icke-tom mapp A existerarIcke-tom mapp B existerarTöm först originalinnehållet i containermappen Kinesisk B och kopiera sedan A kinesisk kopia till B

Oavsett om mapp B i containern existerar, kommer A att skriva över B:s innehåll helt

Mappen på värden finns, men är tom

värd
behållare
Resultat av monteringen
Tom mapp A som finnsIcke-tom mapp B existerarInnehållet i container-mappen Kinesisk B töms

Innehållet i motsvarande mapp i behållaren töms

Värdmappen finns inte

värd
behållare
Resultat av monteringen
Mapp A som inte existerarIcke-tom mapp B existerarSkapa mapp A på värden, och innehållet i containerns kinesiska mapp B töms
Mappar A/B/C som inte existerarIcke-tom mapp B existerarSkapa mappar A/B/C på värden, och innehållet i container-kinesiska mapp B töms

Innehållet i motsvarande mapp i behållaren töms

sammanfattning

Värdmappen kommer definitivt att skriva över containerns kinesiska mapp:

värd
behållare
Resultat av monteringen
Mappen finns inte/mappen finns men är tomMappen existerar inte/existerar men är tom/existerar och är inte tomBehållare Kinesisk bit täcks (töms)
Mappen finns och är inte tomMappen existerar inte/existerar men är tom/existerar och är inte tominnehållet i containerkinesiska mappar skrivs över (originalinnehållet töms och innehållet i mappen på värden skrivs över)

Filmontering

Den största skillnaden mellan filmontering och mappmontering är:

  • Docker förbjuder att montera filer som inte finns på värden till filer som redan finns i containern
  • Filmontering har ingen effekt på andra filer under samma mapp

Dessutom är dess överskrivningsbeteende förenligt med mappmontering, dvs.:

  • Skriv över innehållet i filen i containern med innehållet i filen på värden


Detaljerna är följande:

värd

värd
behållare
Resultat av monteringen
Filer som inte existerar configA.jsDokument som redan finns congfigB.jsFel, försöker du montera en katalog på en fil (eller tvärtom)? Kontrollera om den specificerade värdvägen finns och är den förväntade typen. Den genererar två tomma kataloger configA.js och configB.js på värden samtidigt, men containern kan inte starta

värd

värd
behållare
Resultat av monteringen
Nuvarande akt configA.jsNuvarande akt congfigB.jscontainerkinesiska objekt configB.js förbli detsamma, men filinnehållet skrivs över av congfigA.js innehåll
Nuvarande akt configA.jsFiler som inte existerar congfigB.jsEn ny fil configB.js i containern med innehållet i den configA.js filen förblir oförändrad configB.js alla andra filer under filen

sammanfattning

Filen på värddatorn skriver alltid över containermappen på kinesiska

värd
behållare
Resultat av monteringen
Filer som inte existerarDokument som redan finnsFörbjudna handlingar
Dokument som finnsFiler som inte finns / filer som redan finnsLägg till/överskriv (skapar en katalog om den inte finns)

slutsats

Mappfäste

  • Om du tillåter icke-existerande mappar eller tomma mappar att monteras i containern, kommer motsvarande mappar i containern att tömmas
  • Att bifoga en icke-tom mapp till en container kommer att skriva över den ursprungliga mappen i containern

Filmontering

  • Det är förbjudet att montera icke-existerande filer på filer som redan finns i containern
  • Befintliga filer skrivs över när de kopplas till containern, och om filerna inte finns kommer de att skapas

Tillämpningsscenarier

  • Av ovanstående analys kan man se att mappmontering används för att skriva över filer i hela mappen, så det kan användas när ett stort antal filer behöver monteras i containern, dessutom, om en tom mapp eller en icke-existerande mapp monteras, används det vanligtvis omvänt: det vill säga, efter att containern startats kan vissa filer (såsom loggar) genereras under mappen för monteringspunkten i containern, och vid denna tidpunkt kan den ses direkt i mappen på motsvarande värd.
  • Filmontering används ofta för att montera konfigurationsfiler för att dynamiskt ändra standardkonfigurationen vid körning eftersom det bara skriver över en enda fil utan att påverka andra filer i samma mapp i containern.

Överförd från:Inloggningen med hyperlänken är synlig.

(Slut)




Föregående:Elasticsearch använder elasticdump för att säkerhetskopiera och migrera data
Nästa:Docker POI-felundantagslösning
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com