Saltar al contenido principal

Volúmenes, persistencia y montaje de archivos

Los contenedores están diseñados para ser efímeros, es decir, que se puedan crear y destruir fácilmente. Sin embargo, en muchas ocasiones necesitaremos que los datos que se generen en un contenedor sean persistentes, es decir, que se mantengan aunque el contenedor se destruya. Para ello, Docker nos proporciona los volúmenes.

Los volúmenes son directorios o archivos que se encuentran fuera del sistema de archivos del contenedor y que se montan en el contenedor para que este pueda acceder a ellos.

Además, también veremos como copiar archivos entre el host y el contenedor, exportar e importar volúmenes y, finalmente, cómo gestionarlo desde la interfaz gráfica de Docker Desktop.

🎥 Vídeo completo, utilicemos los capítulos de youtube para saltar a la sección que nos interese: https://youtu.be/APgKgrcibvs

Volúmenes, montaje de archivos y backups

Gestión de volúmenes​

Crear un volumen​

Para crear un volumen, podemos usar el comando docker volume create:

docker volume create mi-volumen

Listar volúmenes​

Podemos listar los volúmenes que tenemos en nuestro sistema con el comando docker volume ls:

docker volume ls

Inspeccionar un volumen​

Podemos inspeccionar un volumen con el comando docker volume inspect:

docker volume inspect mi-volumen

Montar un volumen en un contenedor​

Para montar un volumen en un contenedor, podemos usar la opción -v o --mount al crear el contenedor:

docker run -d --name mi-contenedor -v mi-volumen:/datos nginx

Eliminar un volumen​

Para eliminar un volumen, podemos usar el comando docker volume rm:

docker volume rm mi-volumen

Copiar archivos entre el host y el contenedor​

Para copiar archivos entre el host y el contenedor, podemos usar el comando docker cp:

docker cp /ruta/a/mi/archivo.txt mi-contenedor:/datos/archivo.txt

También podríamos hacerlo al revés, copiar un archivo del contenedor al host:

docker cp mi-contenedor:/datos/archivo.txt /ruta/a/mi/archivo.txt

Simplemente tendríamos que referencias el nombre del contenedor y la ruta del archivo en el contenedor.

Montaje de archivos y directorios​

Hemos visto cómo montar un volumen en un contenedor, aunque una práctica muy habitual es montar un archivo o un directorio de nuestro sistema de archivos en un contenedor. Esto es especialmente común cuando queremos compartir archivos entre el host y el contenedor, durante el desarrollo de aplicaciones, por ejemplo.

Podemos realizando con la misma opción de antes, -v, pero en este caso, en lugar de especificar un volumen, especificamos un archivo o directorio de nuestro sistema de archivos:

docker run -d --name mi-contenedor -v /ruta/a/mi/directorio:/datos nginx

Este método es muy útil pero tenemos que tener en cuenta que, en windows y mac, al ser sistemas de archivos diferentes y tener una capa de virtualización, el rendimiento puede ser peor que un volumen.

Gestión de volúmenes desde el panel de Docker Desktop​

En Docker Desktop, podemos gestionar los volúmenes desde la interfaz gráfica. Para ello, vamos a la pestaña de "Volumes", ahí podremos ver los volúmenes que tenemos en nuestro sistema y crear, eliminar o inspeccionar volúmenes.

Una de las funciones más interesantes es la posibilidad de importar/exportar volúmenes, así como acceder a los archivos de su interior, mover archivos entre el host y el contenedor, etc.

Esta sección gráfica se ve mejor en el vídeo, así que recomendamos verlo para entender mejor cómo funciona.

Hasta aquí la gestión de volúmenes y montaje de archivos en Docker. En la sección de compose veremos como crear y vincular volúmenes a múltiples contenedores de una forma más cómoda.


Volver al índice