En el caso de Docker , los datos se almacenarán dentro del contenedor. Y cuando eliminemos el contenedor se perderán los datos. En esta guía, aprenderemos cómo crear volúmenes docker, cómo adjuntarlos a los contenedores y cómo se puede compartir el mismo volumen entre dos o más contenedores para almacenar los datos.
Si aún no conoce los conceptos básicos de Docker, consulte la siguiente guía:
- Primeros pasos con Docker
¿Por qué necesitamos volúmenes para Docker?
- Al eliminar contenedores, los volúmenes no se eliminarán.
- Adjuntar o separar volumen de los contenedores.
- Compartir volúmenes (almacenamiento/datos) entre diferentes contenedores.
- Desvincular los contenedores del almacenamiento.
- Almacene el volumen en un host remoto o en la nube.
Podemos tener una división lógica de los datos así como del contenedor. Podemos conservar los datos de forma que si eliminamos
el contenedor entonces también nuestros datos estarán presentes. Entonces, después de destruir el contenedor, podemos adjuntar el volumen a cualquier contenedor existente, así como a contenedores nuevos.
Primeros pasos con los volúmenes de Docker
El volumen de la ventana acoplable El comando mostrará los detalles de los comandos de volumen mediante los cuales podemos crear un volumen, inspeccionar los datos detallados del volumen, enumerar los volúmenes disponibles y eliminar los volúmenes.
# docker volume
Muestra la sección de ayuda del comando "docker volume"
Creación de volúmenes Docker
La sintaxis para crear un volumen docker es:
docker volume create <volume_name>
Ejemplo:
# docker volume create devops_volume
El comando anterior creará un volumen docker llamado devops_volume .
crear volumen acoplable
Lista de volúmenes de Docker
Para listar todos los volúmenes docker creados, ejecute:
# docker volume ls
enumerar los volúmenes de la ventana acoplable
Inspeccionar los volúmenes de la ventana acoplable
La inspección de volumen de la ventana acoplable El comando le dará los detalles sobre la creación del volumen, la ubicación, el nombre y el alcance.
Sintaxis:
docker volume inspect <volume_name>
Permítanme mostrarles los detalles de un volumen docker llamado devops_volume .
# docker volume inspect devops_volume
inspeccionar los volúmenes de la ventana acoplable
Crear contenedores con el volumen adjunto a ellos
Sintaxis:
docker container create --name <container_name> -it --mount source<volume_name>,target=/<folder_Name> <image_name>
Ejemplo:
# docker container create --name myBusyBox1 -it --mount source=devops_volume,target=/app busybox
crea un contenedor con el volumen adjunto
Para verificar si el contenedor se ha creado o no, use docker ps -a comando:
salida del comando "docker ps"
Contenedores iniciales
Para iniciar el contenedor recién creado, por ejemplo, myBusyBox1 , ejecuta:
# docker container start myBusyBox1
iniciar contenedores docker
Como puede ver en la captura de pantalla anterior, el contenedor myBusyBox1 se creó hace 8 minutos y comenzó hace 6 segundos.
Copiar archivos entre contenedores desde un volumen compartido
Creemos un escenario en el que crearemos el archivo en un contenedor en la ubicación compartida e intentaremos acceder al archivo desde otro contenedor.
Ya hemos creado un contenedor llamado myBusyBox1. Vamos a crear otro, por ejemplo myBusyBox2 .
crear un contenedor
Ahora tenemos dos contenedores en estado de ejecución, myBusyBox1 y myBusyBox2.
Conectémonos al primer contenedor y creemos un archivo dentro de /app carpeta.
# docker exec -it myBusyBox1 sh
El comando anterior lo llevará dentro del contenedor.
Luego, crea una nueva carpeta llamada devops dentro de la carpeta /app y salga del primer contenedor.
conectarse al primer contenedor
Ahora, copie un archivo, por ejemplo index.html , del sistema local a la ubicación /app/devops/ del contenedor myBusyBox1.
# docker container cp index.html myBusyBox1:/app/Devops
Ahora conéctese a otro segundo contenedor, es decir, myBusyBox2 y verifique que dentro de /app/devops carpeta el index.html el archivo está presente o no.
# docker exec -it myBusyBox2 sh
conectarse al segundo contenedor
A partir de la captura de pantalla anterior, se confirma que ambos contenedores comparten el mismo volumen.
Podemos verificar la ubicación del punto de montaje del volumen usando docker volume inspect comando como a continuación:
# docker volume inspect devops_volume
docker inspeccionar comando de volumen
Como puede ver, la ubicación del punto de montaje es /var/lib/docker/volumes/devops_volume/_data .
Vayamos a la ubicación del punto de montaje y veamos si el archivo copiado está disponible o no.
punto de montaje de los volúmenes de la ventana acoplable
En la ubicación de Mountpoint encontramos el mismo archivo.
Eliminar volúmenes de la ventana acoplable
La sintaxis para eliminar un volumen es:
docker volume rm <volume_name>
Eliminemos el volumen llamado devops_volume .
# docker volume rm devops_volume
eliminar un volumen docker
En la captura de pantalla anterior, estamos tratando de eliminar el volumen pero no podemos hacerlo porque el volumen ya está en uso. Entonces, en primer lugar, debemos matar el contenedor y liberar el volumen. Y luego podemos eliminar el volumen.
Para hacerlo, primero elimine todos los contenedores en ejecución usando el comando:
# docker rm –f $(docker ps -aq)
Y luego quita el volumen:
# docker volume rm devops_volume
eliminar volúmenes de la ventana acoplable
Eliminar todos los volúmenes a la vez
Usando docker rm comando, podemos eliminar un volumen a la vez. Si tenemos varios volúmenes y queremos eliminar todos los volúmenes, debemos usar prune comando.
Vamos a crear algunos volúmenes:
crear volúmenes acoplables
Ahora elimine todos los volúmenes de la ventana acoplable a la vez usando el comando:
# docker volume prune
eliminar todos los volúmenes de la ventana acoplable a la vez
¿Ver? Hemos eliminado todos los volúmenes de una sola vez.
Lectura sugerida:
- Explicación de los conceptos de red de Docker
- Cómo actualizar automáticamente los contenedores de Docker en ejecución
- ctop:una herramienta de supervisión de línea de comandos para contenedores de Linux
- Portainer:la forma más sencilla de administrar Docker
- PiCluster:una sencilla aplicación de gestión de Docker basada en web
- Dockly:administrar contenedores Docker desde la terminal
Sobre el autor:
Dhruv Tiwari es un ingeniero de DevOps al que le encanta automatizar cosas, trabajar con Linux a escala y sueña con el día en que los sistemas sean lo suficientemente inteligentes como para no tener que iniciar sesión en una caja de Linux. Viaje de CI/CD desde el código fuente hasta la implementación del código y la producción.