Docker - Almacenamiento

Controladores de almacenamiento

Docker tiene varios controladores de almacenamiento que permiten trabajar con los dispositivos de almacenamiento subyacentes. La siguiente tabla muestra los diferentes controladores de almacenamiento junto con la tecnología utilizada para los controladores de almacenamiento.

Tecnología Controlador de almacenamiento
OverlayFS superposición o superposición2
AUFS aufs
Btrfs brtfs
Administrador de dispositivos administrador de dispositivos
VFS vfs
ZFS zfs

Analicemos ahora algunos de los casos en los que utilizaría los distintos controladores de almacenamiento:

AUFS

  • Este es un controlador estable; se puede utilizar para aplicaciones listas para producción.

  • Tiene un buen uso de la memoria y es bueno para garantizar una experiencia fluida de Docker para los contenedores.

  • Hay una actividad de alta escritura asociada con este controlador que debe tenerse en cuenta.

  • Es bueno para los sistemas que son del tipo Plataforma como servicio.

Devicemapper

  • Este es un controlador estable; asegura una experiencia fluida en Docker.

  • Este controlador es bueno para probar aplicaciones en el laboratorio.

  • Este controlador está en línea con la funcionalidad principal del kernel de Linux.

Btrfs

  • Este controlador está en línea con la funcionalidad principal del kernel de Linux.

  • Hay una actividad de alta escritura asociada con este controlador que debe tenerse en cuenta.

  • Este controlador es bueno para los casos en los que mantiene varios grupos de compilación.

Ovelay

  • Este es un controlador estable y está en línea con la funcionalidad principal del kernel de Linux.

  • Tiene un buen uso de memoria.

  • Este controlador es bueno para probar aplicaciones en el laboratorio.

ZFS

  • Este es un controlador estable y es bueno para probar aplicaciones en el laboratorio.

  • Es bueno para los sistemas que funcionan como plataforma como servicio.

Para ver el controlador de almacenamiento que se está utilizando, emita el docker info mando.

Sintaxis

docker info

Opciones

Ninguna

Valor devuelto

El comando proporcionará toda la información relativa sobre el componente de Docker instalado en el host de Docker.

Ejemplo

sudo docker info

Salida

El siguiente resultado muestra que el controlador principal utilizado es el aufs controlador y que el directorio raíz se almacena en /var/lib/docker/aufs.

Volúmenes de datos

En Docker, tiene un volumen separado que se puede compartir entre contenedores. Estos se conocen comodata volumes. Algunas de las características del volumen de datos son:

  • Se inicializan cuando se crea el contenedor.
  • Se pueden compartir y también reutilizar entre muchos contenedores.
  • Cualquier cambio en el volumen en sí se puede realizar directamente.
  • Existen incluso después de eliminar el contenedor.

Veamos nuestro contenedor Jenkins. Hagamos undocker inspectpara ver los detalles de esta imagen. Podemos emitir el siguiente comando para escribir la salida deldocker inspect comando a un archivo de texto y luego ver el archivo en consecuencia.

sudo docker inspect Jenkins > tmp.txt

Cuando ve el archivo de texto usando el more command, verá una entrada como JENKINS_HOME=/var/Jenkins_home.

Este es el mapeo que se realiza dentro del contenedor a través de la imagen de Jenkins.

Ahora suponga que desea asignar el volumen en el contenedor a un volumen local, luego necesita especificar la opción –v al iniciar el contenedor. A continuación se muestra un ejemplo:

sudo docker run –d –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins

La opción –v se usa para mapear el volumen en el contenedor que es /var/jenkins_home a una ubicación en nuestro Docker Host que es /home/demo.

Ahora si vas a la /home/demo ubicación en su Docker Host después de iniciar su contenedor, verá todos los archivos de contenedor presentes allí.

Cambio del controlador de almacenamiento de un contenedor

Si desea cambiar al controlador de almacenamiento utilizado para un contenedor, puede hacerlo al iniciar el contenedor. Esto se puede hacer usando el–volume-driver parámetro cuando se utiliza el docker runmando. A continuación se da un ejemplo:

sudo docker run –d --volume-driver=flocker 
   –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins

los –volume-driver La opción se utiliza para especificar otro controlador de almacenamiento para el contenedor.

Para confirmar que se ha cambiado el controlador, primero usemos el docker pscomando para ver los contenedores en ejecución y obtener el ID del contenedor. Entonces, emita el siguiente comando primero:

sudo docker ps

Entonces emita un docker inspect contra el contenedor y coloque la salida en un archivo de texto usando el comando.

sudo docker inspect 9bffb1bfebee > temp.txt

Si navega por el archivo de texto y va a la línea que dice VolumeDriver, verá que se ha cambiado el nombre del controlador.

Crear un volumen

Se puede crear un volumen de antemano utilizando el dockermando. Aprendamos más sobre este comando.

Sintaxis

docker volume create –-name=volumename –-opt options

Opciones

  • name - Este es el nombre del volumen que debe crearse.

  • opt - Estas son opciones que puede proporcionar mientras crea el volumen.

Valor devuelto

El comando generará el nombre del volumen creado.

Ejemplo

sudo docker volume create –-name = demo –opt o = size = 100m

En el comando anterior, estamos creando un volumen de tamaño 100 MB y con un nombre de demostración.

Salida

La salida del comando anterior se muestra a continuación:

Listado de todos los volúmenes

También puede enumerar todos los docker volumes en un docker host. A continuación se proporcionan más detalles sobre este comando:

Sintaxis

docker volume ls

Opciones

Ninguna

Valor devuelto

El comando generará todos los volúmenes en el docker host.

Ejemplo

sudo docker volume ls

Salida

La salida del comando anterior se muestra a continuación: