Docker - Archiviazione

Driver di archiviazione

Docker ha più driver di archiviazione che consentono a uno di lavorare con i dispositivi di archiviazione sottostanti. La tabella seguente mostra i diversi driver di archiviazione insieme alla tecnologia utilizzata per i driver di archiviazione.

Tecnologia Driver di archiviazione
OverlayFS overlay o overlay 2
AUFS aufs
Btrfs brtfs
Gestore dispositivi gestore dispositivi
VFS vfs
ZFS zfs

Parliamo ora di alcuni dei casi in cui useresti i vari driver di archiviazione:

AUFS

  • Questo è un driver stabile; può essere utilizzato per applicazioni pronte per la produzione.

  • Ha un buon utilizzo della memoria ed è utile per garantire un'esperienza Docker fluida per i contenitori.

  • C'è un'attività di scrittura elevata associata a questo driver che dovrebbe essere considerata.

  • È utile per i sistemi che sono di tipo Platform as a service.

Devicemapper

  • Questo è un driver stabile; garantisce un'esperienza Docker fluida.

  • Questo driver è utile per testare le applicazioni in laboratorio.

  • Questo driver è in linea con le principali funzionalità del kernel Linux.

Btrfs

  • Questo driver è in linea con le principali funzionalità del kernel Linux.

  • C'è un'attività di scrittura elevata associata a questo driver che dovrebbe essere considerata.

  • Questo driver è utile per i casi in cui si gestiscono più pool di build.

Ovelay

  • Questo è un driver stabile ed è in linea con le principali funzionalità del kernel Linux.

  • Ha un buon utilizzo della memoria.

  • Questo driver è utile per testare le applicazioni in laboratorio.

ZFS

  • Questo è un driver stabile ed è utile per testare le applicazioni in laboratorio.

  • È utile per i sistemi che funzionano di tipo Platform-as-a-Service.

Per vedere il driver di archiviazione in uso, rilasciare docker info comando.

Sintassi

docker info

Opzioni

Nessuna

Valore di ritorno

Il comando fornirà tutte le informazioni relative sul componente Docker installato su Docker Host.

Esempio

sudo docker info

Produzione

L'output seguente mostra che il driver principale utilizzato è il aufs driver e che la directory principale sia archiviata in /var/lib/docker/aufs.

Volumi di dati

In Docker, hai un volume separato che può essere condiviso tra i contenitori. Questi sono conosciuti comedata volumes. Alcune delle caratteristiche del volume di dati sono:

  • Vengono inizializzati quando viene creato il contenitore.
  • Possono essere condivisi e anche riutilizzati tra molti contenitori.
  • Eventuali modifiche al volume stesso possono essere apportate direttamente.
  • Esistono anche dopo l'eliminazione del contenitore.

Diamo un'occhiata al nostro contenitore Jenkins. Facciamo undocker inspectper vedere i dettagli di questa immagine. Possiamo emettere il seguente comando per scrivere l'output didocker inspect comando in un file di testo e quindi visualizzare il file di conseguenza.

sudo docker inspect Jenkins > tmp.txt

Quando si visualizza il file di testo utilizzando l'estensione more command, vedrai una voce come JENKINS_HOME=/var/Jenkins_home.

Questa è la mappatura che viene eseguita all'interno del contenitore tramite l'immagine di Jenkins.

Supponiamo ora di voler mappare il volume nel contenitore a un volume locale, quindi è necessario specificare l'opzione –v quando si avvia il contenitore. Di seguito è mostrato un esempio:

sudo docker run –d –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins

L'opzione –v viene utilizzata per mappare il volume nel contenitore che è /var/jenkins_home in una posizione sul nostro Docker Host che è /home/demo.

Ora se vai al /home/demo posizione sul tuo Docker Host dopo aver avviato il tuo contenitore, vedrai tutti i file del contenitore presenti lì.

Modifica del driver di archiviazione per un contenitore

Se si desidera passare al driver di archiviazione utilizzato per un contenitore, è possibile farlo all'avvio del contenitore. Questo può essere fatto usando il–volume-driver parametro quando si utilizza il docker runcomando. Di seguito viene fornito un esempio:

sudo docker run –d --volume-driver=flocker 
   –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins

Il –volume-driver viene utilizzata per specificare un altro driver di archiviazione per il contenitore.

Per confermare che il driver è stato modificato, per prima cosa usiamo il file docker pscomando per vedere i contenitori in esecuzione e ottenere l'ID del contenitore. Quindi, emetti prima il seguente comando:

sudo docker ps

Quindi emetti un file docker inspect contro il contenitore e inserire l'output in un file di testo utilizzando il comando.

sudo docker inspect 9bffb1bfebee > temp.txt

Se navighi nel file di testo e vai alla riga che dice VolumeDriver, vedrai che il nome del driver è stato cambiato.

Creazione di un volume

È possibile creare un volume in anticipo utilizzando il file dockercomando. Impariamo di più su questo comando.

Sintassi

docker volume create –-name=volumename –-opt options

Opzioni

  • name - Questo è il nome del volume che deve essere creato.

  • opt - Queste sono le opzioni che puoi fornire durante la creazione del volume.

Valore di ritorno

Il comando restituirà il nome del volume creato.

Esempio

sudo docker volume create –-name = demo –opt o = size = 100m

Nel comando precedente, stiamo creando un volume di dimensioni 100 MB e con un nome di demo.

Produzione

L'output del comando precedente è mostrato di seguito:

Elenco di tutti i volumi

Puoi anche elencare tutti i file docker volumes su a docker host. Maggiori dettagli su questo comando sono forniti di seguito:

Sintassi

docker volume ls

Opzioni

Nessuna

Valore di ritorno

Il comando produrrà tutti i volumi su docker host.

Esempio

sudo docker volume ls

Produzione

L'output del comando precedente è mostrato di seguito: