Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 9379|Risposta: 0

Il file o la cartella non esistono quando il volume Docker è montato

[Copiato link]
Pubblicato su 08/11/2021 09:20:35 | | |
Sfondo

Docker Volume ci permette di montare dinamicamente alcuni file (come file di configurazione) per sovrascrivere i file originali nell'immagine quando si avvia un container Docker, ma cosa succede se montiamo una cartella o un file che non esiste ancora sull'host nel container? LZ incontrò un problema simile nel suo lavoro, così lo praticò personalmente e registrò i risultati sperimentali come segue:

Montaggio cartelle

Il comportamento di Docker durante il montaggio delle cartelle è uniforme, come segue:

  • Se la cartella non esiste, viene creata prima la cartella (o ricorsivamente se è una cartella multilivello)
  • Sovrascrive il contenuto della cartella nel contenitore con il contenuto della cartella sull'host


I dettagli sono i seguenti:

La cartella sull'host esiste e non è vuota

ospite
contenitore
Risultato del montaggio
Esiste la cartella non vuota ACartella B che non esisteCrea prima la cartella B in Contanier, poi copia tutti i file della cartella A in B
Esiste la cartella non vuota AEsiste la cartella non vuota BPrima svuota il contenuto originale della cartella cinese contenitore B, poi copia la copia cinese A in B

Indipendentemente dall'esistenza o meno della cartella B nel contenitore, A sovrascriverà completamente il contenuto di B

La cartella sull'host esiste, ma è vuota

ospite
contenitore
Risultato del montaggio
Cartella vuota A che esisteEsiste la cartella non vuota BIl contenuto della cartella cinese container B viene svuotato

Il contenuto della cartella corrispondente nel contenitore viene svuotato

La cartella host non esiste

ospite
contenitore
Risultato del montaggio
Cartella A che non esisteEsiste la cartella non vuota BCrea la cartella A sull'host, e il contenuto della cartella cinese del container B viene svuotato
Cartelle A/B/C che non esistonoEsiste la cartella non vuota BCreare cartelle A/B/C sull'host, e il contenuto della cartella cinese container B viene svuotato

Il contenuto della cartella corrispondente nel contenitore viene svuotato

sommario

La cartella host sicuramente sovrascriverà la cartella cinese del container:

ospite
contenitore
Risultato del montaggio
La cartella non esiste/esiste la cartella ma è vuotaLa cartella non esiste/esiste ma è vuota/esiste e non è vuotaContenitore del pezzo cinese è coperto (svuotato)
La cartella esiste e non è vuotaLa cartella non esiste/esiste ma è vuota/esiste e non è vuotai contenuti delle cartelle cinesi contenitori vengono sovrascritti (il contenuto originale viene svuotato e il contenuto della cartella sull'host viene sovrascritto)

Montatura del file

La differenza più grande tra montaggio di file e montaggio di cartelle è:

  • Docker vieta di montare file che non esistono sull'host in file già presenti nel container
  • Il montaggio dei file non ha alcun effetto sugli altri file nella stessa cartella

Inoltre, il suo comportamento di sovrascrittura è coerente con il montaggio delle cartelle, cioè:

  • Sovrascrive il contenuto del file nel contenitore con il contenuto del file sull'host


I dettagli sono i seguenti:

ospite

ospite
contenitore
Risultato del montaggio
File che non esistono configA.jsDocumenti già esistenti congfigB.jsErrore, stai cercando di montare una directory su un file (o viceversa)? Controlla se il percorso host specificato esiste ed è il tipo atteso. Genera due directory vuote configA.js e configB.js sull'host contemporaneamente, ma il contenitore non può avviarsi

ospite

ospite
contenitore
Risultato del montaggio
Archivio attuale configA.jsArchivio attuale congfigB.jscontenitori configB.js gli elementi cinesi rimangono gli stessi, ma il contenuto del file viene sovrascritto dal contenuto congfigA.js
Archivio attuale configA.jsFile che non esistono congfigB.jsUn nuovo file configB.js nel contenitore con il contenuto del file configA.js rimane invariato configB.js tutti gli altri file sotto il file

sommario

Il file sull'host sovrascriverà sempre la cartella cinese del container

ospite
contenitore
Risultato del montaggio
File che non esistonoDocumenti già esistentiAtti proibiti
Documenti esistentiFile che non esistono / file che già esistonoAggiungi/sovrascrive (crea una directory se non esiste)

conclusione

Montaggio cartelle

  • Se permetti di montare cartelle inesistenti o vuote nel contenitore, le cartelle corrispondenti nel contenitore verranno svuotate
  • Collegare una cartella non vuota a un contenitore sovrascriverà la cartella originale nel contenitore

Montatura del file

  • È vietato montare file inesistenti su file già presenti nel contenitore
  • I file esistenti verranno sovrascritti quando vengono collegati al contenitore e, se i file non esistono, verranno creati

Scenari applicabili

  • Dall'analisi sopra, si può vedere che il montaggio delle cartelle viene usato per sovrascrivere i file dell'intera cartella, quindi può essere usato quando è necessario montare un gran numero di file nel container; inoltre, se viene montata una cartella vuota o inesistente, viene generalmente usato al contrario: cioè, dopo l'avvio del contenitore, alcuni file (come i log) possono essere generati sotto la cartella del punto di montaggio nel contenitore e, in questo momento, possono essere visti direttamente nella cartella sull'host corrispondente.
  • Il montaggio dei file viene spesso utilizzato per montare file di configurazione e modificare dinamicamente la configurazione predefinita in tempo reale, poiché sovrascrive solo un singolo file senza influenzare gli altri file nella stessa cartella nel container.

Trasferito da:Il login del link ipertestuale è visibile.

(Fine)




Precedente:Elasticsearch utilizza elasticdump per fare il backup e migrare i dati
Prossimo:Soluzione delle eccezioni di errore del POI Docker
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com