Volúmenes en contenedores Docker: Implementación Eficiente

Volúmenes en contenedores Docker: Implementación Eficiente

¿Cómo listar los volumen de los contenedores de Docker?

Para listar los volúmenes que se encuentran disponibles en el sistema utilizamos el comando ls.

docker volume ls

En mi caso se han listado los siguientes volúmenes…

DRIVER              VOLUME NAME
local               94d333b9d856663d0351b471cfbf60cbd17c8b7d5c466b159b9a0c7dbcbeecde
local               b8f714c6945b1fcc4ee60cd6d6200dbbd0423d25e039144940be807737c24e40
local               b553df295b71d141257722c25a372f32be1206598d675c2f6fee3003c27da62b

¿Cómo crear un volumen en Docker?

Para crear un volumen utilizamos el comando create.

docker volume create nombre_del_volumen

¿Cómo obtener mas información de un volumen en Docker?

Si deseamos obtener mas información acerca de un volumen de Docker podemos utilizar el comando inspect.

docker volume inspect mivolumen

Esta es la información de un volumen que he creado con el nombre de mivolumen.

[
    {
        "CreatedAt": "2020-12-18T20:41:36-05:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/mivolumen/_data",
        "Name": "mivolumen",
        "Options": {},
        "Scope": "local"
    }
]

¿Cómo montar un volumen dentro de un contenedor Docker?

Para montar un volumen dentro de un contenedor lo primero que requerimos es crear un contenedor. Para ello usamos el comando container run.

docker container run -d --name micontenedor --mount source=mivolumen,target=/app nginx

Una ves que arranque nuestro contenedor podemos observar los detalles de este y como el volumen se encuentra montado.

docker volume inspect mivolumen
"Mounts": [
    {
        "Type": "volume",
        "Name": "mivolumen",
        "Source": "/var/lib/docker/volumes/mivolumen/_data",
        "Destination": "/app",
        "Driver": "local",
        "Mode": "z",
        "RW": true,
        "Propagation": ""
    }
],

Si intentamos listar el contenido del directorio nos daremos cuenta que se encuentra vacío.

sudo ls /var/lib/docker/volumes/mivolumen/_data

Ahora vamos a entrar al contenedor, crear un archivo dentro de “/app” y salir del contenedor.

docker container exec -it micontenedor sh
cd /app
echo "hola mundo" >> holamundo.txt
exit

Al salir del contenedor volvemos a listar el contenido del directorio del volumen nos mostrará el archivo dentro del volumen.

sudo ls /var/lib/docker/volumes/mivolumen/_data

Los datos almacenados en volúmenes de Docker son persistentes, por lo cual aún si borramos el contenedor, podremos volver a montar uno nuevo sobre el mismo volumen y recuperar los datos que ahí han sido grabados.