
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
!https://github.com/adrianmusante/docker-samba/assets/38815440/f72b6c2a-637d-4a66-bbb9-7db4cbde3bb4
本镜像为Samba服务器的Docker化实现,基于https://github.com/dperson/samba%E8%BF%9B%E8%A1%8C%E6%9B%B4%E6%96%B0%E7%BB%B4%E6%8A%A4%E3%80%82Samba%E6%98%AF%E4%B8%80%E6%AC%BE%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6%EF%BC%8C%E8%87%AA1992%E5%B9%B4%E8%B5%B7%E6%8F%90%E4%BE%9B%E5%9F%BA%E4%BA%8ESMB/CIFS%E5%8D%8F%E8%AE%AE%E7%9A%84%E6%96%87%E4%BB%B6%E5%92%8C%E6%89%93%E5%8D%B0%E6%9C%8D%E5%8A%A1%EF%BC%8C%E6%94%AF%E6%8C%81DOS%E3%80%81Windows%E3%80%81OS/2%E3%80%81Linux%E7%AD%89%E6%89%80%E6%9C%89SMB/CIFS%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%8C%E5%AE%9E%E7%8E%B0%E8%B7%A8%E5%B9%B3%E5%8F%B0%E6%96%87%E4%BB%B6%E5%85%B1%E4%BA%AB%E3%80%82
推荐从Docker Hub拉取预构建镜像:
bashdocker pull adrianmusante/samba
4、4.21、latest(基于https://github.com/adrianmusante/docker-samba/blob/main/samba/Dockerfile%E6%9E%84%E5%BB%BA%EF%BC%89查看https://hub.docker.com/r/adrianmusante/samba/tags/%E8%8E%B7%E5%8F%96%E6%89%80%E6%9C%89%E5%8F%AF%E7%94%A8%E7%89%88%E6%9C%AC%E3%80%82
默认配置无共享目录,需通过参数或环境变量添加。
快速启动(无本地存储)
bashdocker run -it -p 139:139 -p 445:445 -d adrianmusante/samba -p
挂载本地存储启动
bashdocker run -it --name samba -p 139:139 -p 445:445 \ -v /本地目录路径:/容器挂载路径 \ -d adrianmusante/samba -p
启动容器时可通过命令行参数配置Samba服务。运行以下命令查看所有选项:
bashdocker run -it --rm adrianmusante/samba -h
选项说明
| 选项 | 描述 | 必需参数 | 示例 |
|---|---|---|---|
-h | 显示帮助信息 | 无 | -h |
-c "<from:to>" | 配置文件/目录名字符映射 | <from:to>(多个映射用逗号分隔) | -c "ä:a,ö:o" |
-G "<section;parameter>" | 添加smb.conf通用段配置 | <section>(段名)、<parameter>(配置项) | -G "share;log level = 2" |
-g "<parameter>" | 添加smb.conf全局配置 | <parameter>(配置项) | -g "workgroup = MYGROUP" |
-i "<path>" | 导入smbpassword文件 | <path>(容器内文件路径) | -i "/etc/samba/smbpasswd" |
-n | 启动nmbd守护进程(用于共享发现) | 无 | -n |
-p | 设置共享目录所有权和权限 | 无 | -p |
-r | 禁用共享回收站功能 | 无 | -r |
-S | 禁用SMB2最低版本要求 | 无 | -S |
-s "<name;/path>[;browse;readonly;guest;users;admins;writelist;comment]" | 配置共享目录 | <name>(共享名)、<path>(容器内路径);可选参数默认值:browse=yes, readonly=yes, guest=no, users=all, admins=none | -s "public;/share;yes;no;no;user1,user2;;user1;公共共享" |
-u "<username;password>[;ID;group;GID]" | 添加用户 | <username>、<password>;可选:ID(用户ID)、group(组名)、GID(组ID) | -u "user1;pass123;1001;users;100" |
-w "<workgroup>" | 配置工作组(域) | <workgroup>(工作组名) | -w "MYGROUP" |
-W | 允许访问跨文件系统符号链接 | 无 | -W |
-I "<path>" | 在smb.conf末尾添加include配置 | <path>(容器内配置文件路径) | -I "/etc/samba/extra.conf" |
通过环境变量配置容器,支持多实例(如SAMBA_SHARE、SAMBA_SHARE2)。
| 环境变量 | 描述 | 示例 |
|---|---|---|
PUID | 设置默认用户(smbuser)的UID | 1000 |
PGID | 设置默认用户(smbuser)的GID | 1000 |
TZ | 设置时区 | Asia/Shanghai |
SAMBA_DEBUG | 启用详细日志模式 | true(默认:false) |
SAMBA_LOG_LEVEL | 设置日志级别(0-10,越高越详细) | 3(默认:0;SAMBA_DEBUG=true时默认3) |
SAMBA_CHARMAP | 字符映射配置(同-c) | "ä:a,ö:o" |
SAMBA_GENERIC | 通用段配置(同-G) | "share;log level = 2" |
SAMBA_GLOBAL | 全局配置(同-g) | "workgroup = MYGROUP" |
SAMBA_IMPORT | 导入smbpassword文件(同-i) | "/etc/samba/smbpasswd" |
SAMBA_NMBD | 启用nmbd守护进程(同-n) | true |
SAMBA_PERMISSIONS | 设置共享权限(同-p) | true |
SAMBA_RECYCLE | 禁用回收站(同-r) | true |
SAMBA_SHARE | 配置共享目录(同-s) | "public;/share;yes;no;no" |
SAMBA_SMB | 禁用SMB2最低版本(同-S) | true |
SAMBA_USER | 添加用户(同-u) | "user1;pass123;1001" |
SAMBA_WIDELINKS | 允许跨文件系统符号链接(同-W) | true |
SAMBA_WORKGROUP | 工作组配置(同-w) | "MYGROUP" |
SAMBA_INCLUDE | 添加include配置(同-I) | "/etc/samba/extra.conf" |
注意:启用nmbd(
-n或SAMBA_NMBD=true)时,需额外映射UDP端口:-p 137:137/udp -p 138:138/udp。部分环境下nmbd仅在使用主机网络模式时正常工作。
创建用户alice和bob,配置公共共享和私有共享:
bashdocker run -it --name samba -p 139:139 -p 445:445 \ -v /data/public:/share/public \ -v /data/alice:/share/alice \ -v /data/bob:/share/bob \ -d adrianmusante/samba -p \ -u "alice;AlicePass123" \ -u "bob;BobPass456" \ -s "public;/share/public;yes;no;yes;all;;alice,bob;公共文件共享" \ -s "alice_private;/share/alice;no;no;no;alice;;alice;Alice私有目录" \ -s "bob_private;/share/bob;no;no;no;bob;;bob;Bob私有目录" \ -w "MYHOME"
创建docker-compose.yml:
yamlversion: '3' services: samba: image: adrianmusante/samba container_name: samba restart: always ports: - "139:139" - "445:445" - "137:137/udp" - "138:138/udp" volumes: - ./public:/share/public - ./team:/share/team environment: - TZ=Asia/Shanghai - PUID=1000 - PGID=1000 - SAMBA_WORKGROUP=MYTEAM - SAMBA_NMBD=true - SAMBA_PERMISSIONS=true - SAMBA_USER="john;JohnPass789;1001;team;100" - SAMBA_USER2="jane;JanePass321;1002;team;100" - SAMBA_SHARE="public;/share/public;yes;no;yes;all;;john,jane;公共共享区" - SAMBA_SHARE2="team;/share/team;yes;no;no;john,jane;;john,jane;团队协作区" command: -p
启动服务:
bashdocker-compose up -d
1. 客户端提示“访问被拒绝”或日志显示change_to_user_internal: chdir_current_service() failed!
解决:添加-p参数或设置SAMBA_PERMISSIONS=true以自动配置权限:
bashdocker run ... -d adrianmusante/samba -p
若无法修改文件权限,可设置PUID和PGID匹配宿主机文件所有者ID:
bashdocker run ... -e PUID=1000 -e PGID=1000 ...
2. Samba进程内存占用过高
解决:限制容器内存使用:
bashdocker run ... -m 512m ... # 限制最大内存为512MB
或在docker-compose中添加:
yamlservices: samba: ... deploy: resources: limits: memory: 512M
3. 使用smbclient连接失败
解决:默认禁用SMB1,需指定SMB3协议:
bashsmbclient -m SMB3 //server_ip/share_name -U username
如遇问题或有疑问,请通过https://github.com/adrianmusante/docker-samba/issues%E6%8F%90%E4%BA%A4%E5%8F%8D%E9%A6%88%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 adrianmusante/samba 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: