Panoramica di archiviazione contenitori
Questo argomento offre una panoramica dei diversi modi in cui i contenitori usano l'archiviazione in Windows. I contenitori si comportano in modo diverso rispetto alle macchine virtuali quando si tratta di archiviazione. Per natura, i contenitori vengono creati per impedire a un'app in esecuzione all'interno di essi di scrivere lo stato in tutto il file system dell'host. I contenitori usano uno spazio "scratch" per impostazione predefinita, ma Windows offre anche un mezzo per rendere persistente l'archiviazione.
Spazio di lavoro temporaneo
Per impostazione predefinita, i contenitori di Windows usano l'archiviazione temporanea. Tutte le operazioni di I/O del contenitore si verificano in uno "spazio di lavoro" e ogni contenitore ottiene i propri graffi. La creazione di file e le scritture di file vengono acquisite nello spazio scratch e non vengono trasferite nell'host. Quando un'istanza del contenitore viene arrestata, tutte le modifiche apportate nello spazio scratch vengono gettate via. Quando viene avviata una nuova istanza del contenitore, viene fornito un nuovo spazio temporaneo per l'istanza.
Archiviazione a strati
Come descritto in Panoramica dei contenitori , le immagini del contenitore sono un bundle di file espressi come una serie di livelli. L'archiviazione a livello di layer è costituita da tutti i file incorporati nel contenitore. Ogni volta che si docker pull
e poi si docker run
quel contenitore, quel contenitore è uguale.
Dove vengono archiviati i livelli e come modificarli
In un'installazione predefinita, i livelli vengono archiviati in C:\ProgramData\docker
e suddivisi tra le directory "image" e "windowsfilter". È possibile modificare la posizione in cui vengono archiviati i livelli usando la configurazione docker-root
, come illustrato nella documentazione motore Docker in Windows.
Nota
Solo NTFS è supportato per l'archiviazione dei livelli. I volumi ReFS e volumi condivisi del cluster (CSV) non sono supportati.
Non è consigliabile modificare i file nelle directory del livello, perché vengono gestiti con attenzione usando comandi come:
- immagini Docker
- docker rmi
- docker pull
- di caricamento docker
- docker salvare
Operazioni supportate nell'archiviazione a strati
I contenitori in esecuzione possono usare la maggior parte delle operazioni NTFS ad eccezione delle transazioni. La configurazione degli elenchi di controllo di accesso è inclusa, e tutti gli ACL vengono verificati all'interno del contenitore. Se si vogliono eseguire processi come più utenti all'interno di un contenitore, è possibile creare utenti nella Dockerfile
con RUN net user /create ...
, impostare gli ACL dei file, quindi configurare i processi per l'esecuzione con tale utente usando la direttiva USER dockerfile .
Archiviazione permanente
I contenitori Di Windows supportano meccanismi per fornire l'archiviazione permanente tramite montaggi e volumi associati. Per ulteriori informazioni, vedere archiviazione persistente nei container.
Limiti di archiviazione
Un modello comune per le applicazioni Windows consiste nell'eseguire una query sulla quantità di spazio libero su disco prima di installare o creare nuovi file o come trigger per la pulizia dei file temporanei. Con l'obiettivo di ottimizzare la compatibilità delle applicazioni, l'unità C: in un contenitore Windows rappresenta una dimensione libera virtuale di 20 GB.
Alcuni utenti potrebbero voler eseguire l'override di questo valore predefinito e configurare lo spazio libero su un valore più piccolo o maggiore. questa operazione può essere eseguita tramite l'opzione "size" all'interno della configurazione "storage-opt".
Esempio
Riga di comando: docker run --storage-opt "size=50GB" mcr.microsoft.com/windows/servercore:ltsc2019 cmd
In alternativa, è possibile modificare direttamente il file di configurazione docker:
"storage-opts": [
"size=50GB"
]