AD

¿Ya dominas lo básico? Un curso estructurado de Docker es la vía rápida para dar el salto.

Ver cursos de Docker en Udemy

Enlace de afiliado. No te cuesta nada extra.

🐳Lecciones de Docker
Lección 19 / 45

Montar un volumen con docker run -v

En esta lección conservarás datos más allá de la vida del contenedor.

docker run -v /data:/var/lib/data nginx monta una carpeta del anfitrión dentro del contenedor. El orden es el mismo que en los puertos: anfitrión:contenedor.

Esta es la respuesta al problema que apareció en la lección 3: lo que se escribe dentro de un contenedor muere con él. Lo que se escribe en un volumen sobrevive, aunque borres el contenedor y crees otro.

Hay dos formas y conviene distinguirlas. Un bind mount, como el del ejemplo, comparte una carpeta concreta de tu máquina: es lo que se usa en desarrollo para editar código y ver el cambio al instante. Un volumen con nombre lo gestiona Docker en su propio espacio: es lo que se usa en producción para los datos de una base de datos.

El comportamiento que más sorprende: montar sobre una carpeta que ya tenía contenido lo oculta. Los archivos de la imagen siguen ahí pero dejan de verse, tapados por lo que hay en el anfitrión. Si esa carpeta estaba vacía, el contenedor arranca sin los archivos que esperaba y falla de forma desconcertante.

En Mac y Windows hay además una diferencia de rendimiento notable con muchos archivos pequeños, porque hay una capa de traducción de por medio.

Docker
Pruébalo (escríbelo en la terminal simulada)
docker run -v /data:/var/lib/data nginx

🧑‍💻 Puedes escribir este comando en la terminal simulada de Docker para probarlo tú mismo (esta página no incluye terminal interactiva).

Espacio publicitario (banner)
Espacio publicitario (en el artículo)