See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 9379|Vastuse: 0

Fail või kaust ei eksisteeri siis, kui Dockeri maht on paigaldatud

[Kopeeri link]
Postitatud 08.11.2021 09:20:35 | | |
Taust

Docker Volume võimaldab meil dünaamiliselt ühendada mõningaid faile (näiteks konfiguratsioonifaile), et Docker konteineri käivitamisel algseid faile pildis üle kirjutada, aga mis juhtub, kui ühendame konteineri hostis veel kausta või faili? LZ puutus oma töös kokku sellise probleemiga, mistõttu harjutas seda ise ja salvestas eksperimentaalsed tulemused järgmiselt:

kaustakinnitus

Dockeri käitumine kaustade paigaldamisel on ühtne, järgmiselt:

  • Kui kausta ei eksisteeri, luuakse kaust esimesena (või rekursiivselt, kui see on mitmetasandiline kaust).
  • Kirjuta konteineri kausta sisu üle hosti kausta sisuga


Üksikasjad on järgmised:

Hosti kaust eksisteerib ja ei ole tühi

Vastuvõtva
konteiner
Mounti tulemus
Eksisteerib mitte-tühi kaust AKaust B, mis ei eksisteeriLoo esmalt kaust B Contanieris ja seejärel kopeeri kõik failid kaustas A B-sse
Eksisteerib mitte-tühi kaust AEksisteerib mitte-tühi kaust BEsiteks tühjenda konteineri hiina kausta B algne sisu ja seejärel kopeerida A hiina koopia B-sse

Sõltumata sellest, kas konteineris on kaust B, kirjutab A täielikult üle B sisu

Hosti kaust eksisteerib, kuid on tühi

Vastuvõtva
konteiner
Mounti tulemus
Tühi kaust A, mis eksisteeribEksisteerib mitte-tühi kaust BKonteineri Hiina kausta B sisu tühjendatakse

Konteineri vastava kausta sisu tühjendatakse

Hostkaust ei eksisteeri

Vastuvõtva
konteiner
Mounti tulemus
Kaust A, mis ei eksisteeriEksisteerib mitte-tühi kaust BLoo kaust A hostis ja konteineri Hiina kausta B sisu tühjendatakse
Kaustad A/B/C, mida ei eksisteeriEksisteerib mitte-tühi kaust BLoo hostis kaustad A/B/C ning konteineri Hiina kausta B sisu tühjendatakse

Konteineri vastava kausta sisu tühjendatakse

Kokkuvõte

Hostkaust kirjutab kindlasti üle konteineri hiina kausta:

Vastuvõtva
konteiner
Mounti tulemus
Kaust ei eksisteeri/kaust eksisteerib, kuid on tühiKaust ei eksisteeri/eksisteerib, kuid on tühi/eksisteerib ja ei ole tühikonteiner Hiina tükk on kaetud (tühjendatud)
Kaust eksisteerib ja ei ole tühiKaust ei eksisteeri/eksisteerib, kuid on tühi/eksisteerib ja ei ole tühikonteineri hiina kausta sisu kirjutatakse üle (algne sisu tühjendatakse ja hosti kausta sisu kirjutatakse üle)

Failikinnitus

Suurim erinevus failide ja kaustade paigaldamise vahel on:

  • Docker keelab failide ühendamise, mis hostis ei eksisteeri, failidega, mis konteineris juba olemas on
  • Failide paigaldamine ei mõjuta teisi sama kausta all olevaid faile

Lisaks on selle ülekirjutamise käitumine kooskõlas kaustade monteerimisega, st:

  • Kirjuta faili sisu konteineris üle faili sisuga hostis


Üksikasjad on järgmised:

Vastuvõtva

Vastuvõtva
konteiner
Mounti tulemus
Failid, mida ei eksisteeri configA.jsDokumendid, mis juba eksisteerivad congfigB.jsViga, kas sa üritad kausta failile lisada (või vastupidi)? Kontrolli, kas määratud hosti tee eksisteerib ja kas see on oodatud tüüp. See genereerib korraga kaks tühja kataloogi configA.js ja configB.js hostil, kuid konteiner ei saa käivituda

Vastuvõtva

Vastuvõtva
konteiner
Mounti tulemus
Esita fail configA.jsPraegune toimik congfigB.jskonteineri Hiina ese configB.js jääda samaks, kuid faili sisu kirjutatakse üle congfigA.js sisuga
Esita fail configA.jsFailid, mida ei eksisteeri, congfigB.jsUus fail, mis configB.js konteinerisse koos configA.js faili sisuga, jääb muutumatuks configB.js kõik teised faili all olevad failid

Kokkuvõte

Hosti fail kirjutab alati üle konteineri Hiina kausta

Vastuvõtva
konteiner
Mounti tulemus
Failid, mida ei eksisteeriDokumendid, mis juba eksisteerivadKeelatud teod
Olemasolevad dokumendidFailid, mis ei eksisteeri / failid, mis juba eksisteerivadLisamine/ülekirjutamine (loob kataloogi, kui seda ei eksisteeri)

Järeldus

kaustakinnitus

  • Kui lubate konteinerisse paigaldada olematuid või tühje kaustu, tühjendatakse konteineri vastavad kaustad
  • Mitte-tühja kausta lisamine konteinerisse kirjutab konteineri algse kausta üle

Failikinnitus

  • On keelatud paigaldada olematuid faile failidele, mis konteineris juba eksisteerivad
  • Olemasolevad failid kirjutatakse konteinerisse lisamisel üle, ja kui faile ei eksisteeri, luuakse need

Rakendusstsenaariumid

  • Ülaltoodud analüüsist on näha, et kaustade monteerimist kasutatakse failide üle kirjutamiseks kogu kaustas, seega saab seda kasutada siis, kui konteinerisse tuleb paigaldada suur hulk faile; lisaks, kui on paigaldatud tühi või olematu kaust, kasutatakse seda tavaliselt vastupidises suunas: st pärast konteineri käivitamist võib konteineri paigalduspunkti kausta all genereerida mõned failid (näiteks logid) ning sel hetkel on see otse nähtav vastava hosti kaustas.
  • Failide monteerimist kasutatakse sageli konfiguratsioonifailide ühendamiseks, et dünaamiliselt muuta vaikimisi konfiguratsiooni käitusajal, kuna see kirjutab üle ainult ühe faili, mõjutamata teisi faile samas kaustas konteineris.

Üleviidud:Hüperlingi sisselogimine on nähtav.

(Lõpp)




Eelmine:Elasticsearch kasutab andmete varundamiseks ja migreerimiseks elasticdumpi
Järgmine:Docker POI vea erandite lahendus
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com