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
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.
- Lista de vídeos en Youtube: Curso de Docker