20 ejemplos útiles de comandos de volumen de Docker para desarrolladores modernos

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.

creando volúmenes de docker

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

contenedor con volumen

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 = pares que denotan los atributos del volumen de datos.

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.

copia de seguridad de volumen

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

ayuda para el comando de volumen de la ventana acoplable

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.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *