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.

Dentro vídeo: 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 os recomiendo que lo veáis 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