Docker ha cambiado la forma en que empaquetamos nuestros programas desde su aparición en 2013. Permite a los desarrolladores crear software de vanguardia con dependencias mínimas y hace que la implementación sea más fácil que nunca. Si es un aspirante a ingeniero de software que busca dominar la plataforma de la ventana acoplable, debe tener un buen conocimiento de varios comandos de volumen de la ventana acoplable. Los volúmenes son un mecanismo utilizado por Docker para proporcionar almacenamiento de datos persistente. Proporcionan beneficios significativos en términos de desarrollo e implementación de software. Hoy nos hemos tomado nuestro tiempo para enseñarle los componentes básicos de los volúmenes de datos en Docker.
Ejemplos esenciales de comandos de volumen de Docker
Esta guía le enseñará las metodologías actuales que utilizan los desarrolladores para implementar el almacenamiento de datos persistente en proyectos comerciales y de código abierto. Podrá crear sus propios volúmenes de datos y acceder a ellos sin esfuerzo desde sus contenedores docker después de completar esta guía. Si es un principiante absoluto, le sugerimos que revise nuestra guía sobre los comandos básicos de la ventana acoplable antes de trabajar con volúmenes.
1. Creación de volúmenes de Docker
Es muy fácil crear volúmenes de datos en Docker. Necesitará usar el comando volume create del demonio de la ventana acoplable para hacer esto. Eche un vistazo rápido al siguiente ejemplo para ver cómo funciona.
$ docker volume create testVolume
Este comando crea un nombre de volumen de datos testVolume que puede ser utilizado por un contenedor específico o compartido entre un grupo de contenedores. Ahora puede montar este volumen en una ubicación dentro del contenedor. Una vez hecho esto, será muy fácil almacenar o acceder a los datos del contenedor desde la máquina host.
2. Visualización de volúmenes disponibles
Es común que los entornos de desarrollo tengan una gran cantidad de volúmenes de datos. Por lo tanto, es crucial identificar los volúmenes específicos con los que está trabajando. Afortunadamente, es muy fácil enumerar todos los volúmenes de datos declarados actualmente utilizando el subcomando volume ls del demonio docker.
$ docker volume ls
Obtendrá una lista de todos los volúmenes de Docker presentes en su host ejecutando el comando anterior. Imprime los nombres de los volúmenes de datos, así como los respectivos controladores de volumen. Los volúmenes de datos se almacenan en una parte específica del sistema de archivos del host, a saber / var / lib / docker / volume / en Linux.
3. Inspección de volúmenes de Docker
El comando volume inspects del demonio docker nos proporciona información esencial sobre un volumen en particular. Muestra información como el controlador de volumen, el punto de montaje, el alcance y las etiquetas. El siguiente comando demuestra esto con un ejemplo práctico.
$ docker volume inspect testVolume
Los datos resultantes muestran que nuestro testVolume está montado en la ubicación / var / lib / docker / volume / testVolume / _data de nuestra máquina anfitriona. También muestra la fecha de creación de esta información, así como las opciones especificadas. Hace que la resolución de problemas de volúmenes de datos sea mucho más fácil para los desarrolladores.
4. Eliminación de volúmenes específicos
Si ha acumulado volúmenes de datos no utilizados, es una buena idea eliminarlos. Puede liberar espacio de almacenamiento en el entorno host de esta forma. El siguiente ejemplo ilustra cómo puede eliminar un solo volumen utilizando su atributo de nombre.
$ docker volume rm testVolume
Por lo tanto, puede eliminar un volumen de datos en particular utilizando el subcomando volume rm, seguido del nombre del volumen. Devolverá el nombre del volumen eliminado en su emulador de terminal Linux como confirmación.
5. Eliminación de varios volúmenes
Eliminar varios volúmenes de datos también es bastante sencillo. Simplemente pase el nombre de los volúmenes que desea eliminar uno tras otro. El siguiente comando muestra esto en acción.
$ docker volume rm testVolume newVolume otherVolume
Este comando eliminará los tres volúmenes de datos especificados. Tenga en cuenta que no hemos creado nuevoVolumen y otroVolumen. Se han utilizado aquí solo con fines de demostración. Por lo tanto, asegúrese de que sus volúmenes de datos existan en primer lugar antes de eliminarlos.
6. Eliminación de todos los volúmenes
Siempre es una buena idea deshacerse de sus volúmenes de datos una vez que sus contenedores se mueven al entorno de producción desde su máquina de desarrollo. Afortunadamente, el demonio de la ventana acoplable permite a los desarrolladores eliminar todos los volúmenes de la ventana acoplable disponibles con un solo comando, como se ilustra a continuación.
$ docker volume prune
Además, este comando de volumen de la ventana acoplable es elegante, lo que significa que no eliminará ningún volumen que esté siendo utilizado por un contenedor existente. Por lo tanto, es muy seguro de usar y ayuda a liberar espacio muy necesario en los entornos de desarrollo.
7. Creación de contenedores con volúmenes de datos
Hasta ahora solo hemos mostrado algunas operaciones básicas de volumen. Sin embargo, deberá montar sus volúmenes de datos en un contenedor de ventana acoplable en la mayoría de los escenarios de la vida real. El siguiente comando de la ventana acoplable le muestra cómo crear un contenedor de la ventana acoplable y montar un volumen de datos en este contenedor.
$ docker run -d -it --name test-container -v "testVolume":/tmp ubuntu:xenial
$ docker run -d -it --name test-container --volume "testVolume":/tmp ubuntu:xenial
Este comando creará un contenedor llamado test-container usando la imagen ubuntu: xenial y montará nuestro volumen de datos en el / tmp ubicación de este contenedor. Puede encontrar más información ejecutando el siguiente comando y marcando la sección «Montar» de la salida.
$ docker inspect test-container
8. Montaje de volúmenes de datos en contenedores
los -montar La opción en Docker se puede usar para dirigir un volumen de datos existente a una parte específica del sistema de archivos del contenedor. Aunque el resultado será totalmente similar al comando anterior, es más intuitivo para muchos desarrolladores de Linux.
$ docker run -d -it --name test-container --mount source=testVolume,target=/tmp ubuntu:xenial
los -montar opción un conjunto de tuplas separadas por comas. Estos son
9. Creación de montajes de enlace en Docker
Los montajes de enlace son un mecanismo de persistencia que ha estado disponible desde los primeros días de Docker. Proporcionan una funcionalidad algo limitada en comparación con los volúmenes de la ventana acoplable, pero son más adecuados en algunos casos específicos. A diferencia de los volúmenes, los montajes de enlaces dependen del sistema de archivos del host subyacente.
$ docker run -d -it --name test-container --mount type=bind,source=$(pwd),target=/tmp ubuntu:xenial
El comando anterior crea un montaje de enlace que asigna el directorio de trabajo actual de su sistema de archivos Linux al / tmp ubicación del contenedor. los tipo = enlazar tuple denota que se trata de un montaje de vinculación, en lugar de un volumen.
10. Rellenado previo de volúmenes de datos
A veces, los desarrolladores pueden requerir completar previamente sus volúmenes de datos al crear contenedores de Docker. Sin embargo, esta técnica solo se aplica si el destino de destino del contenedor contiene datos antes de la creación del volumen.
$ docker run -d --name=nginxContainer -v nginxVol:/usr/share/nginx/html nginx:latest
Este comando primero crea el volumen nginxVol y lo llena con el contenido del / usr / share / nginx / html ubicación del sistema de archivos de los contenedores. Ahora, estos datos serán accesibles para todos los demás contenedores que comparten el volumen nginxVol. Puede utilizar la sintaxis de montaje de forma alternativa, como se muestra a continuación.
$ docker run -d --name=nginxContainer --mount source=nginxVol,destination=/usr/share/nginx/html nginx:latest
11. Uso de volúmenes de solo lectura
De forma predeterminada, todos los contenedores tienen acceso de lectura y escritura a sus respectivos volúmenes de datos. Sin embargo, no todos los contenedores necesitan escribir datos en un volumen. A menudo, la simple lectura de datos es suficiente. En tales casos, puede asignar acceso de solo lectura a su contenedor. Verifique los comandos de volumen de la ventana acoplable para ver cómo funciona.
$ docker run -d --name=nginxContainer -v nginxVol:/usr/share/nginx/html:ro nginx:latest
Entonces, simplemente agregando el ‘: ro‘después del destino prohibirá que nginxContainer escriba datos en nginxVol. Deberá utilizar el ‘solo lectura‘si está creando volúmenes usando la opción –mount. Tenga en cuenta la diferencia de sintaxis con cuidado.
$ docker run -d --name=nginxContainer --mount source=nginxVol,destination=/usr/share/nginx/html,readonly nginx:latest
12. Creación de volúmenes utilizando controladores
Los controladores de volumen son un mecanismo flexible utilizado por Docker para proporcionar acceso a montajes remotos, cifrado de datos y otras funciones. Los siguientes comandos muestran a los usuarios cómo crear un contenedor de ventana acoplable utilizando un controlador de volumen específico.
$ docker volume create --driver vieux/sshfs -o [email protected]:/home/session -o password=testPassword sshVolume
Este comando crea un volumen de datos de la ventana acoplable utilizando el controlador vieux / sshfs. Este controlador permite a los desarrolladores adjuntar directorios remotos utilizando la tecnología SSHFS.
13. Ejecución de contenedores que crean volúmenes mediante controladores
Puede usar el siguiente comando para crear e iniciar contenedores que usan controladores de volumen para crear su volumen de datos. Este ejemplo se basa en el anterior.
$ docker run -d --name sshfsContainer --volume-driver vieux/sshfs --mount src=sshVolume,target=/tmp,[email protected]:/home/session,volume-opt=password=testPassword nginx:latest
La tupla volume-opt pasa las opciones. No es necesario para todos los casos de uso. Sin embargo, si especifica volumen-opt, debe utilizar el -montar bandera en lugar de -v o -volumen.
14. Creación de servicios que utilizan un volumen NFS
NFS o Network File System es un sistema de intercambio de archivos distribuido que nos permite usar sistemas de archivos remotos como si fueran parte del sistema de archivos local. El siguiente comando muestra cómo crear un servicio que usa un volumen NFS.
$ docker service create -d --name nfs-service --mount 'type=volume,source=nfsVolume,target=/tmp,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/var/docker-nfs,volume-opt=o=addr=10.0.0.10' nginx:latest
Este comando asume que nuestro servidor NGS se ejecuta en 10.0.0.10 y expone el / var / docker-nfs directorio. También usa NFSv3. Por lo tanto, deberá realizar algunos ajustes antes de usar esto con NFSv4.
15. Copia de seguridad de contenedores
Los volúmenes proporcionan una forma flexible para que los desarrolladores realicen copias de seguridad de los datos esenciales del contenedor. Con fines ilustrativos, primero crearemos un nuevo contenedor llamado test-container.
$ docker run -v /data --name test-container ubuntu:xenial /bin/bash
Entonces, test-container tiene un volumen llamado /datos. Ahora, lanzaremos otro contenedor y montaremos el /datos volumen del recipiente de prueba. Luego montaremos un directorio local de nuestro sistema de archivos como /respaldo y luego almacenar el contenido de /datos al /respaldo directorio como backup.tar.
$ docker run --rm --volumes-from test-container -v $(pwd):/backup ubuntu:xenial tar cvf /backup/backup.tar /data
los –Volúmenes-de La opción indica que en realidad estamos montando el volumen de datos del contenedor de prueba en nuestro nuevo contenedor.
16. Restauración de copias de seguridad de contenedores
También es muy fácil restaurar sus contenedores a partir de archivos de respaldo. Puede restaurar los datos en el mismo contenedor o en un contenedor específico. Aquí le mostraremos cómo restaurar el contenido del archivo backup.tar creado en el ejemplo anterior en un contenedor diferente.
$ docker run -v /data --name test-container2 ubuntu /bin/bash
Este comando crea otro contenedor nuevo con un /datos volumen. Ahora extraeremos el contenido del archivo backup.tar en este nuevo volumen de datos.
$ docker run --rm --volumes-from test-container2 -v $(pwd):/backup ubuntu bash -c "cd /data && tar xvf /backup/backup.tar --strip 1"
Puede automatizar sus copias de seguridad y restauraciones utilizando estos comandos de volumen de la ventana acoplable simples pero flexibles.
17. Eliminación de volúmenes anónimos
Anteriormente, hemos visto cómo eliminar un volumen con nombre normal. Sin embargo, Docker también tiene otro tipo de volumen de datos llamado volúmenes anónimos. Eche un vistazo rápido al siguiente comando para ver cómo la operación de eliminación difiere entre volúmenes con nombre y anónimos.
$ docker run --rm -v /anon -v whats-in-a-name:/tmp busybox top
El comando anterior creará un volumen anónimo llamado /luego y un volumen con nombre llamado lo que hay en un nombre. Ahora, Docker eliminará este contenedor automáticamente al salir. Sin embargo, solo eliminará el /luego volumen, no el volumen de whats-in-a-name. Debe eliminar eso usando el comando de volumen de docker rm.
18. Especificación de la propagación de la montura
La propagación de la montura denota el flujo de control entre la montura original y sus réplicas. De forma predeterminada, tanto el montaje de enlace como los volúmenes utilizan la privado configuración. Esto evita cualquier propagación entre la montura original y sus réplicas. Puede anular esta configuración mediante la tupla de propagación de enlace del montaje de enlace.
$ docker run -d -it --name test-container --mount type=bind,source="$(pwd)"/test,target=/tmp --mount type=bind,source="$(pwd)"/test,target=/temp,readonly,bind-propagation=shared nginx:latest
Este comando monta el /prueba directorio dos veces en el contenedor. Además, cualquier nueva incorporación al / tmp La montura se reflejará en el /temperatura montar. Sin embargo, no puede anular la configuración de propagación cuando utilice volúmenes. Solo funciona cuando se usa el montaje de enlace en un host Linux.
19. Visualización del manual de comandos de volumen
Puede ver fácilmente el uso básico de los comandos de volumen utilizando el siguiente comando.
$ man docker volume
Sin embargo, no proporciona explicaciones detalladas. Por lo tanto, le sugerimos que consulte la documentación oficial de la ventana acoplable sobre volúmenes y montajes de enlace.
20. Visualización de la página de ayuda para subcomandos
Utilice el siguiente comando para mostrar las opciones principales disponibles para el volumen de la ventana acoplable.
$ docker volume --help
También puede mostrar más información sobre una opción específica utilizando la siguiente sintaxis.
$ docker volume COMMAND --help $ docker volume ls --help
Pensamientos finales
Los volúmenes de Docker proporcionan una instalación muy necesaria para las aplicaciones modernas. Permiten a los desarrolladores crear aplicaciones y servicios robustos y de vanguardia al eliminar las preocupaciones de almacenamiento. Además, los comandos de volumen de la ventana acoplable también facilitan la creación y el mantenimiento de copias de seguridad de los datos de su contenedor. Hemos elaborado esta guía cuidadosamente pensada para ayudarlo a dominar los volúmenes de datos con mayor facilidad. Le recomendamos que comience con los comandos básicos primero y luego avance gradualmente a escenarios complejos de la vida real. Con suerte, le proporcionamos la información que buscaba en esta guía. No olvides dejarnos un comentario si tienes alguna pregunta.