Samba Docker容器
dperson/samba的直接替代方案,可选支持imker25/samba_exporter
自1992年以来,Samba为所有使用SMB/CIFS协议的客户端(如各种版本的DOS和Windows、OS/2、Linux等)提供安全、稳定且快速的文件和打印服务。
该镜像提供两个变体:
logicer16/samba:latest:dperson/samba的修改版本,增加了对自定义配置的支持。logicer16/samba:exporter:与logicer16/samba:latest相同,额外运行imker25/samba_exporter,端口为9922。[!WARNING]
目前,logicer16/samba:exporter版本被认为不稳定。不保证在合理时间内解决问题。欢迎建议和PR。
默认情况下无共享配置,可添加额外共享。
基本运行:
sudo docker run -it -p 139:139 -p 445:445 -d logicer16/samba -p
或设置本地存储:
sudo docker run -it --name samba -p 139:139 -p 445:445 \ -v /path/to/directory:/mount \ -d logicer16/samba -p
或运行带exporter的版本:
sudo docker run -it -p 139:139 -p 445:445 -p 9922:9922 -d \ logicer16/samba:exporter -p
命令行帮助:
sudo docker run -it --rm logicer16/samba -h Usage: samba.sh [-opt] [command] 选项('[]'中的为可选,'<>’中的为必填): -h 显示帮助 -c "<from:to>" 设置文件/目录名的字符映射 必填参数:"<from:to>" 字符映射,用','分隔 -G "<section;parameter>" 为smb.conf提供通用节选项 必填参数:"<section>" - 例如:"share" 必填参数:"<parameter>" - 例如:"log level = 2" -g "<parameter>" 为smb.conf提供全局选项 必填参数:"<parameter>" - 例如:"log level = 2" -i "<path>" 导入smbpassword 必填参数:"<path>" - 容器内的完整文件路径 -n 启动'nmbd'守护进程以广播共享 -p 设置共享的所有权和权限 -r 禁用共享的回收站 -R "<group> <user> [...users]" 将用户添加到组 -S 禁用SMB2最低版本 -s "<name;/path>[;browse;readonly;guest;users;admins;writelist;comment]" 配置共享 必填参数:"<name>;</path>" <name> 是客户端看到的共享名 <path> 共享路径 注意:默认值留空即可 [browsable] 默认:'yes'或'no' [readonly] 默认:'yes'或'no' [guest] 允许访客默认:'yes'或'no' 注意:以下用户列表用','分隔 [users] 允许访问的用户默认:'all'或用户列表 [admins] 管理员用户默认:'none'或管理员列表 [writelist] 可写入只读共享的用户列表 [comment] 共享描述 -u "<username;password>[;ID;group;GID]" 添加用户 必填参数:"<username>;<passwd>" <username> 用户名 <password> 密码 [ID] 用户ID [group] 用户组 [GID] 组ID -w "<workgroup>" 配置Samba使用的工作组(域) 必填参数:"<workgroup>" <workgroup> 工作组名称 -W 允许访问宽符号链接 -I 在smb.conf末尾添加include选项 必填参数:"<include file path>" <include file path> 容器内的路径,例如绑定挂载的文件 'command'(如果提供且有效)将替代samba运行
CHARMAP - 同上,配置字符映射GENERIC - 同上,配置通用节选项(*见下方提示)GLOBAL - 同上,配置全局选项(*见下方提示)IMPORT - 同上,导入smbpassword文件NMBD - 同上,启用nmbdPERMISSIONS - 同上,设置所有共享的文件权限RECYCLE - 同上,禁用回收站SHARE - 同上,配置共享(*见下方提示)SMB - 同上,禁用SMB2最低版本TZ - 设置时区,例如EST5EDTUSER - 同上,添加用户(*见下方提示)WIDELINKS - 同上,允许访问宽符号链接WORKGROUP - 同上,设置工作组USERID - 设置Samba服务器默认用户(smbuser)的UIDGROUPID - 设置Samba服务器默认用户(smbuser)的GIDINCLUDE - 同上,添加smb.conf的includeSAMBA_SH_ARGS - 附加到docker命令提供的参数的额外参数SAMBA_EXPORTER_STATUSD_ARGS - samba_statusd的选项。仅在exporter标签可用。SAMBA_EXPORTER_ARGS - samba_exporter的选项。仅在exporter标签可用。SMB_CONF_PATH - 见smb.conf。默认值为/etc/docker-samba/smb.conf[!NOTE] 如果启用nmbd(通过
-n或NMBD环境变量),还需要暴露端口137和138:-p 137:137/udp -p 138:138/udp。
[!NOTE] 有报告称,
-n和NMBD仅在容器使用主机网络栈时才有效。
[!TIP] *可选支持以相同名称开头的额外变量,例如
SHARE也适用于SHARE2、SHARE3...SHAREx等。
smb.conf如果希望使用默认smb.conf以外的自定义配置文件,可通过SMB_CONF_PATH指定绑定挂载的自定义smb.conf路径。通过环境变量或CLI选项提供的任何额外配置将自动应用于提供的配置。
任何命令可在创建容器时通过docker run运行,或之后通过docker exec -it samba samba.sh运行(从docker 1.3版本开始)。
sudo docker run -it -e TZ=EST5EDT -p 139:139 -p 445:445 -d logicer16/samba -p
sudo docker run -it -p 139:139 -p 445:445 -v config/smb.conf:/etc/docker-samba/smb.conf -d logicer16/samba -p \ -u "example1;badpass" \ -u "example2;badpass" \ -s "public;/share" \ -s "users;/srv;no;no;no;example1,example2" \ -s "example1 private share;/example1;no;no;no;example1" \ -s "example2 private share;/example2;no;no;no;example2"
smb.confsudo docker run -it -p 139:139 -p 445:445 -d logicer16/samba -p \ -u "example1;badpass"
change_to_user_internal: chdir_current_service() failed!在容器选项末尾添加-p选项,或设置PERMISSIONS环境变量:
sudo docker run -it --name samba -p 139:139 -p 445:445 \ -v /path/to/directory:/mount \ -d logicer16/samba -p
如果无法更改文件权限,可将环境变量USERID和GROUPID设置为文件所有者的ID。
在docker run命令中添加-m 512m选项,或在docker_compose.yml中设置mem_limit::
sudo docker run -it --name samba -m 512m -p 139:139 -p 445:445 \ -v /path/to/directory:/mount \ -d logicer16/samba -p
smbclient命令行工具连接。默认情况下,samba仍尝试使用已弃用且有安全问题的SMB1。此容器默认使用SMB2,但由于未知原因,即使支持也默认禁用,因此运行命令时使用smbclient -m SMB3,然后添加其他选项。如果对该镜像有任何问题或疑问,请通过GitHub issue联系。

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429