GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Comprender los volúmenes de Docker

Los archivos (y otros datos) almacenados en un contenedor de Docker no persisten si se elimina el contenedor. Para superar esto, Docker volúmenes y vincular monturas puede ser usado. Esta guía analiza el uso de volúmenes de Docker como una forma de almacenar datos persistentes. Piense en los volúmenes como un disco duro externo; si se borra el disco duro interno, el disco duro externo aún conserva sus propios datos. Los volúmenes se almacenan en el host y son independientes de cualquier contenedor o imagen. Se pueden montar en diferentes contenedores según sea necesario y, dado que los volúmenes están separados de la imagen, no aumentan el tamaño de la imagen.

Antes de comenzar

  1. Si aún no lo ha hecho, cree una cuenta de Linode y una instancia de cómputo. Consulte nuestras guías Introducción a Linode y Creación de una instancia informática.

  2. Siga nuestra guía de configuración y protección de una instancia informática para actualizar su sistema. También puede establecer la zona horaria, configurar su nombre de host, crear una cuenta de usuario limitada y fortalecer el acceso SSH.

  3. Instale Docker en su sistema.

  4. Esta guía asume que se siente cómodo usando la línea de comandos de Linux. Consulte Uso del terminal.

  5. Esta guía asume que tiene una comprensión básica de Docker. Además, ya debería haber instalado Docker en su servidor e implementado una imagen de Docker. Consulte Introducción a Docker.

Creación de un volumen Docker

Para comenzar a comprender los volúmenes de Docker, necesitará un volumen en el que trabajar.

  1. Inicie sesión en su Linode (u otro servidor Linux) a través de SSH o Lish.

  2. Cree un volumen ingresando el siguiente comando, reemplazando example_volume con la etiqueta de tu volumen.

    docker volume create example_volume
    
  3. Verifique que se haya creado el volumen.

    docker volume list
    

    La salida debería verse así:

    [[email protected] ~]$ docker volume list
    DRIVER    VOLUME NAME
    local     example_volume
    [[email protected] ~]$

Inspección de un volumen de Docker

Si desea ver más detalles sobre un volumen, puede usar la docker volume inspect comando:

docker volume inspect example_volume

El resultado debe ser similar al siguiente:

[[email protected] ~]$ docker volume inspect example_volume
[
    {
        "CreatedAt": "2021-05-19T15:27:27Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/example_volume/_data",
        "Name": "example_volume",
        "Options": {},
        "Scope": "local"
    }
]
[[email protected] ~]$

Montar un volumen de Docker en un contenedor

Para que los datos de un contenedor persistan, debe tener un Docker Volume montado usando el --mount flag en la docker run dominio. Reemplazar [nombre_de_volumen] con el nombre de su volumen, [ruta] con la ruta absoluta en la que desea montar el volumen dentro del contenedor, y [docker_image] con el nombre de tu imagen.

docker run --mount source=[volume_name],destination=[path] [docker_image]

Como ejemplo, el siguiente comando monta el volumen llamado example_volume a la ruta /example_volume dentro de un contenedor usando ubuntu imagen.

docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu

Este comando ejecuta la imagen, monta el volumen e inicia la sesión del usuario como root en la imagen de Ubuntu. Una vez dentro como root, puede verificar que el "example_volume" esté montado con solo ls . El resultado de todo esto debería verse así:

[[email protected] ~]$ docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
[email protected]:/# ls
bin   dev  example_volume  lib    lib64   media  opt   root  sbin  sys  usr
boot  etc  home            lib32  libx32  mnt    proc  run   srv   tmp  var
[email protected]:/#

Copiar y compartir archivos entre contenedores

Docker Volumes también permite compartir entre contenedores.

  1. Monte el volumen de acuerdo con las instrucciones de Montaje de un volumen de Docker en un contenedor. Este es el ejemplo utilizado anteriormente:

    docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
    
  2. Cambie el directorio a example_data directorio.

    cd example_data
    
  3. Cree un archivo de prueba en el volumen ingresando el siguiente touch comando.

    touch example_file.txt
    
  4. Luego sal del contenedor.

    exit
    
  5. Ahora ejecute otra imagen acoplable con el mismo volumen montado. El debian la imagen se usa en el siguiente ejemplo.

    docker run -it --name=example_2 --mount source=example_volume,destination=/example_volume debian
    
  6. Dentro del contenedor nuevo (llamado "example_2" si usa un comando similar al anterior), navegue hasta el directorio del volumen.

     cd example_volume
    
  7. Introduzca ls para ver el archivo.

    ls
    

Montar un directorio desde tu Linode a un contenedor

En lugar de crear un nuevo volumen, también puede montar un directorio desde su Linode (u otro sistema) en un contenedor Docker. Esto se logra a través de montajes de enlace y es útil cuando desea almacenar y acceder a los archivos de un contenedor directamente desde su sistema. En comparación con los volúmenes, los montajes de vinculación tienen una funcionalidad limitada.

  1. Inicie sesión en su Linode (u otro servidor Linux) a través de SSH o Lish.

  2. Use el siguiente comando para ejecutar Docker, reemplazando [local-directory] con la ruta absoluta al directorio dentro de tu Linode que te gustaría montar (usa $(pwd) para montar el directorio actual). Luego reemplace [directorio de montaje] con la ruta absoluta en su contenedor donde desea acceder a los archivos locales y reemplazar [imagen] con la imagen de Docker que desea utilizar.

    docker run --rm -it -v [local-directory]:[mount-directory] [image]
    
  3. Se inicia sesión automáticamente en el contenedor. Navegue a su directorio de montaje y vea los archivos.

    ls
    

    Debería ver todos los archivos que haya almacenado en el directorio local.

Lecturas adicionales

Hay mucho más en Docker Volumes de lo que podemos explicar aquí, y el caso de uso de cada uno será diferente. Sin embargo, dos excelentes lugares para revisar más sobre esto son el sitio de Docker's Docs:

  • Usar volúmenes en Docker Docs

  • Solucionar problemas de errores de volumen en Docker Docs

Más información

Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.

  • Usar volúmenes en Docker Docs
  • Solucionar errores de volumen en Docker Docs

Docker
  1. Creación de volúmenes lógicos en Linux con LVM

  2. ¿Comprender el espacio libre/volúmenes en Ubuntu?

  3. Estibador

  4. Introducción a Docker

  5. Comprensión de la propiedad del archivo del usuario en la ventana acoplable:cómo evitar cambiar los permisos de los volúmenes vinculados

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

Gestión de volúmenes lógicos explicada en Linux

Cómo agregar un volumen a un contenedor Docker existente

Cómo ejecutar Jenkins en Docker usando Docker Compose con Volúmenes

Cómo acceder a archivos fuera de un contenedor Docker

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