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
--driverl'opzione definisce illocaldriver del volume, che accetta opzioni simili amountcomando in Linux. - Il
--optl'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.