meta data de esta página

Almacenamiento en Docker

Para almacenar los datos y que persistan al apagar o reiniciar el contenedor tenemos dos tipos de almacenamiento persistente:

  • bind mount: El almacenamiento se realiza en el sistema anfitrión del contenedor
  • volumes: Docker almacena los datos dentro de un área que él controla en el sistema de ficheros. Los volúmenes se almacenarán en /var/lib/docker/volumes/ y solo Docker tiene permisos sobre esta ubicación. Un volumen puede ser montado por diferentes contenedores a la vez.

La diferencia entre bind mounts y los volúmenes, es que a los volumes sólo accede Docker y con los bind mounts es posible acceder a la ruta mapeada y modificar los ficheros.

Bind Mount

Se utiliza un directorio del equipo anfitrion para almacenar los datos.

Ojo borra todo lo que ya hubiese en ese directorio

Un ejemplo sería

 docker run -it  --mount type=bind,source=/home/temporal,target=/tmp centos:latest /bin/bash

En el ejemplo arrancamos un contedor de centos y mapeamos la carpeta /home/temporal del contenedor a la carpeta /tmp del host anfitrion

Otro ejemplo usando docker para windows

docker run -it --mount type=bind,source=c:/tmp,target=/temporal centos:latest /bin/bash

Para compartir en Windows previamente dentro de las opciones para docker tienes que habilitar la opción de compartir C:

Volumen

Como ya dijimos los volumes se almacena en /var/lib/docker/volumes y los gestiona Docker directamente. Puedes ser anónimos o les podemos asignar un nombre descriptivo.

Para crear un volumen

docker volume create nombre_volumen

Para ver los volumenes

docker volume ls

Para borrar un volumen

docker volume rm nombre_volumen

Por ejemplo para crear un volumen prueba y enlazarlo a nuestro contenedor

docker volume create prueba
docker run -it --mount type=volume,source=prueba,target=/temporal centos:latest /bin/bash

Referencias