Docker
Volumi di dati e contenitori di dati
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 .