馃摝C贸mo crear vol煤menes en Docker

Juan Manuel Amatta
Juan Manuel Amatta
  • Actualizaci贸n

El uso de vol煤menes en Docker es la forma recomendada para garantizar la persistencia de la informaci贸n, incluso tras eliminar los contenedores. Los vol煤menes son enteramente manejados por Docker, y tienen varias ventajas sobre los bind mount (que dependen de la estructura de directorios y sistema operativo de la m谩quina host).

Algunas de las ventajas principales con las que cuentan son:

  • Administraci贸n a trav茅s de la l铆nea de comandos
  • Incluyen soporte para cifrado y pueden ser compartidos entre distintos contenedores
  • Simplicidad para hacer copias de respaldo o migraciones
  • Posibilidad de utilizar hosts remotos o proveedores en la nube

Crear un volumen con nombre y agregar contenido

Para comenzar, veamos las opciones disponibles para la manipulaci贸n de vol煤menes con la ayuda de Docker:

docker volume --help

docker volume create --help

docker crear volumen.jpeg

Como observamos arriba, para crear un nuevo volumen utilizamos docker volume create seguido del nombre que deseamos darle. Usaremos el comando que aparece abajo para crear un volumen con el nombre webvol. Por el momento no agregaremos opciones adicionales.

docker volume create webvol

Ver el listado de vol煤menes en Docker

En cualquier momento es posible visualizar la lista completa de vol煤menes con un comando:

docker volume ls

crear volumen docker.jpeg

En el listado de la imagen anterior podemos ver no s贸lo el volumen que acabamos de crear, sino tambi茅n otros vol煤menes que se generaron al crear contenedores.

Para obtener m谩s detalles e informaci贸n sobre un volumen en particular, podemos emplear el comando docker volume inspect NOMBREVOLUMEN. Por ejemplo, si inspeccionamos el volumen webvol que acabamos de encontrar nos encontraremos con la siguiente informaci贸n:

inspeccionar volumen docker.jpeg

El dato de mayor inter茅s por el momento es Mountpoint, que representa el directorio del host que est谩 dedicado a este volumen en particular. La ruta al directorio resalta una de las caracter铆sticas de los vol煤menes: son administrados por Docker y se encuentran fuera de las 谩reas personales de los usuarios.

A continuaci贸n agregaremos una l铆nea de contenido a un archivo index.html en esa ubicaci贸n. Por simplicidad y a fines demostrativos no seguimos la estructura formal de una p谩gina web:

sh -c "echo 'Hola desde un volumen' > /var/lib/docker/volumes/webvol/_data/index.html"

Ahora que dispones de un volumen y contenido en el mismo, en el pr贸ximo paso lo usar谩s durante la creaci贸n de un contenedor desde cero.

Creaci贸n de un contenedor y uso del volumen

A pesar de que es posible crear un volumen y un contenedor de manera conjunta, en este tutorial decidimos realizarlas de forma separada. El motivo detr谩s de esta elecci贸n es resaltar la independencia entre ambos recursos. Por esto, al eliminar un contenedor no se elimina el volumen asociado a este.

A continuaci贸n, crearemos un nuevo contenedor llamado webserver agregando la opci贸n --mount source=webvol,destination=/usr/share/nginx/html. Esto montar谩 el volumen webvol en el directorio /usr/share/nginx/html, que es la ra铆z del sitio web por defecto.

docker container run --name=webserver --publish 8080:80 --detach --restart=always --mount source=webvol,destination=/usr/share/nginx/html nginx

volumen docker.jpegTras haber creado el contenedor, podemos utilizar el comando docker container ls para verificar que est茅 corriendo. Si funciona, podemos entrar a un navegador e ingresar la IP de nuestro servidor y el puerto 8080 para ver la p谩gina que creamos anteriormente, como se puede apreciar en la imagen que acompa帽a a este p谩rrafo. Nota: si no puedes ingresar a la p谩gina, debes configurar el firewall de tu servidor para permitir el tr谩fico entrante al servidor 8080.

Como explicamos m谩s arriba, el volumen es independiente del contenedor y hasta puede usarse en otro. Para ilustrar, detendremos (docker container stop webserver) y eliminaremos (docker rm webserver) el contenedor webserver para luego confirmar que el volumen est谩 intacto listando los vol煤menes (docker volume ls):

volumen persistente docker.jpeg

Si empleamos el comando cat y la ubicaci贸n del archivo que creamos en el volumen, nos encontraremos con que a煤n est谩 disponible:

cat volumen docker.jpeg

A continuaci贸n, agregaremos una nueva l铆nea a ese archivo:

sh -c "echo '<br>Esta es una nueva linea' >> /var/lib/docker/volumes/webvol/_data/index.html"

Luego, crearemos un nuevo contenedor, que, al igual que el anterior, estar谩 montando el volumen webvol:

docker container run --name=webserver2 --publish 8080:80 --detach --restart=always --mount source=webvol,destination=/usr/share/nginx/html nginx

Si volvemos a ingresar a la direcci贸n de IP de nuestro servidor en el puerto 8080 a trav茅s de un navegador, nos encontraremos con el archivo modificado:

mismo volumen.jpeg

C贸mo eliminar un volumen en Docker

Para eliminar un volumen, primero es necesario detener y eliminar los contenedores que lo est茅n empleando. Luego hay que emplear el comando docker volume rm NOMBREVOLUMEN. Por ejemplo, si quisi茅ramos eliminar el volumen webvol que creamos anteriormente, deber铆amos detener el contenedor que lo emplea (docker container stop webserver2), eliminar ese contenedor (docker rm webserver2) y por 煤ltimo eliminar el volumen (docker volume rm webvol). Si intentamos eliminarlo directamente, nos dar谩 un mensaje de error:

eliminar volumen docker.jpg

En la imagen anterior tambi茅n podemos ver el uso del comando docker volume prune, que elimina todos los contenedores que no est谩n siendo empleados por ning煤n contenedor.

驴Fue 煤til este art铆culo?

Usuarios a los que les pareci贸 煤til: 0 de 0

驴Tiene m谩s preguntas? Enviar una solicitud

Comentarios

0 comentarios

Inicie sesi贸n para dejar un comentario.