Qué es bin mounts?
Cómo acceder a datos dentro de un contenedor?
Cómo acceder a los datos?
NOTA: Esto puede no ser muy seguro, si le damos acceso a ciertas partes del disco puede acceder a datos sensibles.
Esta es un área de almacenamiento (archivo/directorio) que esta disponible para la máquina anfitriona dentro de un contenedor.
Para probar esto usaremos una DB de mongoDB, en la que los datos que obtengamos, no mueran con el contenedor.
# Actualmente la ultima versión tiene bugs
$ docker run -d --name mdb mongo:4
$ docker exec -it mdb bash
$ mongo
Creamos una DB
Creamos un usuario
Verificamos que este usuario exista
$ use platzi
$ db.users.insert({"name":"Guido"})
$ db.users.find()
Eliminamos el contenedor
$ docker rm -f mdb
Para esto usaremos un bind mount que ligará un directorio de nuestra máquina con otro del contenedor.
$ mkdir mongodata
# Copiamos la ruta al portapapeles
$ pwd
$ docker run -v <directorio de la máquina>:<directorio del contenedor> mongo:4
# Ejemplo
$ docker run --name mdb -d -v /home/user/docker_practice/mongodata:/data/db mongo:4
Una vez volvemos a entrar a otro contenedor diferente los datos se siguen manteniendo.
$ docker run --name mdb -d -v /home/user/docker_practice/mongodata:/data/db mongo:4
<aside> 📌 Resumen: El bind mount básicamente es atar una ruta dentro de la máquina que ejecuta el contenedor con una ruta dentro del contenedor, ligando los dos directorios como un espejo.
</aside>
Existen otras formas de manejar datos y una de ellas son los volúmenes.
Qué son los volúmenes?
Cómo funciona?
Cómo ver volúmenes?
NOTA: Entre src y dst no debe haber espacios.
NOTA: Recuerda todo lo que haces siempre se puede ver en con inspect.
NOTA: Los volúmenes son una forma practica de compartir archivos entre contenedores, sin necesidad de compartir un directorio dejando los datos a la vista.
Desventaja: No podemos ver que datos hay, a menos que entres al contenedor y lo veas.
<aside> 📌 Resumen: Los volúmenes son una forma de manejar los datos de manera segura, creando un espacio en disco al que solo se puede acceder desde el contenedor. Es una evolución de los bind mounts.
</aside>
<aside>
📌 Resumen: La forma en la que docker maneja los archivos nos ayuda a compartir archivos entre la máquina local y los contenedores, con $ docker cp
…
</aside>