Bei Docker sind Daten (Storage) im Container, oder auf dem Host. Alternative kann man einen Container als Datenspeicher definieren. Alle Lösungen sind suboptimal im Bezug auf Backups und Sicherheit.
Docker Volumes bieten aber noch mehr Möglichkeiten. Durch die verschiedenen Treiber kann man auch auf externe Ressourcen zugreifen.
Dabei kann man nativ u.a. über NFS auf Shares zugreifen oder über lokale Treiber z.B. auch auf Windowsfreigaben (via CIFS / Samba).
docker volume create \
--driver local \
--opt type=cifs \
--opt device=//uxxxxx.your-server.de/backup \
--opt o=addr=uxxxxx.your-server.de,username=uxxxxxxx,password=*****,file_mode=0777,dir_mode=0777 \
--name cif-volume
nun kann man `cif-volume` in den Container reichen und auf einen pfad mappen.
Mit Docker-Compose geht das natürlich auch:
web:
image: nginx
volumes:
- Share-templates:/etc/nginx/templates
ports:
- "8080:80"
environment:
- NGINX_HOST=foobar.com
- NGINX_PORT=80
volumes:
Share-templates:
driver: local
driver_opts:
type: cifs
o: addr=uxxxxx.your-server.de,username=uxxxxxxx,password=*****,file_mode=0777,dir_mode=0777 device: //uxxxxx.your-server.de/backup
device: //uxxxxx.your-server.de/backup
Mit so einem Storage können dann natürlich auch mehrere Container auf den gleichen Share zugreifen