Tausta
Docker-volyymi mahdollistaa joidenkin tiedostojen (kuten konfiguraatiotiedostojen) dynaamisen liittämisen, jotta alkuperäiset tiedostot voidaan korvata kuvassa docker-kontin käynnistyessä, mutta mitä tapahtuu, jos liitämme kansion tai tiedoston, jota ei vielä ole kontin isännässä? LZ kohtasi tällaisen ongelman työssään, joten hän harjoitteli sitä itse ja kirjasi kokeelliset tulokset seuraavasti:
kansiokiinnike
Dockerin käytös kansioiden kiinnittämisessä on yhdenmukaista, seuraavasti:
- Jos kansiota ei ole, se luodaan ensin (tai rekursiivisesti, jos se on monitasoinen kansio)
- Kirjoita kansion sisältö kontissa isäntäkansion sisällön kanssa
Yksityiskohdat ovat seuraavat:
Isännän kansio on olemassa eikä ole tyhjä
isäntä | kontti | Mount-tulos | | Ei-tyhjä kansio A on olemassa | Kansio B, jota ei ole olemassa | Luo ensin kansio B Contanierissa ja kopioi sitten kaikki kansion A tiedostot kansioon B | | Ei-tyhjä kansio A on olemassa | Ei-tyhjä kansio B on olemassa | Tyhjennä ensin alkuperäinen sisältö kontin kiinalaisesta kansiosta B ja kopioi sitten A kiinalainen kopio B:hen |
Riippumatta siitä, onko kansio B kontissa olemassa, A korvaa kokonaan B:n sisällön
Isäntäkansio on olemassa, mutta tyhjä
isäntä | kontti | Mount-tulos | | Tyhjä kansio A, joka on olemassa | Ei-tyhjä kansio B on olemassa | Container Chinese -kansion B sisältö tyhjennetään. |
Vastaavan kansion sisältö säiliössä tyhjennetään
Isäntäkansiota ei ole olemassa
isäntä | kontti | Mount-tulos | | Kansio A, jota ei ole olemassa | Ei-tyhjä kansio B on olemassa | Luo kansio A isännälle, ja kontin kiinalaisen kansion B sisältö tyhjennetään | | Kansiot A/B/C, joita ei ole olemassa | Ei-tyhjä kansio B on olemassa | Luo kansiot A/B/C isäntäkanavalla, ja kontin kiinalaisen kansion B sisältö tyhjennetään |
Vastaavan kansion sisältö säiliössä tyhjennetään
yhteenveto
Isäntäkansio korvaa varmasti kontin kiinalaisen kansion:
isäntä | kontti | Mount-tulos | | Kansio ei ole olemassa/kansio on olemassa mutta on tyhjä | Kansio ei ole olemassa/on olemassa, mutta se on tyhjä/on olemassa eikä ole tyhjä | Astia kiinalainen kappale on peitetty (tyhjennetty) | | Kansio on olemassa eikä ole tyhjä | Kansio ei ole olemassa/on olemassa, mutta se on tyhjä/on olemassa eikä ole tyhjä | container Kiinan kansion sisältö ylikirjoitetaan (alkuperäinen sisältö tyhjennetään ja isännän kansion sisältö ylikirjoitetaan) |
Tiedostoliitäntä
Suurin ero tiedoston kiinnityksen ja kansion kiinnittämisen välillä on:
- Docker kieltää tiedostojen liittämisen, joita ei ole isännässä, tiedostoihin, jotka jo ovat kontissa
- Tiedostojen liittäminen ei vaikuta muihin saman kansion tiedostoihin
Lisäksi sen ylikirjoituskäyttäytyminen on yhdenmukaista kansioiden liittämisen kanssa, eli:
- Korvaa tiedoston sisältö kontissa isäntätiedoston sisällön kanssa
Yksityiskohdat ovat seuraavat:
isäntä
isäntä | kontti | Mount-tulos | | Tiedostot, joita ei ole olemassa, configA.js | Asiakirjat, jotka ovat jo olemassa congfigB.js | Virhe, yritätkö liittää hakemiston tiedostoon (tai päinvastoin)? Tarkista, onko määritelty isäntäpolku olemassa ja onko se odotettu tyyppi. Se generoi kaksi tyhjää hakemistoa configA.js ja configB.js isännässä samanaikaisesti, mutta kontti ei voi käynnistyä |
isäntä
isäntä | kontti | Mount-tulos | | Present file configA.js | Present file congfigB.js | konttikiinalainen tuote configB.js pysyä samana, mutta tiedoston sisältö korvataan congfigA.js sisällöllä | | Present file configA.js | Tiedostot, joita ei ole congfigB.js | Uusi tiedosto, joka configB.js konttiin, jossa on configA.js-tiedoston sisältö, pysyy muuttumattomana configB.js kaikki muut tiedoston alla olevat tiedostot |
yhteenveto
Isäntätiedosto korvaa aina konttikiinan kansion
isäntä | kontti | Mount-tulos | | Tiedostot, joita ei ole olemassa | Asiakirjat, jotka ovat jo olemassa | Kielletyt teot | | Olemassa olevat asiakirjat | Tiedostot, joita ei ole olemassa / tiedostot, jotka ovat jo olemassa | Lisää/ylikirjoita (luo hakemiston, jos sitä ei ole olemassa) |
johtopäätös
kansiokiinnike
- Jos sallit olemattomien tai tyhjien kansioiden liittää konttiin, vastaavat kansiot säiliössä tyhjennetään
- Ei-tyhjän kansion liittäminen konttiin korvaa alkuperäisen kansion kontissa
Tiedostoliitäntä
- On kiellettyä liittää olemattomia tiedostoja tiedostoihin, jotka jo ovat kontissa
- Olemassa olevat tiedostot ylikirjoitetaan, kun ne liitetään konttiin, ja jos tiedostoja ei ole, ne luodaan
Sovellusskenaariot
- Yllä olevan analyysin perusteella nähdään, että kansion liittämistä käytetään tiedostojen ylikirjoittamiseen koko kansiossa, joten sitä voidaan käyttää, kun suuri määrä tiedostoja täytyy liittää konttiin, ja lisäksi, jos tyhjä kansio tai olematon kansio on liitetty, sitä käytetään yleensä päinvastoin: eli kontin käynnistämisen jälkeen joitakin tiedostoja (kuten lokit) voidaan luoda kontin kiinnityspisteen kansion alle, ja tällöin se näkyy suoraan vastaavan isäntälaitteen kansiossa.
- Tiedostojen liittämistä käytetään usein konfiguraatiotiedostojen liittämiseen, jotta oletusasetukset voidaan muuttaa dynaamisesti ajonaikaisesti, koska se ylikirjoittaa vain yhden tiedoston vaikuttamatta muihin tiedostoihin samassa kansiossa kontissa.
Siirretty:Hyperlinkin kirjautuminen on näkyvissä.
(Loppu) |