Almacenar y compartir con volúmenes Docker

Almacenar y compartir con volúmenes Docker
En Docker, puede escribir datos en la capa de escritura. Pero los datos no persisten después de que un contenedor se apaga. Además, no es fácil mover los datos de un contenedor a otro. Naturalmente, el almacenamiento y el intercambio de datos a veces es necesario entre los servicios.

Docker tiene tres tipos de montajes de datos que pueden ayudar: volúmenes, monturas de enlace y TMPFS. Los volúmenes almacenan datos en el sistema de archivos del host, pero es administrado por Docker. Las monturas de enlace ayudan a almacenar datos en cualquier parte del sistema de host y los usuarios pueden modificar directamente los archivos de los procesos propios del host. Las monturas TMPFS se almacenan solo en la memoria del host. Los volúmenes de Docker son la mejor opción porque son los más seguros de usar.

Cómo usar volúmenes de Docker

Probemos un ejemplo práctico. Vamos a crear algunos contenedores ubuntu que comparten el mismo volumen.

Primero, queremos crear el volumen con el siguiente comando:

$ Docker volumen crea my-common-vol

Ahora podemos verificar si existe el volumen:

$ Docker Volumen LS
Nombre del volumen del conductor
local my-común-vol

Podemos inspeccionar aún más el volumen para verificar sus propiedades:

$ Docker Volume Inspect My-Common-Vol
[

"CreateAT": "2018-04-06T07: 43: 02Z",
"Conductor": "local",
"Etiquetas": ,
"MountPoint": "/var/lib/docker/volumes/my-common-vol/_data",
"Nombre": "My-Common-Vol",
"Opciones": ,
"Alcance": "local"

]

Es importante recordar que MountPoint está realmente dentro de la VM en la que Docker está ejecutando. Entonces, no es directamente accesible.

Ahora comencemos nuestro primer servidor con My-Common-Vol.

(Nota Para el comando Docker Run, puede usar las opciones -mount y -v para montar un volumen. La sintaxis de los dos es diferente. Usaremos la última opción -mount, ya que es la última.)

$ Docker Run--Name Server1--Mount Source = My-Common-Vol, Target =/App -it Ubuntu

Estamos montando la carpeta My-Common-Vol to /App en el contenedor Servidor1 Docker. El comando anterior debe iniciar sesión en el servidor Ubuntu1. Desde la línea de comando, vaya a la carpeta /App y cree un archivo:

root@1312ea0740555: /# CD /App
root@1312ea074055:/App# ls
root@1312ea074055:/App# touch creado-on-server1.TXT
root@1312ea074055:/App# ls
creado-on-server1.TXT

Entonces tenemos el archivo creado en-server1.txt en la carpeta /aplicación.

Vamos a crear un segundo servidor y montar el mismo volumen my-Common-Vol:

$ Docker Run--Name Server2--Mount Source = My-Common-Vol, Target =/Src -it Ubuntu

Ahora podemos ir a la carpeta /SRC en Server2, verificar los archivos Server1 y crear un nuevo archivo:

root@77CD51945461: /# CD /SRC
root@77CD51945461:/src# ls
creado-on-server1.TXT
root@77cd51945461:/src# touch creado-on-server2.TXT
root@77CD51945461:/src# ls -1
creado-on-server1.TXT
creado-on-server2.TXT

En la carpeta /src, vemos que creó en-server1.TXT ya existe. Agregamos creado-on-server2.TXT. Podemos consultar el servidor1 y ver eso creado en-server2.TXT aparece.

Comencemos un nuevo contenedor servidor3 que solo tendrá acceso de solo lectura al volumen my-common-vol:

$ Docker Run--Name Server3--Mount Source = My-Common-Vol, Target =/Test, Readonly -it Ubuntu

Entonces hemos creado Server3 con My-Common-Vol montado a /prueba.

Intentemos escribir algo en /prueba:

root@a6620da1eea1:/# prueba de CD
root@a6620da1eea1:/test# ls -1
creado-on-server1.TXT
creado-on-server2.TXT
root@a6620da1eea1:/test# touch creado-on-server3.TXT
touch: no puedo tocar 'creado en-server3.TXT ': sistema de archivos de solo lectura

Puedes ver que no podemos escribir en My-Common-Vol desde Server3.

Puedes eliminar volúmenes. Pero debe eliminar todos los contenedores asociados antes de intentar. De lo contrario, recibirá un error como este:

$ Docker Volumen RM My-Common-Vol
Respuesta de error de Daemon: No se puede eliminar el volumen: eliminar my-common-vol:
El volumen está en uso - [1312EA07405528BC65736F56692C06F04280779FD283A81F59F8477F28AE35BA,
77CD51945461FA03F572EA6830A98A16ECE47B4F840C2EDFC2955C7C9A6D69D2,
A6620DA1EEA1A39D64F3ACDF82B6D70309EE2F8D1F2C6B5D9C98252D5792EA59]

En nuestro caso, podemos eliminar los contenedores y el volumen como este:

$ Docker Container RM Server1
$ Docker Container RM Server2
$ Docker Container RM Server3
$ Docker Volumen RM My-Common-Vol

Además, si desea montar múltiples volúmenes, la opción del comando "Docker Run" -Mount lo permite también.

Estudio adicional:

  • https: // documentos.estibador.com/Storage/
  • https: // documentos.estibador.com/almacenamiento/volúmenes/
  • https: // documentos.estibador.com/storage/bind-monts/
  • https: // documentos.estibador.com/Storage/TMPFS/
  • https: // www.Digitalocean.com/Community/Tutorials/How-to-Share-Data-Between-Docker-Containers