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

Schreibe einen Kommentar

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