Volúmenes en Docker.¶
- Un contenedor por defecto no tiene persistencia.
Para que se guarden tenemos 3 opciones:

Montajes “tmpfs”:¶
⚡ Los datos generados por el contendor se almacenan en el sistema operativo. Al detener el contenedor, se borran dichos datos.
⚡Solo funciona en sistemas Linux.
Directorios Enlazados (bind):¶
⚡ La información se guarda fuera del servicio Docker, es decir, en una carpeta enlazada de nuestra máquina anfitriona.
⚡ Ventaja: Podemos modificar los ficheros siendo propietarios de ellos, sin pasar por el servicio de docker y evitando posibles problemas de permisos.
⚡ Desventaja: No se puede hacer uso de los comandos del servicio docker para gestionarlo. Un montaje bind en linux no se puede usar en Windows y viceversa.
Ejemplo.¶
Todo lo que creemos en el /home de nuestro contenedor se guarda en la carpeta actual ($pwd).
docker run -d -it --name volbind --mount type=bind,source=$(pwd),target=/home ubuntu
Volúmenes:¶
⚡ La información se guarda dentro del servicio Docker, lo que nos permite mayor flexibilidad y facilidad a la hora de ser gestionados por el propio servicio (usar comandos del terminal de docker).
⚡ Podemos pasar un volumen entre Linux / Windows.
⚡ Es la forma más habitual de trabajar.
⚡ Podemos hacer uso de los comandos "docker volume XXX" para gestionarlos.
Ejemplo.¶
Se ha creado un volumen "miVol" que apunta a /home del contenedor.
docker run -d -it --name ejemploVol -v miVol:/home ubuntu
docker run -d -it --name ejemploVol --mount source=miVol,target=/home ubuntu
Si ahora realizo los siguientes pasos:
1. Crear un fichero en el /home del contenedor.
2. Borrar el contenedor.
3. Crear otro contenedor usando el mismo volumen.
⚡ Tras estos pasos el nuevo contenedor seguirá almancenando todos mis ficheros del anterior contenedor.
⚡ Los datos del /home de contenedor se están guardando realmente en la máquina anfitriona.