Mein Blog

Docker Container + CIFS (Samba / Windows) Share

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

Die mobile Version verlassen