===== 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:{{ :virtualizacion:docker:dockershare.png?nolink&600 |}} ==== 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 ==== * https://www.atareao.es/tutorial/docker/almacenamiento-en-contenedores/ * https://4sysops.com/archives/introduction-to-docker-bind-mounts-and-volumes/