Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 9379|Svar: 0

Filen eller mappen eksisterer ikke, når Docker-volumenet monteres

[Kopier link]
Opslået på 08/11/2021 09.20.35 | | |
Baggrund

Docker-volumen tillader os dynamisk at mounte nogle filer (såsom konfigurationsfiler) for at overskrive de oprindelige filer i billedet, når vi starter en docker-container, men hvad sker der, hvis vi monterer en mappe eller fil, der endnu ikke findes på værten, til containeren? LZ stødte på et sådant problem i sit arbejde, så han øvede det selv og registrerede de eksperimentelle resultater som følger:

Faldskærmsbeslag

Dockers adfærd ved mappemontering er ensartet, som følger:

  • Hvis mappen ikke eksisterer, oprettes mappen først (eller rekursivt, hvis det er en flerniveau-mappe)
  • Overskriv mappeindholdet i containeren med mappeindholdet på host


Detaljerne er som følger:

Mappen på værten eksisterer og er ikke tom

vært
beholder
Mount Resultat
Ikke-tom mappe A eksistererMappe B, der ikke eksistererOpret først mappe B i Contanier, og kopier derefter alle filerne i mappe A til B
Ikke-tom mappe A eksistererIkke-tom mappe B eksistererFørst tømmer du det oprindelige indhold i container-kinesisk mappe B, og kopierer derefter A kinesisk kopi til B

Uanset om mappe B i beholderen eksisterer, vil A fuldstændigt overskrive B's indhold

Mappen på værten eksisterer, men er tom

vært
beholder
Mount Resultat
Tom mappe A, der eksistererIkke-tom mappe B eksistererIndholdet af containerens kinesiske mappe B tømmes

Indholdet af den tilsvarende mappe i beholderen tømmes

Værtsmappen eksisterer ikke

vært
beholder
Mount Resultat
Mappe A, der ikke eksistererIkke-tom mappe B eksistererOpret mappe A på værten, og indholdet af containerens kinesiske mappe B tømmes
Mapper A/B/C, der ikke eksistererIkke-tom mappe B eksistererOpret mapperne A/B/C på værten, og indholdet af container-kinesisk mappe B tømmes

Indholdet af den tilsvarende mappe i beholderen tømmes

resumé

Værtsmappen vil helt sikkert overskrive container-mappen kinesisk:

vært
beholder
Mount Resultat
Mappen eksisterer ikke/mappen eksisterer, men er tomMappen eksisterer ikke/eksisterer, men er tom/eksisterer og er ikke tomBeholder Kinesisk stykke er dækket til (tømt)
Mappen eksisterer og er ikke tomMappen eksisterer ikke/eksisterer, men er tom/eksisterer og er ikke tomindholdet i containerens kinesiske mappe overskrives (det oprindelige indhold tømmes, og indholdet af mappen på værten overskrives)

Filmontering

Den største forskel mellem filmontering og mappemontering er:

  • Docker forbyder montering af filer, der ikke findes på værten, til filer, der allerede findes i containeren
  • Filmontering har ingen effekt på andre filer under samme mappe

Derudover er dens overskrivningsadfærd konsistent med mappemontering, dvs.:

  • Overskriv indholdet af filen i containeren med indholdet af filen på værten


Detaljerne er som følger:

vært

vært
beholder
Mount Resultat
Filer, der ikke eksisterer configA.jsDokumenter, der allerede eksisterer congfigB.jsFejl, Prøver du at montere en mappe på en fil (eller omvendt)? Tjek om den specificerede hoststi eksisterer, og om den forventede type er. Den genererer to tomme mapper configA.js og configB.js på værten samtidig, men containeren kan ikke starte

vært

vært
beholder
Mount Resultat
Nuværende sag configA.jsNuværende fil congfigB.jscontainerkinesiske elementer configB.js forblive de samme, men filens indhold overskrives af det congfigA.js indhold
Nuværende sag configA.jsFiler, der ikke eksisterer congfigB.jsEn ny fil configB.js i beholderen med indholdet af den configA.js fil forbliver uændret configB.js alle andre filer under filen

resumé

Filen på værten vil altid overskrive containerens kinesiske mappe

vært
beholder
Mount Resultat
Filer, der ikke eksistererDokumenter, der allerede eksistererForbudte handlinger
Eksisterende dokumenterFiler, der ikke eksisterer / filer, der allerede eksistererTilføje/overskriv (opretter en mappe, hvis den ikke findes)

konklusion

Faldskærmsbeslag

  • Hvis du tillader, at ikke-eksisterende mapper eller tomme mapper monteres i containeren, vil de tilsvarende mapper i containeren blive tømt
  • Hvis man vedhæfter en ikke-tom mappe til en container, vil den oprindelige mappe i containeren overskrive

Filmontering

  • Det er forbudt at montere ikke-eksisterende filer på filer, der allerede findes i containeren
  • Eksisterende filer vil blive overskrevet, når de tilknyttes containeren, og hvis filerne ikke eksisterer, vil de blive oprettet

Anvendelsesscenarier

  • Ud fra ovenstående analyse kan man se, at mappemontering bruges til at overskrive filer i hele mappen, så det kan bruges, når et stort antal filer skal monteres i containeren; derudover, hvis en tom mappe eller en ikke-eksisterende mappe monteres, bruges det generelt omvendt: det vil sige, efter containeren er startet, kan nogle filer (såsom logs) genereres under mappen for monteringspunktet i containeren, og på dette tidspunkt kan det ses direkte i mappen på den tilsvarende vært.
  • Filmontering bruges ofte til at mounte konfigurationsfiler for dynamisk at ændre standardkonfigurationen under kørsel, fordi det kun overskriver en enkelt fil uden at påvirke andre filer i samme mappe i containeren.

Overført fra:Hyperlink-login er synlig.

(Slut)




Tidligere:Elasticsearch bruger elasticdump til at tage backup og migrere data
Næste:Docker POI-fejlundtagelsesløsning
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com