Apuntes de Kirby
  • 👀whoami
  • 🦉Redes
    • Introducción Redes
      • Organizaciones
      • Historia
      • Puntos de conexión
      • Métodos de acceso a la red
    • Clasificación de las redes
    • Topología de las red
    • Direccionamiento IP
      • IPv4
        • Subredes IPv4
        • Superredes IPv4
        • VLSM
      • IPv6
      • MAC
      • NAT
    • Enrutamiento estático
    • Enrutamiento dinámico
      • RIPv1 & RIPv2
      • Tablas de enrutamiento
      • 🚧Redes conmutadas
    • CML
      • 🚧1er CML lab
    • CISCO
      • ¿Qué son las VLAN?
        • Ejemplo 1 de VLAN
        • Ejemplo 2 de VLAN
      • Acceso y password
      • NAT / PAT
    • Firewalls
      • Tipos de firewalls
      • ZPF
        • Funcionamiento
        • Configurando un ZPF
      • Sophos Firewall XG
        • Sophos home
        • Aprendiendo a usar Sophos
      • pfSense
        • Instalando pfSense
        • OpenVPN en pfSense
        • Port Forward
        • Alias
    • Proxy
      • Squid en pfSense
        • Squid Proxy Server
        • SquidGuard Proxy
      • Proxy reverse Nginx
    • 🚧Suricata
  • 🐝Servicios
    • Servidores Web
      • Nginx
        • NGINX, hosts virtuales
        • Hosts virtuales basados en dominio
        • PHP-FPM
        • Nginx: PHP y MySQL
          • MySQLi - PHP
        • En Alpine linux
        • 🚧Proxy
    • Servidores de correo
      • Seguridad en el correo
      • Postfix
      • hMailServer
      • Clientes de correo
        • Mailutils
        • Mutt
    • Servidores de FTP
      • FileZilla
      • VSFTPD
      • FTP vía IIS
    • Servidores DNS
      • DNS - Windows Server 2016
      • DNS - Ubuntu Server 22.04
      • Systemd
    • Servidores DHCP
      • DHCP-Windows Server 2016
      • DHCP-Ubuntu Server 22.04
    • Servidores MySQL
    • 🚧Mensajería instantánea
      • Ejabberd
    • 🚧Imágenes - Vídeos
      • FFMPEG + YT-DLP
      • Plex
      • Jellyfin
      • Plesk
      • RTMP
      • SRT
    • Webmin + Virtualmin
  • NextCloud
  • 🔑Seguridad
    • NAS
      • Instalación Synology NAS en VirtualBox
        • Creación de volúmenes y su uso
        • Actualización Synology NAS
        • Creación de usuarios y carpetas compartidas
        • Funciones del panel de control
          • Acceso por SSH
          • Configuración de los servicios de archivos
          • Configuración de red
          • Copias de seguridad (restauración)
          • Seguridad
          • Personalizar páginas de inicio
          • Servicio de notificaciones
        • Centro de paquetes Synology
          • Servidores multimedia
          • Paquetes de utilidades
          • Cloud Sync
          • Hyper Backup
          • Synology Office
      • Truenas
        • Rsync en Truenas
      • OpenmediaVault
    • Backups
      • Rsync
        • Ejemplo de rsync
    • ¿Qué son las ACL?
    • SOPS/AGE
    • RAID
      • mdadm
  • 🐳Virtualización
    • Proxmox
      • Instalar en VMWare
      • Instalar en VirtualBox
      • Entorno Proxmox
      • Almacenamiento local
      • Añadir discos
      • Clonar
      • Qemu agent
      • Linux container - LXC
      • Clúster
      • Red Interna
      • 🚧Proxmox Backup
      • 🚧Otras consideraciones
    • Alpine Linux
    • Contenedores
      • Docker
        • YAML
        • Instalando Docker
        • Portainer
          • Instalando Portainer
          • Dentro de Portainer
        • Docker volumen
        • Docker compose
          • Docker: PHP y MySQL
          • Importar sitio web en Docker
          • Instalando Wordpress
      • Pi-hole
        • Instalando Pi-hole en Docker
        • Instalando Pi-hole en Debian
        • RDP
          • RDP - Docker
  • 🐞Misceláneas
    • Datos - codificación
    • IPTables
    • Túnel con Cloudflare
    • Servidor de video
    • Comandos de Linux
    • Anaconda & Spyder
    • CGI - NGINX
    • Arduino
      • Capítulo 0 Blink
      • Capítulo 1 Led
      • Capítulo 2 Botton & LED
  • ⁉️Interesante
    • Curioso
    • Ideas
Powered by GitBook
On this page
  • Manipulando volúmenes en Docker
  • Links

Was this helpful?

Edit on GitHub
  1. Virtualización
  2. Contenedores
  3. Docker

Docker volumen

PreviousDentro de PortainerNextDocker compose

Last updated 4 months ago

Was this helpful?

Es el mecanismo preferido para conservar los datos generados y utilizados por los contenedores de Docker. Depende de la estructura de los directorios y del propio SO del equipo host. Docker administra los volúmenes y tienen ventajas que son:

  • Los volúmenes son más fáciles de respaldar o migrar.

  • Se puede administrar volúmenes mediante los comandos de CLI de Docker o la API de Docker.

  • Funcionan en contenedores de Linux y Windows.

  • Se pueden compartir de forma más segura entre varios contenedores.

  • Los controladores de volumen permiten almacenar volúmenes en hosts remotos o proveedores de la nube, cifrar el contenido de los volúmenes o agregar otras funciones.

  • Los nuevos volúmenes pueden tener su contenido rellenado previamente por un contenedor.

  • Suelen ser una mejor opción que los datos persistentes en la capa de escritura de un contenedor, porque un volumen no aumenta el tamaño de los contenedores que lo utilizan y el contenido del volumen existe fuera del ciclo de vida de un contenedor determinado.

Funcionamiento general

A pesar de todo esto, si queremos entender los volúmenes de Docker, echémosle un vistazo general al funcionamiento del sistema de archivos de Docker.

  • Una imagen de Docker consta de varias capas de solo lectura.

  • Al iniciarse una imagen desde un contenedor, Docker añade una nueva capa editable en la parte superior del sistema.

  • El sistema de archivos de Docker se llama Union File System (UnionFS).

  • Cada vez que se modifica un archivo, Docker crea una copia de este mismo incluyendo las capas de solo lectura hasta la capa más alta, la que sí se puede editar.

  • De esta manera queda una copia del archivo original (de solo lectura) sin cambios.

  • Al eliminar un contenedor, se pierde la capa más alta, la que tiene permisos de escritura. Esto significa que todos los cambios realizados después de iniciar el contenedor se pierden.

Como ya hemos dicho, un volumen de contenedor permite conservar los datos, aunque se elimine el Docker container. Los volúmenes también permiten un intercambio práctico de datos entre el host y el container. Por tanto, crear un volumen de Docker es una buena solución para poder:

  • Transferir datos a un contenedor de Docker

  • Guardar los datos de un contenedor de Docker

  • Intercambiar datos entre contenedores de Docker

Adicionalmente:

  • Los volúmenes de Docker existen fuera del Union File System con su acceso de solo lectura y la capa de escritura.

  • El volumen es una carpeta compartida entre el contenedor y la máquina host.

  • Los volúmenes también pueden ser compartidos entre contenedores.

Manipulando volúmenes en Docker

Un volumen de contenedor se encuentra fuera del propio contenedor en el equipo host. Fuera del container, el volumen se comporta como una carpeta en la que se pueden almacenar datos y desde la que se pueden recuperar datos. Se trata del mount point de un directorio en el host.

Tenemos varias formas de crear y gestionar volúmenes en Docker y cada método tiene sus propias ventajas e inconvenientes.

El comando docker volume create crea un volumen identificado con un nombre. El nombre te permite encontrar fácilmente los Docker volumes y poder asignarlos a los contenedores específicos.

El siguiente comando se utiliza para crear y nombrar un volumen:

sudo docker volume create --name [volume name]

Si queremos crear un container que utilice un volumen ya creado, podemos añadir el siguiente parámetro al comando docker run:

docker run -v [volume name]:[container directory]

Para ejecutar un contenedor desde una imagen de Ubuntu denominada my-test-volume y asignar el data-volume al directorio o el data al container, el comando sería:

sudo docker run -it --name my-test-volume -v data-volume:/data ubuntu /bin/bash

Para listar los volúmenes de Docker que tenemos, utilizamos el siguiente comando:

sudo docker volume ls

Este comando genera la lista de todos los volúmenes de Docker creados en el host.

Si queremos inspeccionar un volumen en concreto, utilizamos el siguiente comando:

sudo docker volume inspect [volume name]

Este comando te brinda información sobre el volumen especificado. Incluye el mount point y el directorio en el sistema host a través del cual se puede acceder al volumen de Docker. Si queremos obtener más información sobre el volumen MyData (por ejemplo) que hemos creado, entonces el comando a utilizar sería:

sudo docker volume inspect data-volume

Para eliminar un volumen creado de este modo, podemos utilizar el siguiente comando:

sudo docker volume rm [volume name]

No se puede eliminar un volumen si está siendo utilizado por un contenedor existente. Con lo cual, antes de eliminar el volumen, debemos detener y eliminar el contenedor. Para ello podemos utilizar los comandos:

sudo docker stop [container name or ID]
sudo docker rm [container name or ID]

Para eliminar el volumen denominado MyData, primero detenemos y eliminamos el container que lo utiliza con my-test-volume:

sudo docker stop my-volume-test
sudo docker rm my-volume-test

El data-volume puede ser borrado con el siguiente comando:

sudo docker volume rm data-volume

Links

🐳
https://docs.docker.com/engine/reference/commandline/compose/
https://docs.docker.com/compose/reference/
https://docs.docker.com/storage/volumes/
https://colaboratorio.net/davidochobits/sysadmin/2017/docker-una-guia-no-convencional/
https://keepcoding.io/blog/que-es-docker-compose/
https://www.ionos.es/digitalguide/servidores/know-how/docker-container-volumes/
Tomado de
https://docs.docker.com/storage/volumes/