GNU/Linux >> Tutoriales Linux >  >> Linux

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 docker, debe tener una buena comprensión de varios comandos de volumen de docker. Los volúmenes son un mecanismo utilizado por Docker para proporcionar almacenamiento de datos persistente. Brindan 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 utilizadas por los desarrolladores para implementar el almacenamiento persistente de datos 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 esenciales 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. Deberá usar el comando de creación de volumen del demonio docker 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 listar todos los volúmenes de datos declarados actualmente usando el subcomando volume ls del demonio docker.

$ docker volume ls
- -

Obtendrá una lista de todos los volúmenes de la ventana acoplable 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/volumes/ en Linux.

3. Inspección de volúmenes de Docker

El comando de inspección de volumen 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 usando un ejemplo práctico.

$ docker volume inspect testVolume

Los datos resultantes muestran que nuestro testVolume está montado en la ubicación /var/lib/docker/volumes/testVolume/_data de nuestra máquina host. También muestra la fecha de creación de esta información, así como las opciones especificadas. Hace que la resolución de problemas con los 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 del 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 newVolume y otro Volumen . 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é en uso 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 docker en la mayoría de los escenarios de la vida real. El siguiente comando docker le muestra cómo crear un contenedor docker 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 utilizando la imagen ubuntu:xenial y montará nuestro volumen de datos en /tmp ubicación de este contenedor. Puede encontrar más información ejecutando el siguiente comando y revisando la sección "Montar" de la salida.

$ docker inspect test-container

8. Montaje de volúmenes de datos en contenedores

El –montaje 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

El –montaje 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 docker, pero son más adecuados en algunos casos específicos. A diferencia de los volúmenes, los montajes de enlace 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 vinculación que asigna el directorio de trabajo actual de su sistema de archivos Linux al /tmp ubicación del contenedor. El tipo=vincular tuple indica que se trata de un montaje de vinculación, en lugar de un volumen.

10. Relleno previo de volúmenes de datos

A veces, los desarrolladores pueden necesitar rellenar previamente sus volúmenes de datos al crear contenedores acoplables. Sin embargo, esta técnica solo se aplica si el destino del contenedor tiene datos anteriores a 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 completa con el contenido de /usr/share/nginx/html ubicación del sistema de archivos de los contenedores. Ahora, todos los demás contenedores que comparten el volumen nginxVol podrán acceder a estos datos. Puede usar la sintaxis de montaje alternativamente, 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 para 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. Tendrá que usar el 'solo lectura ‘ opción si está creando volúmenes usando la opción –mount. Tenga en cuenta la diferencia en la sintaxis cuidadosamente.

$ docker run -d --name=nginxContainer --mount source=nginxVol,destination=/usr/share/nginx/html,readonly nginx:latest

12. Creación de volúmenes mediante controladores

Los controladores de volumen son un mecanismo flexible que utiliza 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 docker 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 docker 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 volumen-opt pasa las opciones. No es necesario para todos los casos de uso. Sin embargo, si está especificando la opción de volumen, debe usar el –mount bandera en lugar de -v o –volumen.

14. Creación de servicios que usan un volumen NFS

NFS o Network File System es un sistema distribuido de intercambio de archivos que nos permite utilizar sistemas de archivos remotos como si fueran parte del sistema de archivos local. El siguiente comando muestra cómo crear un servicio que utiliza 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 utiliza 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 de los contenedores. Con fines ilustrativos, primero crearemos un nuevo contenedor llamado contenedor de prueba.

$ docker run -v /data --name test-container ubuntu:xenial /bin/bash

Entonces, el contenedor de prueba tiene un volumen llamado /data. Ahora, lanzaremos otro contenedor y montaremos el /data volumen del recipiente de prueba. Luego montaremos un directorio local de nuestro sistema de archivos como /backup y luego almacenar el contenido de /data a la /copia de seguridad 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-desde 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. Le mostraremos cómo restaurar el contenido del archivo backup.tar creado en el ejemplo anterior a un contenedor diferente aquí.

$ docker run -v /data --name test-container2 ubuntu /bin/bash

Este comando crea otro contenedor nuevo con /data 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 fácilmente con estos comandos de volumen acoplables 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 /anon y un volumen con nombre llamado qué-hay-en-un-nombre . Ahora, Docker eliminará este contenedor automáticamente al salir. Sin embargo, solo eliminará el /anon volumen, no el volumen de cuál es el nombre. Debe eliminar eso usando el comando de volumen docker rm.

18. Especificación de la propagación del montaje

La propagación del montaje denota el flujo de control entre el montaje original y sus réplicas. De forma predeterminada, tanto el montaje de vinculación como los volúmenes utilizan el rprivate entorno. Esto evita cualquier propagación entre la montura original y sus réplicas. Puede anular esta configuración utilizando 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 /test directorio dos veces en el contenedor. Además, cualquier nueva incorporación a /tmp el montaje se reflejará en el /temp montar. Sin embargo, no puede anular la configuración de propagación al usar 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 usando el siguiente comando.

$ man docker volume

Sin embargo, no proporciona explicaciones detalladas. Por lo tanto, le sugerimos que consulte la documentación oficial de Docker sobre volúmenes y montajes enlazados.

20. Visualización de la página de ayuda para subcomandos

Use 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 usando 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 presentado esta guía cuidadosamente pensada para ayudarlo a dominar volúmenes de datos más fácilmente. Recomendamos encarecidamente que comience primero con los comandos básicos y luego pase gradualmente a escenarios complejos de la vida real. Con suerte, le proporcionamos la información que estaba buscando en esta guía. No olvides dejarnos un comentario si tienes alguna pregunta.


Linux
  1. 12 ejemplos útiles de comandos Wget en Linux

  2. 16 ejemplos útiles de comandos 'cp' para principiantes de Linux

  3. Ejemplos de comandos DNF para principiantes

  4. Ejemplos de comandos lvremove en Linux

  5. Ejemplos de comandos lvdisplay en Linux

11 ejemplos útiles de comandos divididos para sistemas Linux

Explicación de los volúmenes de Docker con ejemplos

Exa:un reemplazo moderno para ls Command

40 ejemplos útiles de comandos PS de Linux para aspirantes a administradores de sistemas

Los 40 ejemplos de comandos Go para aspirantes a desarrolladores de Golang

12 ejemplos útiles de comandos de fecha de Linux