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 /AppEntonces 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 /SRCEn 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 CDPuedes 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: