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

¿Qué son los volúmenes de Docker y cómo se usan?

De forma predeterminada, los contenedores de Docker no tienen estado. Los datos almacenados en el contenedor son efímeros y se borrarán cuando el contenedor se apague. Obviamente, esto no es ideal para muchas aplicaciones, por lo que Docker proporciona algunas formas de lidiar con el estado.

¿Qué son los volúmenes?

La forma más sencilla de hacer que los datos de Docker sean persistentes es montar enlaces , que vinculan literalmente una ubicación en el disco del host a una ubicación en el disco del contenedor. Estos son simples de crear y usar, pero son un poco complicados ya que necesita configurar los directorios y administrarlos usted mismo.

Los volúmenes son como discos duros virtuales administrados por Docker. Docker se encarga de almacenarlos en el disco (generalmente en /var/lib/docker/volumes/ ), y les da un nombre único fácil de recordar en lugar de una ruta de directorio. Es fácil crearlos y eliminarlos mediante la CLI de Docker.

Estos tienen algunos otros beneficios además de ser administrados por Docker. Funcionan en contenedores de Linux y Windows, se pueden compartir de forma más segura entre varios contenedores y los controladores de volumen permiten a los proveedores de la nube proporcionar alojamiento remoto para los datos subyacentes. En general, los volúmenes son más fáciles de usar que los montajes vinculados y Docker los recomienda para administrar el estado.

Por supuesto, debe considerar si realmente necesita que los datos de Docker se almacenen en el servidor. Para muchas aplicaciones, usar un almacén de datos remoto externo como Amazon S3 o una base de datos externa es suficiente para almacenar los datos que usan sin atarlos al servidor front-end.

¿Cómo los usa?

Puede crear un nuevo volumen desde la línea de comando con el siguiente comando:

docker volume create nginx-config

Y luego, cuando vaya a ejecutar su contenedor Docker, vincúlelo al destino en el contenedor con el --mount bandera:

docker run -d 
--name devtest 
--mount source=nginx-config,target=/etc/nginx 
nginx:latest

Si ejecuta docker inspect <name> , verá el volumen enumerado debajo de Mounts sección.

Si está utilizando Docker Compose, la configuración también es fácil. Simplemente agregue un volumes entrada para cada servicio de contenedor que tenga, luego asigne un nombre de volumen a una ubicación en el invitado. También deberá proporcionar una lista de volúmenes en un volumes de nivel superior clave para Redactar para aprovisionar.

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - nginx-config:/etc/nginx/
volumes:
  nginx-config:

Esto creará el volumen automáticamente para este Compose. Si desea utilizar un volumen prediseñado desde fuera de Compose, especifique external: true en la configuración del volumen:

volumes:
  cms-content:
    external: true

Si prefiere simplemente hacer un montaje de enlace y no preocuparse por los volúmenes, simplemente ingrese un nombre de ruta en lugar del nombre del volumen y renuncie a definir los nombres de los volúmenes.

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - /docker/nginx-config/:/etc/nginx/

Puede leer la documentación completa de Docker sobre el uso de volúmenes con Compose si su caso de uso requiere algo más específico que esto.

Transferencia de volúmenes de Docker

Los volúmenes de Docker son solo carpetas creadas automáticamente y almacenadas en /var/lib/docker/volumes/ , con cada volumen almacenado en ./volumename/_data/ . Para hacer una copia de seguridad y restaurar, simplemente puede hacer una copia de seguridad de estos volúmenes directamente.

Si, en cambio, desea utilizar la CLI de Docker, lamentablemente no proporcionan una manera fácil de hacerlo. Para hacer una copia de seguridad de los volúmenes de un contenedor, necesitará el nombre del contenedor, así como la ubicación de montaje en la que se almacenan los datos.

La forma de hacerlo es un poco complicada:deberá ejecutar un comando en un nuevo contenedor Docker, enlazar montar el directorio de shell actual, montar el volumen en ese contenedor, luego tar el directorio en una copia de seguridad. Terminarás con un backup.tar del volumen:

docker run --rm --volumes-from containername -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /mountlocation

Luego, de manera similar, puede extraer el archivo en el directorio de destino:

docker run --rm --volumes-from containername -v $(pwd):/backup ubuntu bash -c "cd /mountlocation && tar xvf /backup/backup.tar --strip 1"

Sin embargo, esto sigue siendo mejor que tener que conocer la ubicación del host, por lo que puede automatizarlo si lo desea.


Docker
  1. Registros de Docker:qué son y cómo usarlos (con ejemplos)

  2. Cómo instalar y usar Docker en Ubuntu 20.04

  3. ¿Qué miniaturas adicionales están disponibles y cómo instalarlas?

  4. Cómo y por qué usar un host Docker remoto

  5. Cómo instalar y usar Docker Compose en CentOS

Cómo instalar y usar Docker Compose en Ubuntu 22.04

Cómo instalar y usar Docker en Ubuntu 22.04

¿Qué es Docker Compose y cómo se usa?

Cómo instalar y usar Docker en Ubuntu 20.04

¿Qué es PPA en Ubuntu Linux y cómo lo uso?

Cómo instalar y usar Docker en AlmaLinux 8