Parte 5 – Docker Volumenes

Para poder almacenar los datos de nuestro container en repositorios externos, podremos utilizar diferentes metodos y tipos de volumen, vamos a ver un resumen de las posibilidades que tenemos.

Manage data in Docker | Docker Documentation

Montar NFS container

Para arrancar una máquina montando un volumen de NFS, usaremos el comando mount con las configuraciones necesarias.

  • type, introducimos “volume” (volumes,Bind o tmpfs)
  • source, nombre para el volumen
  • target, ruta montaje en el container
  • volume-driver, local
  • volume-opt
    • type, nfs (cifs)
    • device, path nfs
    • addr, IP o FQDN del host nfs
    • rw, lectura/escritura
    • nfsvers, version de nfs
docker run -t -i --rm --mount 'type=volume,source=NFS-Demo,target=/app,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/volume1/Dockers/Demo,"volume-opt=o=addr=192.168.60.10,rw,nfsvers=4"' ubuntu bash

CREATE

Para dejar creado un volumen y disponer de el usaremos el comando create.

docker volume create --driver local \
    --opt type=nfs \
    --opt o=addr=192.168.60.10,rw \
    --opt device=:/volume1/Dockers/Demo \
    NFS-Demo

Para montar el volumen en el container.

docker run -ti --rm -v NFS-Demo:/app  ubuntu bash

LS

Para listar nuestro volumenes.

docker volume ls

INSPECT

Para ver la configuración del volumen usarmos la opción inspect.

docker volume inspect NFS-NAS
[
    {
        "CreatedAt": "2022-02-25T10:13:10Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/NFS-NAS/_data",
        "Name": "NFS-NAS",
        "Options": {
            "device": ":/volume1/Dockers",
            "o": "nfsvers=4,addr=192.168.60.10,rw",
            "type": "nfs"
        },
        "Scope": "local"
    }
]

RM

Para eliminar el volumen

docker volume rm NFS-NAS

Configurar Compose YAML

services:
  <Nombre Stack>:
    container_name: <Nombre-Container>
    image: <Imagen>
    ports:
      - "80:80/tcp"
      - <Mas puertos>
    volumes:
      - 'NFS-NAS:/nfs'
volumes:
  NFS-NAS:
      driver: local
      driver_opts:
        type: nfs
        o: nfsvers=4,addr=IP o FQDN,rw
        device: ":/volumen/folder"

En el siguiente ejemplo configuro el volumen de dos maneras distintas.

services:
  pihole:
    container_name: pihole-vol
    image: pihole/pihole:latest
    ports:
      - "8080:80/tcp"
    environment:
      TZ: 'Europe/Madrid'
      WEBPASSWORD: 'MordorWorld'
    # Volumes store your data between container upgrades
    volumes:
            - type: volume
              source: NFS-NAS-etcpi
              target: /etc/pihole/
              volume:
                      nocopy: true
            - 'NFS-NAS-etcdns:/etc/dnsmasq.d/'

    cap_add:
      - NET_ADMIN
    restart: unless-stopped
volumes:
  NFS-NAS-etcpi:
      driver: local
      driver_opts:
        type: nfs
        o: nfsvers=4,addr=192.168.60.10,rw
        device: ":/volume1/Dockers/Pi-Hole/etcpi"
  NFS-NAS-etcdns:
      driver: local
      driver_opts:
        type: nfs
        o: nfsvers=4,addr=192.168.60.10,rw
        device: ":/volume1/Dockers/Pi-Hole/etcdns"

Montaje con CIFS

Os dejo también como montar una unidad Cifs. Use volumes | Docker Documentation

docker volume create \
	--driver local \
	--opt type=cifs \
	--opt device=//192.168.60.10/Logs \
	--opt o=addr=192.168.60.10,username=admin,password=******,file_mode=0777,dir_mode=0777 \
	--name cif-volume

Tambien existen plugins para conectar a otros storage AWS, Azure,… Use Docker Engine plugins | Docker Documentation

Mordor Blog – Parte 1 – Instalar Dockers en Raspberry-Pi

Mordor Blog – Parte 2 – Instalar Docker Compose

Mordor Blog – Parte 3 – Desplegar Pi-Hole con DoH y Docker Compose

Mordor Blog – Parte 4 – Depliegue Docker Swarm

Mordor Blog – Parte 6 – Docker Networking

Dejar un comentario

Tu dirección de correo electrónico no será publicada.