GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Cosa sono i volumi Docker e come li usi?

Per impostazione predefinita, i contenitori Docker sono completamente senza stato. I dati archiviati nel contenitore sono temporanei e verranno cancellati quando il contenitore si spegne. Questo ovviamente non è l'ideale per molte applicazioni, quindi Docker fornisce alcuni modi per gestire lo stato.

Cosa sono i volumi?

Il modo più semplice per rendere persistenti i dati Docker è bind mount , che lega letteralmente una posizione sul disco dell'host a una posizione sul disco del contenitore. Questi sono semplici da creare e utilizzare, ma sono un po' ingrati in quanto è necessario configurare le directory e gestirle da soli.

I volumi sono come dischi rigidi virtuali gestiti da Docker. Docker gestisce la memorizzazione su disco (di solito in /var/lib/docker/volumes/ ), e fornisce loro un nome singolo facilmente memorizzabile anziché un percorso di directory. È facile crearli e rimuoverli utilizzando Docker CLI.

Questi hanno alcuni altri vantaggi oltre a essere gestiti da Docker. Funzionano sia su container Linux che Windows, possono essere condivisi in modo più sicuro tra più container e i driver di volume consentono ai provider di servizi cloud di fornire hosting remoto per i dati sottostanti. Nel complesso, i volumi sono più facili da usare rispetto ai montaggi di binding e sono consigliati da Docker per la gestione dello stato.

Ovviamente, dovresti considerare se hai davvero bisogno che i dati Docker siano archiviati sul server. Per molte applicazioni, l'utilizzo di un datastore remoto esterno come Amazon S3 o di un database esterno è sufficiente per archiviare i dati che utilizzano senza vincolarli al server frontend.

Come li usi?

Puoi creare un nuovo volume dalla riga di comando con il seguente comando:

docker volume create nginx-config

E poi, quando esegui il tuo container Docker, collegalo alla destinazione nel container con --mount bandiera:

docker run -d 
--name devtest 
--mount source=nginx-config,target=/etc/nginx 
nginx:latest

Se esegui docker inspect <name> , vedrai il volume elencato sotto Mounts sezione.

Se stai usando Docker Compose, anche l'installazione è semplice. Aggiungi semplicemente un volumes per ogni servizio contenitore di cui disponi, quindi mappare un nome di volume a una posizione nel guest. Dovrai anche fornire un elenco di volumi in volumes di livello superiore chiave per Componi per il provisioning.

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - nginx-config:/etc/nginx/
volumes:
  nginx-config:

Questo creerà automaticamente il volume per questa composizione. Se desideri utilizzare un volume predefinito dall'esterno di Compose, specifica external: true nella configurazione del volume:

volumes:
  cms-content:
    external: true

Se invece desideri semplicemente eseguire un montaggio vincolato e non preoccuparti dei volumi, inserisci semplicemente un nome di percorso al posto del nome del volume e rinuncia a definire i nomi dei volumi.

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - /docker/nginx-config/:/etc/nginx/

Puoi leggere la documentazione completa di Docker sull'utilizzo dei volumi con Compose se il tuo caso d'uso richiede qualcosa di più specifico di questo.

Trasferimento di volumi Docker

I volumi Docker sono solo cartelle create automaticamente e archiviate in /var/lib/docker/volumes/ , con ogni volume archiviato in ./volumename/_data/ . Per eseguire il backup e il ripristino, puoi semplicemente eseguire il backup diretto di questi volumi.

Se invece desideri utilizzare Docker CLI, sfortunatamente non forniscono un modo semplice per farlo. Per eseguire il backup dei volumi di un container, avrai bisogno del nome del container e della posizione di montaggio in cui sono archiviati i dati.

Il modo per farlo è un po' un trucco:dovrai eseguire un comando in un nuovo contenitore Docker, montare il binding della directory della shell corrente, montare il volume su quel contenitore, quindi tar la directory in un backup. Ti ritroverai con un backup.tar del volume:

docker run --rm --volumes-from containername -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /mountlocation

Quindi, allo stesso modo, puoi estrarre l'archivio nella directory di destinazione:

docker run --rm --volumes-from containername -v $(pwd):/backup ubuntu bash -c "cd /mountlocation && tar xvf /backup/backup.tar --strip 1"

Questo è comunque meglio che dover conoscere la posizione dell'host, quindi puoi automatizzarlo se lo desideri.


Docker
  1. Registri Docker:cosa sono e come usarli (con esempi)

  2. Come installare e utilizzare Docker in Ubuntu 20.04

  3. Quali miniature aggiuntive sono disponibili e come installarle?

  4. Come installare e utilizzare Docker Compose su CentOS

  5. Cosa sono le modalità SELinux e come impostarle

Come installare e utilizzare Docker Compose su Ubuntu 22.04

Come installare e utilizzare Docker su Ubuntu 22.04

Che cos'è Docker Compose e come lo usi?

Come installare e utilizzare Docker su Ubuntu 20.04

Cos'è il PPA in Ubuntu Linux e come li uso

Come installare e utilizzare Docker su AlmaLinux 8