Introducción
Los volúmenes de Docker son el mecanismo preferido para configurar el almacenamiento persistente para sus contenedores de Docker. Los volúmenes son directorios existentes en el sistema de archivos del host montados dentro de un contenedor. Se puede acceder a ellos tanto desde el contenedor como desde el sistema host.
Docker también permite a los usuarios montar directorios compartidos a través del sistema de intercambio de archivos remoto NFS. Los volúmenes creados para este fin utilizan el propio controlador NFS de Docker, lo que elimina la necesidad de montar el directorio NFS en el sistema host.
Este tutorial le mostrará cómo crear y usar volúmenes NFS Docker.
Requisitos previos
- Servidor NFS instalado y configurado en la máquina remota.
- Docker instalado en la máquina local.
- Una cuenta de usuario con privilegios de root/sudo.
Crear volumen acoplable NFS
La forma más sencilla de crear y administrar volúmenes de Docker es usar el docker volume
comando y sus subcomandos.
La sintaxis para crear un volumen NFS Docker incluye dos opciones.
- El
--driver
La opción define ellocal
controlador de volumen, que acepta opciones similares almount
comando en Linux. - El
--opt
La opción se llama varias veces para proporcionar más detalles sobre el volumen.
Los detalles incluyen:
- El tipo de volumen.
- El modo de escritura.
- La dirección IP o web del servidor NFS remoto.
- La ruta al directorio compartido en el servidor.
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=[ip-address],rw \
--opt device=:[path-to-directory] \
[volume-name]
El siguiente ejemplo ilustra la creación de un volumen NFS Docker llamado nfs-volume
. El volumen contiene el /mnt/nfsdir
directorio ubicado en el servidor, con el rw
(lectura/escritura) permiso. La dirección IP del servidor es 10.240.12.70
.
El comando ejecutado con éxito genera el nombre del volumen.
Enumere los volúmenes de Docker disponibles.
docker volume ls
La salida enumera el volumen que creó.
Inspeccione el volumen con inspect
subcomando.
docker volume inspect [volume-name]
La salida muestra la configuración del volumen.
Montar NFS en un contenedor
Para montar el volumen NFS en un contenedor, instale el nfs-common
paquete en el sistema host.
Comience por actualizar los repositorios.
sudo apt update
Use APT para instalar nfs-common
paquete.
sudo apt install nfs-common
Confirme que desea instalar el paquete y espere a que finalice la instalación.
Utilice el comando docker run para iniciar el contenedor. Especifique el volumen NFS y el punto de montaje en --mount
sección.
docker run -d -it \
--name [container-name] \
--mount source=[volume-name],target=[mount-point]\
[image-name]
El siguiente ejemplo monta el volumen NFS llamado nfs-volume
al /mnt
directorio en el contenedor.
Confirme que el volumen se montó con éxito utilizando docker inspect
comando.
docker inspect [container-name]
Las Mounts
La sección de la salida contiene los volúmenes montados en el contenedor.
Ingrese el shell bash del entorno del contenedor con docker exec
:
docker exec -it [container-name] /bin/bash
Enumere el contenido del /mnt
directorio.
ls /mnt
El resultado muestra los archivos alojados en /mnt/nfsdir
directorio en el servidor.
Si crea un archivo dentro del contenedor Docker, también se podrá acceder a él en el directorio original del servidor. Para probar, use el comando táctil para crear un archivo vacío en /mnt
directorio.
touch /mnt/docker1.txt
En el servidor, navegue hasta el directorio que compartió y enumere su contenido. Aparece el archivo creado en el contenedor Docker.
Montar volúmenes NFS con Docker Compose
Si usa Docker Compose para administrar sus contenedores, monte el volumen NFS definiéndolo en el archivo YML.
Cree el archivo YML.
nano docker-compose.yml
Defina el volumen NFS en volumes
sección.
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]"
Cree e inicie el contenedor con docker-compose up
comando.