logicer16/sambaSamba 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联系。






manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务