[Serie DevOps] Explicación detallada del volumen de datos de Docker (volumen)

[Serie DevOps] Explicación detallada del volumen de datos de Docker (volumen)

I. Descripción general

La imagen de Docker se forma superponiendo múltiples sistemas de archivos de solo lectura. Al iniciar un contenedor, Docker cargará la capa de solo lectura y agregará una capa de lectura y escritura encima de la capa de solo lectura (parte superior de la pila). Si necesita modificar un archivo en la capa de solo lectura, entonces esta capa de archivo debe copiarse a la capa de lectura y escritura. La versión de solo lectura del archivo todavía está ahí, simplemente oculta por la copia de nivel de escritura del archivo anterior. Cuando se elimina o reinicia la ventana acoplable, los archivos modificados anteriormente desaparecen. En Docker, la combinación de capa de solo lectura y capa de lectura y escritura se denomina Union File System. Docker empaqueta la aplicación y el entorno de ejecución para formar un contenedor para su ejecución. Si los datos generados por el contenedor Docker no se generan a través de Docker commits para generar una nueva imagen, de modo que los datos se guarden como parte de la imagen, entonces cuando el contenedor se elimina, los datos naturalmente desaparecerán. Para guardar datos en Docker, Docker diseñó un mecanismo llamado Volumen

Para lograr un buen almacenamiento e intercambio de datos, Docker propuso el concepto de volumen, que omite el sistema de archivos conjunto predeterminado y existe en el host como un archivo o directorio normal, que se denomina volumen de datos . .

2. Volumen de datos

Insertar descripción de la imagen aquí

Un volumen es un directorio especial que puede ser utilizado por uno o más contenedores, omite UFS y puede proporcionar las siguientes características:

  • Los volúmenes de datos permiten compartir o reutilizar datos entre contenedores.
  • Los cambios en el volumen surten efecto directamente.
  • Los cambios en el volumen de datos no se incluyen en la actualización del espejo.
  • El ciclo de vida de un volumen de datos dura hasta que ya no lo utilizan más contenedores.

3. ¿Por qué utilizar el volumen de datos?

Un volumen es un directorio seleccionado dentro de uno o más contenedores que proporciona a Docker datos persistentes o compartidos. Es el mecanismo preferido de Docker para almacenar datos generados y utilizados por los contenedores. Las modificaciones a los volúmenes entran en vigor inmediatamente; al confirmar o crear una imagen, el volumen no se incluye en la imagen.

El papel de los volúmenes de datos:

  1. Datos persistentes
  2. Compartir datos

Características de los volúmenes de datos:

  1. Incluso si tiene efecto
  2. Las actualizaciones de volumen no afectan la duplicación
  3. Los volúmenes persisten de forma predeterminada incluso si los contenedores se detienen o eliminan

4. Operaciones básicas de volúmenes de datos.

4.1 Crear volumen de datos

Utilice el siguiente comando para crear un volumen de datos

  • volumen acoplable crear nombre de volumen
docker volume create db_vol

Los volúmenes de datos creados de esta manera también se pueden administrar mediante el volumen de Docker, como verlos, eliminarlos, etc.

4.2 Ver volumen de datos

docker volume ls

4.3 Ver detalles del volumen de datos

  • volumen acoplable inspeccionar nombre del volumen
docker volume inspect db_vol

4.4 Eliminación del volumen de datos

  • nombre del volumen docker volumen rm
docker volume rm db_vol

5. Uso de volúmenes de datos

5.1 Primero cree el volumen de datos y luego móntelo

docker volume create data_volume

5.2 Crear un volumen de datos utilizado por el contenedor

docker run -d -it \
> --name volumetest \
> --mount source=data-vol,target=/data \
> ubuntu

Nota: Agregar "\" significa que el último retorno de carro y avance de línea se agregan al comentario. El sistema entiende que el comando aún no ha finalizado, por lo que continúa esperando que el usuario ingrese hasta que se lea el carácter final.

Abreviatura (-v):

docker run -d -it \
> --name volumetest \
> -v data-vol:/data \
> ubuntu

5.3 Montar directamente el directorio del host

De esta manera, no es necesario crear un volumen de datos por adelantado. Puede especificar directamente un directorio en el host para montarlo en el contenedor. Sin embargo, el directorio correspondiente en el host debe existir; de lo contrario, se informará una excepción.

docker: Error response from daemon: invalid mount config for type "bind": bind source path does not exist: /root/vdata.
1) El comando para crear un contenedor en modo montaje es el siguiente:
docker run -d -it \
> --name volumetest02 \
> --mount type=bind,source=/home/lisen/vdata,target=/vdata \
> ubuntu
2) El comando de creación del modo -v es el siguiente:
docker run -dit --name volumetest02 -v /home/lisen/vdata:/vdata ubuntu

5.4 Volúmenes de datos de sólo lectura

El volumen de datos creado se puede leer y escribir de forma predeterminada, lo cual es adecuado para la mayoría de situaciones. El volumen también se puede configurar en solo lectura.

1) El comando para crear un contenedor en modo montaje es el siguiente:
docker run -d -it \
> --name volumetest02 \
> --mount type=bind,source=/home/lisen/vdata,target=/vdata,ro \
> ubuntu
2) Crear en modo -v (puede entenderse como una abreviatura):
docker run -dit --name volumetest02 -v /home/lisen/vdata:/vdata:ro ubuntu

La función principal de un volumen de datos es la persistencia y el intercambio de datos, por lo que generalmente no se utiliza el modo de solo lectura.

5.5 Contenedor de volumen de datos

Propósito: El propósito principal del contenedor de volumen de datos es compartir algunos datos actualizados continuamente entre múltiples contenedores. El contenedor de volumen de datos también es un contenedor que proporciona específicamente volúmenes de datos para que otros contenedores los monten.

1). Crear un nuevo contenedor de volumen de datos
docker run -it -d --name data-volume-con -v /data ubuntu
2). Cree un nuevo contenedor para usar el contenedor de volumen de datos
docker run -it -d --name db-con-1 --volumes-from data-volume-con ubuntu

El parámetro –volumes-from se utiliza para especificar el contenedor del volumen de datos; ingrese el contenedor recién creado y cree un nuevo archivo de prueba en el directorio montado (directorio de datos, el directorio especificado al crear el contenedor del volumen de datos).

5.6 Contenedor de volumen de datos

1). Copia de seguridad del volumen de datos

Cree un contenedor que monte tanto el volumen de datos del que se va a realizar una copia de seguridad (especificado con el parámetro volumes-from) como el volumen de datos utilizado para realizar la copia de seguridad de los datos (especificado con el parámetro -v). Utilice el comando de compresión tar para comprimir los datos. El volumen del que se va a realizar la copia de seguridad especificado por el parámetro volúmenes-desde se comprime en el volumen de datos utilizado para la copia de seguridad (equivalente a guardarlo en el directorio correspondiente del host).

docker run --rm \
> --name backup \
> --volumes-from data-volume-con \
> -v /host-backup:/con-backup \
> ubuntu tar cvf /con-backup/backup200201.tar /data
  • El parámetro –rm especifica que el contenedor creado es un contenedor temporal y se eliminará automáticamente después de ejecutarse. Solo usamos este contenedor para completar la copia de seguridad. Una vez completada la copia de seguridad, los datos se almacenan en el host y el contenedor se almacena naturalmente. ya no es necesario.
  • El parámetro –volumes-from especifica el contenedor de volumen de datos del que se debe realizar una copia de seguridad.
  • El parámetro -v especifica el volumen de datos utilizado para realizar la copia de seguridad de los datos. /host-backup es el directorio del host y /con-backup es el directorio del contenedor correspondiente.
  • El comando tar completa la compresión de datos. Tenga en cuenta que la fuente de compresión es el directorio del contenedor, porque el comando de compresión en realidad se ejecuta en el contenedor, para ser precisos, se ejecuta en el contenedor de respaldo (especificado por el parámetro –name). Una vez completada la compresión, naturalmente se guardará en el directorio del Host.
2). Restauración de datos

Cree un nuevo contenedor de volumen de datos, que sirva como contenedor para almacenar datos restaurados.

docker run -it --name data-volume-con2 -v /data ubuntu

Cree un contenedor temporal, monte tanto el contenedor de volumen de datos utilizado para almacenar los datos restaurados como el volumen de datos que almacena los datos de respaldo y luego use el comando tar para descomprimir los datos respaldados en el volumen de datos que almacena los datos restaurados.

  • Parámetro –rm, consulte la explicación en la sección “Copia de seguridad de datos”
  • –parámetro volúmenes-desde, especifique el contenedor utilizado para guardar los datos restaurados
  • El parámetro -v se usa para especificar el volumen de datos donde se almacenan los datos de respaldo. /host-backup es el directorio usado para almacenar datos de respaldo en el host. Móntelo en el directorio /container-back del contenedor. El comando tar pasa /contenedor- atrás

Supongo que te gusta

Origin blog.csdn.net/songjianlong/article/details/132910493
Recomendado
Clasificación