Ricerca…


Contenitori di soli dati

I contenitori di soli dati sono obsoleti e ora sono considerati un anti-modello!

Nei giorni precedenti, prima del sottocomando del volume di Docker e prima che fosse possibile creare volumi con nome, Docker cancellava i volumi quando non vi erano più riferimenti a essi in alcun contenitore. I contenitori di soli dati sono obsoleti perché Docker ora offre la possibilità di creare volumi con nome, oltre a una maggiore utilità tramite il sottocomando dei vari docker volume docker. I contenitori di soli dati sono ora considerati un anti-pattern per questo motivo.

Molte risorse sul web degli ultimi due anni menzionano l'utilizzo di un modello chiamato "contenitore solo dati", che è semplicemente un contenitore Docker che esiste solo per mantenere un riferimento a un volume di dati.

Ricorda che in questo contesto, un "volume di dati" è un volume Docker che non è montato dall'host. Per chiarire, un "volume di dati" è un volume che viene creato con la direttiva VOLUME Dockerfile o utilizzando l'opzione -v sulla riga di comando in un comando di docker run , in particolare con il formato -v /path/on/container . Pertanto un "contenitore di soli dati" è un contenitore il cui unico scopo è quello di avere un volume di dati collegato, che viene utilizzato --volumes-from flag --volumes-from in un comando di docker run . Per esempio:

docker run -d --name "mysql-data" -v "/var/lib/mysql" alpine /bin/true

Quando viene eseguito il comando precedente, viene creato un "contenitore solo dati". È semplicemente un contenitore vuoto con un volume di dati collegato. È stato quindi possibile utilizzare questo volume in un altro contenitore in questo modo:

docker run -d --name="mysql" --volumes-from="mysql-data" mysql

Il contenitore mysql ora ha lo stesso volume che è anche in mysql-data .

Poiché Docker ora fornisce il sottocomando del volume e i volumi con nome, questo modello è ora obsoleto e non consigliato.

Per iniziare con il sottocomando del volume e i volumi con nome vedere Creazione di un volume denominato

Creazione di un volume di dati

docker run -d --name "mysql-1" -v "/var/lib/mysql" mysql

Questo comando crea un nuovo contenitore dall'immagine mysql . Crea anche un nuovo volume di dati, che poi monta nel contenitore in /var/lib/mysql . Questo volume aiuta tutti i dati al suo interno a persistere oltre la durata del contenitore. Vale a dire, quando un contenitore viene rimosso, vengono rimosse anche le sue modifiche al filesystem. Se un database stava memorizzando i dati nel contenitore e il contenitore è stato rimosso, anche tutti i dati vengono rimossi. I volumi rimarranno in una posizione particolare anche oltre il momento in cui viene rimosso il contenitore.

È possibile utilizzare lo stesso volume in più contenitori con l'opzione della riga di comando --volumes-from :

docker run -d --name="mysql-2" --volumes-from="mysql-1" mysql

Il contenitore mysql-2 ora ha il volume di dati di mysql-1 ad esso collegato, usando anche il percorso /var/lib/mysql .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow