Is there a way to setup an SMB share or similar via docker? I want to be able to easily turn it off and bind it to a specific folder, and I am comfortable with docker.
Thanks!
# https://github.com/ServerContainers/samba services: server: image: ghcr.io/servercontainers/samba:latest restart: unless-stopped network_mode: host environment: TZ: Europe/London MODEL: MacSamba SAMBA_GLOBAL_STANZA: "vfs objects = acl_xattr catia fruit streams_xattr; fruit:nfs_aces = no; inherit permissions = yes; fruit:model = MacSamba; fruit:posix_rename = yes; fruit:veto_appledouble = no; fruit:wipe_intentionally_left_blank_rfork = yes; fruit:delete_empty_adfiles = yes; fruit:metadata = stream" SAMBA_GLOBAL_CONFIG_load_SPACE_printers: no SAMBA_GLOBAL_CONFIG_printing: bsd SAMBA_GLOBAL_CONFIG_printcap_SPACE_name: /dev/null SAMBA_GLOBAL_CONFIG_disable_SPACE_spoolss: yes SAMBA_GLOBAL_CONFIG_min_SPACE_protocol: SMB2 SAMBA_GLOBAL_CONFIG_bind_SPACE_interfaces_SPACE_only: yes SAMBA_GLOBAL_CONFIG_interfaces: lo eth0 SAMBA_CONF_SERVER_STRING: Docker Host Samba #SAMBA_CONF_LOG_LEVEL: 3 ACCOUNT_shareuser: mypassword UID_shareuser: 1000 # avahi seems to introduce issues with the share # "The operation can't be completed because the original item for "xxx" can't be found." AVAHI_DISABLE: true WSDD2_DISABLE: true #NETBIOS_DISABLE: true SAMBA_VOLUME_CONFIG_myshare: "[myshare]; path=/shares/myshare; valid users = shareuser; guest ok = no; read only = no; browseable = yes" volumes: - /path/to/myshare:/shares/myshare
Just make sure you don’t have any local SMB server running on the host. And if you need multiple different shares, these all need to go into the same container or you need to define different ports if you use multiple containers.
Those are quite the environment variable names there.
Yes, it’s explained in the documentation.
E.g.:
SAMBA_GLOBAL_CONFIG_bind_SPACE_interfaces_SPACE_only: yes
maps to:
[global] bind interfaces only = yes
This way you don’t need to provide any extra configuration file.
Awesome thank you!
Fruit? Really?
That
fruit
argument is so that samba plays nicely with Apple’s SMB client implementation.
I use dperson/samba, which is both simple and comes with usage examples.
There’s dockurr/samba which is also pretty easy to setup, but doesn’t allow much deviation from the defaults.
The last commit was 5 years ago. There are very high chamces the container image is full of vulnerabilities. You might wanna rebuild it yourself.
Excellent point, thank you!