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

Comprensione dei volumi Docker

I file (e altri dati) archiviati in un contenitore Docker non persistono se il contenitore viene eliminato. Per ovviare a questo problema, Docker volumi e legare le cavalcature può essere utilizzato. Questa guida illustra l'utilizzo dei volumi Docker come metodo per archiviare dati persistenti. Pensa ai volumi come a un disco rigido esterno; se il disco rigido interno viene cancellato, il disco rigido esterno conserva ancora i propri dati. I volumi sono archiviati sull'host e indipendenti da qualsiasi contenitore o immagine. Possono essere montati su contenitori diversi secondo necessità e, poiché i volumi sono separati dall'immagine, non aumentano le dimensioni dell'immagine.

Prima di iniziare

  1. Se non l'hai già fatto, crea un account Linode e un'istanza di calcolo. Consulta le nostre guide Introduzione a Linode e Creazione di un'istanza di calcolo.

  2. Segui la nostra guida alla configurazione e alla protezione di un'istanza di calcolo per aggiornare il tuo sistema. Potresti anche voler impostare il fuso orario, configurare il tuo nome host, creare un account utente limitato e rafforzare l'accesso SSH.

  3. Installa Docker sul tuo sistema.

  4. Questa guida presuppone che tu sia a tuo agio nell'usare la riga di comando di Linux. ConsultaUtilizzare il terminale.

  5. Questa guida presuppone che tu abbia una conoscenza di base di Docker. Inoltre, dovresti aver già installato Docker sul tuo server e distribuito un'immagine Docker. Vedere Introduzione a Docker.

Creazione di un volume Docker

Per iniziare a comprendere i volumi Docker, avrai bisogno di un volume su cui lavorare.

  1. Accedi al tuo Linode (o altro server Linux) tramite SSH o Lish.

  2. Crea un volume immettendo il comando seguente, sostituendo volume_esempio con l'etichetta del tuo volume.

    docker volume create example_volume
    
  3. Verifica che il volume sia stato creato.

    docker volume list
    

    L'output dovrebbe essere simile a questo:

    [[email protected] ~]$ docker volume list
    DRIVER    VOLUME NAME
    local     example_volume
    [[email protected] ~]$

Ispezione di un volume Docker

Se desideri visualizzare maggiori dettagli su un volume, puoi utilizzare il docker volume inspect comando:

docker volume inspect example_volume

L'output dovrebbe essere simile al seguente:

[[email protected] ~]$ docker volume inspect example_volume
[
    {
        "CreatedAt": "2021-05-19T15:27:27Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/example_volume/_data",
        "Name": "example_volume",
        "Options": {},
        "Scope": "local"
    }
]
[[email protected] ~]$

Montaggio di un volume Docker su un container

Affinché i dati di un container persistano, è necessario che un volume Docker sia montato utilizzando il --mount flag nella docker run comando. Sostituisci [nome_volume] con il nome del tuo volume, [percorso] con il percorso assoluto in cui desideri montare il volume all'interno del contenitore e [docker_image] con il nome della tua immagine.

docker run --mount source=[volume_name],destination=[path] [docker_image]

Ad esempio, il comando seguente monta il volume denominato volume_esempio al percorso /example_volume all'interno di un contenitore usando ubuntu immagine.

docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu

Questo comando esegue l'immagine, monta il volume e registra l'utente come root sull'immagine Ubuntu. Una volta entrato come root, puoi verificare che "example_volume" sia montato con solo ls . L'output di tutto questo dovrebbe assomigliare a questo:

[[email protected] ~]$ docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
[email protected]:/# ls
bin   dev  example_volume  lib    lib64   media  opt   root  sbin  sys  usr
boot  etc  home            lib32  libx32  mnt    proc  run   srv   tmp  var
[email protected]:/#

Copia e condivisione di file tra container

I volumi Docker consentono anche la condivisione tra contenitori.

  1. Montare il volume secondo le istruzioni inMontaggio di un volume Docker su un container. Ecco l'esempio utilizzato in precedenza:

    docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
    
  2. Cambia la directory in example_data directory.

    cd example_data
    
  3. Crea un file di prova nel volume inserendo il seguente touch comando.

    touch example_file.txt
    
  4. Quindi esci dal contenitore.

    exit
    
  5. Ora esegui un'altra immagine Docker con lo stesso volume montato. Il debian l'immagine viene utilizzata nell'esempio seguente.

    docker run -it --name=example_2 --mount source=example_volume,destination=/example_volume debian
    
  6. All'interno del nuovo contenitore (chiamato "esempio_2" se si utilizza un comando simile a quello sopra), vai alla directory del volume.

     cd example_volume
    
  7. Inserisci ls per vedere il file.

    ls
    

Montaggio di una directory dal tuo Linode a un container

Invece di creare un nuovo volume, puoi anche montare una directory dal tuo Linode (o altro sistema) in un contenitore Docker. Ciò si ottiene tramite i montaggi di binding ed è utile quando si desidera archiviare e accedere ai file di un container direttamente dal sistema. Rispetto ai volumi, i mount bind hanno funzionalità limitate.

  1. Accedi al tuo Linode (o altro server Linux) tramite SSH o Lish.

  2. Utilizza il comando seguente per eseguire Docker, sostituendo [local-directory] con il percorso assoluto della directory all'interno del tuo Linode che desideri montare (usa $(pwd) per montare la directory corrente). Quindi sostituisci [directory di montaggio] con il percorso assoluto sul tuo container in cui desideri accedere ai file locali e sostituire [image] con l'immagine Docker che desideri utilizzare.

    docker run --rm -it -v [local-directory]:[mount-directory] [image]
    
  3. Si accede automaticamente al container. Passa alla tua directory di montaggio e visualizza i file.

    ls
    

    Dovresti vedere tutti i file che hai archiviato nella directory locale.

Ulteriori letture

C'è molto di più in Docker Volumes di quanto possiamo approfondire qui e il caso d'uso di tutti sarà diverso. Tuttavia, due ottimi posti per recensire di più su questo sono lo stesso sito di Docker's Docs:

  • Usa i volumi in Docker Docs

  • Risolvi gli errori di volume in Docker Docs

Maggiori informazioni

Si consiglia di consultare le seguenti risorse per ulteriori informazioni su questo argomento. Sebbene questi siano forniti nella speranza che possano essere utili, tieni presente che non possiamo garantire l'accuratezza o la tempestività dei materiali ospitati esternamente.

  • Utilizza i volumi in Docker Docs
  • Risolvi gli errori di volume in Docker Docs

Docker
  1. Creazione di volumi logici in Linux con LVM

  2. Capire spazio libero/volumi su Ubuntu?

  3. Come condividere dati tra contenitori Docker su Ubuntu 22.04

  4. Introduzione a Docker

  5. Docker in Docker non può montare il volume

Spiegazione dei volumi Docker con esempi

Spiegazione della gestione del volume logico su Linux

Come aggiungere un volume a un contenitore Docker esistente

Come eseguire Jenkins in Docker usando Docker Compose con volumi

Come accedere ai file al di fuori di un contenitore Docker

20 utili esempi di comandi del volume Docker per gli sviluppatori moderni