Docker + Samba
10. März 2019
Wie schon geschrieben, bin ich kein großer Fan von Konfigurationsdateien. Deshalb habe ich es mir auch einfach gemacht und habe Samba nicht auf dem Host, sondern über ein Docker-Image laufen. Dafür hat ein netter Mensch ein Docker-Image erstellt, mit dem dies sehr einfach möglich ist. Nachfolgend mein docker-compose.yml
version: "3"
services:
samba:
command: "-s \"stefan;/media/stefan;yes;no;no\" -s \"nas;/media/nas;yes;no;no\""
environment:
- "NMBD=True"
- "RECYCLE=False"
- "USER=MeinBrutalerBenutzername;MeinBrutalesPasswort"
hostname: fileserver
image: dperson/samba
network_mode: host
restart: always
ports:
- "137:137/udp"
- "138:138/udp"
- "139:139/tcp"
- "445:445/tcp"
volumes:
- "/media/stefan:/media/stefan"
- "/media/nas:/media/nas"
Die komplette Beschreibung zu den einzelnen Parametern ist unter https://github.com/dperson/samba.
Was macht das nun? Es werden zwei Lesen/Schreiben-Freigaben erstellt: stefan und nas. Voraussetzung ist natürlich, man kennt den brutal komplizierten Benutzernamen und noch kompliziertere Passwort. Und ja, meine Produktivdaten sind anders 😉.
docker-compose up -d
Damit rennt das Ding.
Hi Stefan,
danke für die tolle Übersicht.
Ich bin dabei Samba zu konfigurieren was auch soweit mit deiner Config geklappt hat. Einzig und alleine kann ich die Daten auf dem Share nicht bearbeiten oder ändern. Eigentlich ist es ja r/w aber ich kann sie nur lesen. Hast du eine Idee, welchen Fehler ich in meiner config hab?
samba:
command: „-s \“downloads;/downloads;yes;no;no\“ -s \“windows;/windows;yes;no;no\““
environment:
– „NMBD=True“
– „RECYCLE=False“
– „USER=krasserusername;superultrakrassespasswort“
hostname: theroenke
image: dperson/samba
network_mode: host
restart: always
ports:
– „137:137/udp“
– „138:138/udp“
– „139:139/tcp“
– „445:445/tcp“
volumes:
– „/home/soenke/docker/config/samba:/config“
– „/downloads:/downloads“
Hey Sönke,
gute Frage. Ich würde an deiner Stelle schauen, ob du innerhalb des Docker Containers die Schreibrechte hast. Falls nicht, würde ich prüfen, ob der Benutzer, mit dem der Docker Daemon läuft, die entsprechenden Rechte auf die Verzeichnisse hat.