Persistente Docker-Volumes mit NFS und CIFS

Ein aus meiner Erfahrung “running Problem” mit dem dauerhaften Betrieb von Dockeranwendungen sind persistente Docker-Volumes: Die Frage, wie man Volumes dauerhaft außerhalb des Docker-Hosts abgelegt bekommt, damit sie z.B. ge-backup-t werden können oder einen Docker-Host Neubau überstehen. Die von mir seit langem praktizierte Methode ist, dass der Docker-Host vom File-Server die Volumes mountet und diese Mounts dann in den Containern verwendet werden (-v /mnt/dockervolumes/mycontainer:/var/data/...). Dies hat u.a. den Nachteil, dass man zum Erzeugen des Containers (im Compose-File) Infos über die Infrastruktur (den Mount-Pfad) verwenden muss. Außerdem muss beim Erzeugen des Docker-Hosts der Mount angelegt werden. Das mache ich zwar inzwischen automatisch per Ansible, ist aber nicht Standard – also meines Wissens z.B. nicht per docker-machine create machbar.

Daher bin ich auf der Suche nach einer Lösung, die sozusagen “Docker-konform” und außerhalb des Compose-Files stattfindet. Eine Möglichkeit, auf die ich nun gestoßen bin, ist das Erzeugen von Volumes direkt auf NFS- oder CIFS-/SMB-Laufwerken. Und das habe ich so hinbekommen:

Persistente Docker-Volumes mit NFS:

docker volume create \
    --driver local \
    --opt type=nfs \
    --opt o=addr=192.168.41.28,rw \
    --opt device=:/export/dockervolumes/xxtestvolumepath \
    xxtestvolume


docker run -v xxtestvolume:/world busybox touch /world/xx1
docker run -v xxtestvolume:/world busybox ls /world

Persistente Docker-Volumes mit CIFS/SMB:

docker volume create \
    --driver local \
    --opt type=cifs \
    --opt o=addr=192.168.41.28,rw \
    --opt device=//192.168.41.28/xxtestvol \
    --opt o=uid=0,username=smbusername,password=smbpw,nounix,file_mode=0770,dir_mode=0770 \
    xxtestvolume2


docker run -v xxtestvolume2:/world busybox touch /world/xx1
docker run -v xxtestvolume2:/world busybox ls /world

Ob das nun die von mir bevorzuge und dauerhaft verwendete Methode wird, weiß ich noch nicht…

Links

https://forums.docker.com/t/docker-compose-how-to-use-nfs-volumes/23255/2
https://docs.docker.com/engine/reference/commandline/volume_create/#driver-specific-options
https://docs.docker.com/compose/compose-file/compose-file-v2/#driver

One thought on “Persistente Docker-Volumes mit NFS und CIFS

  1. Im Dockerfile ab v2 geht das in etwa so:

    ...
    volumes:
      medien:
        driver_opts:
          type: cifs 
          o: addr=192.168.99.99,ro,uid=1000,username=uuu,password=ppp,nounix,file_mode=0770,dir_mode=0770
          device: //192.168.99.99/medien
    ...
    
    services:
      mediaserver:
        volumes:
          - medien:/data/medien
        ...
    

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.