Introduzione
I volumi Docker sono il meccanismo preferito per configurare l'archiviazione persistente per i contenitori Docker. I volumi sono directory esistenti sul filesystem host montato all'interno di un container. Sono accessibili sia dal container che dal sistema host.
Docker consente inoltre agli utenti di montare directory condivise sul sistema di condivisione file remota NFS. I volumi creati a questo scopo utilizzano il driver NFS di Docker, eliminando la necessità di montare la directory NFS sul sistema host.
Questo tutorial ti mostrerà come creare e utilizzare i volumi Docker NFS.
Prerequisiti
- Server NFS installato e configurato sulla macchina remota.
- Docker installato sul computer locale.
- Un account utente con privilegi root/sudo.
Crea volume Docker NFS
Il modo più semplice per creare e gestire i volumi Docker è utilizzare il docker volume
comando e i suoi sottocomandi.
La sintassi per la creazione di un volume Docker NFS include due opzioni.
- Il
--driver
l'opzione definisce illocal
driver del volume, che accetta opzioni simili amount
comando in Linux. - Il
--opt
l'opzione viene chiamata più volte per fornire ulteriori dettagli sul volume.
I dettagli includono:
- Il tipo di volume.
- La modalità di scrittura.
- L'indirizzo IP o web del server NFS remoto.
- Il percorso della directory condivisa sul server.
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=[ip-address],rw \
--opt device=:[path-to-directory] \
[volume-name]
L'esempio seguente illustra la creazione di un volume Docker NFS denominato nfs-volume
. Il volume contiene il /mnt/nfsdir
directory situata sul server, con il rw
autorizzazione (lettura/scrittura). L'indirizzo IP del server è 10.240.12.70
.
Il comando eseguito con successo restituisce il nome del volume.
Elenca i volumi Docker disponibili.
docker volume ls
L'output elenca il volume che hai creato.
Ispeziona il volume con inspect
sottocomando.
docker volume inspect [volume-name]
L'output mostra la configurazione del volume.
Monta NFS in un contenitore
Per montare il volume NFS in un container, installa nfs-common
pacchetto sul sistema host.
Inizia aggiornando i repository.
sudo apt update
Usa APT per installare nfs-common
pacchetto.
sudo apt install nfs-common
Conferma di voler installare il pacchetto e attendi il termine dell'installazione.
Utilizzare il comando docker run per avviare il contenitore. Specifica il volume NFS e il punto di montaggio nel --mount
sezione.
docker run -d -it \
--name [container-name] \
--mount source=[volume-name],target=[mount-point]\
[image-name]
L'esempio seguente monta il volume NFS denominato nfs-volume
al /mnt
directory nel contenitore.
Conferma che il volume è stato montato correttamente utilizzando docker inspect
comando.
docker inspect [container-name]
I Mounts
sezione dell'output contiene i volumi montati nel contenitore.
Entra nella shell bash dell'ambiente contenitore con docker exec
:
docker exec -it [container-name] /bin/bash
Elenca il contenuto del /mnt
directory.
ls /mnt
L'output mostra i file ospitati nel /mnt/nfsdir
directory sul server.
Se crei un file all'interno del contenitore Docker, sarà accessibile anche nella directory originale sul server. Per eseguire il test, utilizza il comando touch per creare un file vuoto in /mnt
directory.
touch /mnt/docker1.txt
Sul server, vai alla directory che hai condiviso ed elenca i suoi contenuti. Viene visualizzato il file creato nel contenitore Docker.
Montaggio di volumi NFS con Docker Compose
Se utilizzi Docker Compose per gestire i tuoi container, monta il volume NFS definendolo nel file YML.
Crea il file YML.
nano docker-compose.yml
Definisci il volume NFS nei volumes
sezione.
version: "3.2"
services:
[service-name]:
image: [docker-image]
ports:
- "[port]:[port]"
volumes:
- type: volume
source: [volume-name]
target: /nfs
volume:
nocopy: true
volumes:
[volume-name]:
driver_opts:
type: "nfs"
o: "addr=[ip-address],nolock,soft,rw"
device: ":[path-to-directory]"
Crea e avvia il contenitore con la docker-compose up
comando.