06. Administrar datos de contenedores de Docker

Tabla de contenido

1. Introducción

2. Cómo Docker implementa la gestión de datos

2.1 Volúmenes de datos

2.2 Contenedores de volumen de datos

3. Ejemplo sencillo

3.1 Ejemplo de volumen de datos

3.2 Ejemplo de contenedor de volumen de datos


1. Introducción

Al usar Docker en un entorno de producción, por un lado, es necesario guardar datos o compartir datos entre varios contenedores; por otro lado, después de eliminar el contenedor Docker, la información de estado del contenedor no se conservará. Entonces, ¿cómo lograr la persistencia de la información? Esto implica necesariamente la gestión de datos de los contenedores.

2. Cómo Docker implementa la gestión de datos

Hay dos formas principales de implementar la gestión de datos (o persistencia de datos) en un contenedor Docker:

2.1 Volúmenes de datos

Un volumen de datos es esencialmente un directorio montado, similar a un directorio montado usando el comando de montaje de Linux. Los volúmenes de datos pueden ser utilizados por contenedores, y los volúmenes de datos pueden compartirse y reutilizarse entre diferentes contenedores. Las modificaciones a los volúmenes de datos surten efecto inmediatamente. El volumen de datos y el contenedor son independientes entre sí y las actualizaciones del volumen de datos no afectarán a la imagen.

Incluso si se elimina el contenedor, el volumen de datos siempre existirá de forma predeterminada hasta que se elimine el volumen de datos.

En Docker, puede usar -mount y -v para montar volúmenes de datos en contenedores.

2.2 Contenedores de volumen de datos

Un contenedor de volumen de datos es un contenedor especial que se utiliza para mantener volúmenes de datos. Puede compartir información de datos entre múltiples contenedores. La migración de datos se puede completar fácilmente utilizando el contenedor de volumen de datos.

3. Ejemplo sencillo

3.1 Ejemplo de volumen de datos

Puede usar -mount o -v para montar el contenedor en el volumen de datos.

La diferencia entre -mount y -v es que -mount informará directamente de un error si el directorio del host no existe, mientras que -v lo creará automáticamente.

1) Cree un volumen de datos "myvolume".

docker volume create myvolume

Después de la creación, vea todos los volúmenes de datos.

docker volume ls

También puede usar el comando de inspección para ver información detallada sobre los volúmenes de datos.

docker inspect myvolume

2) Inicie un contenedor y use el volumen de datos.

Aquí use la imagen de Nginx para crear un contenedor llamado mynginx y el mapeo de puertos 1234:80.

docker run -d -p 1234:80 --name=mynginx --mount type=volume,source=myvolume,target=/usr/share/nginx/html/ nginx

Sin embargo, aquí se me indica que no se puede reconocer --mount y que no se encontró el comando --mount a través de docker run --help. Supongo que tiene algo que ver con la versión de la ventana acoplable. Estoy usando la versión 1.13.0 de la ventana acoplable aquí. Después de buscar en Internet, encontré que se requiere docker-ce 75.06 o superior. Aquí puedes comprobarlo por ti mismo.

Descripción de parámetros:

  1. --mount: Especifica montar el volumen de datos cuando se inicia el contenedor.
  2. tipo: especifica el método de montaje del volumen de datos. Existen los siguientes parámetros:
    1. volumen. Volumen de datos ordinario, el tipo predeterminado. Sus funciones están asignadas al directorio host "ar/lib/docker/volumes".
    2. unir. Vincular volúmenes de datos. Utilice este tipo para asignar el volumen de datos al directorio especificado del host al montarlo.
    3. tmpfs. Volumen de datos temporal, solo monte el directorio del contenedor en la memoria de la máquina host. Generalmente, este método no se utiliza en el entorno real.
  3. fuente: especifica el directorio o el volumen de datos en el host. Aquí se utiliza el volumen de datos myvolume creado en el paso (1).
  4. destino: monte el directorio "/usr/share/nginx/htm/" en el contenedor en el host.

3) También puede usar el parámetro -v para montar.

Usando -v montamos el directorio host /home/data en el directorio /data/mydatavolume en el contenedor.

# --privileged=true 不加这个,容器内使用ls会提示权限问题
docker run -it --privileged=true -v /home/data/:/data/mydatavolume centos /bin/bash

Dentro del contenedor:

Anfitrión:

Puede ver que el directorio se montó correctamente y, cuando modifique el contenido en el host, se sincronizará directamente con el interior del contenedor.

El formato del comando -v es:

-v 宿主机目录:容器内部目录

3.2 Ejemplo de contenedor de volumen de datos

El contenedor de volumen de datos también es un contenedor, que se utiliza especialmente para proporcionar volúmenes de datos para que los monten otros contenedores. Si los usuarios necesitan compartir algunos datos actualizados continuamente entre varios contenedores, la forma más fácil es usar contenedores de volumen de datos.

1) Cree un contenedor de volumen de datos.

Cree un contenedor de volumen de datos dbdata y cree un volumen de datos en él para montarlo en "/ dbdata":

docker run -it -v /dbdata --name dbdata centos

2) Genere algunos archivos en el contenedor de volumen de datos.

echo hello world > a.txt

3) Cree un contenedor container1 y use --volumes-from para montar el volumen de datos del contenedor dbdata.

docker run -it --volumes-from dbdata --name=container1 centos

En el contenedor container1, puede ver el directorio /dbdata, que ya tiene el a.txt recién generado:

4) De manera similar, puede continuar construyendo el contenedor container2 y usar --volumes-from para montar el volumen de datos del contenedor dbdata.

docker run -it --volumes-from dbdata --name=container2 centos

y crea b.txt:

5) Los datos también se pueden ver en el contenedor container1.

Se puede ver a partir de los resultados que los dos contenedores container1 y container2 montan el mismo volumen de datos, y los volúmenes de datos están todos en el mismo directorio dbdata. De esta manera, cualquier parte del contenedor puede escribir en este directorio y otros contenedores también pueden verlo. De esta manera, el intercambio de datos entre diferentes contenedores se realiza convenientemente, y la migración de datos del contenedor se realiza fácilmente utilizando este método.

Supongo que te gusta

Origin blog.csdn.net/p793049488/article/details/132003525
Recomendado
Clasificación