Docker部署Samba服务指南
1. 准备工作
1.1 创建共享目录
# 创建本地共享目录
mkdir -p /data/samba/share
chmod -R 777 /data/samba/share
# 创建配置目录
mkdir -p /data/samba/config
1.2 创建Samba配置文件
# 创建smb.conf配置文件
cat > /data/samba/config/smb.conf << EOF
[global]
workgroup = WORKGROUP
server string = Samba Server
server role = standalone server
log file = /var/log/samba/log.%m
max log size = 50
dns proxy = no
map to guest = Bad User
[share]
comment = Docker Samba Share
path = /share
browseable = yes
read only = no
guest ok = yes
create mask = 0777
directory mask = 0777
EOF
2. 部署Samba服务
2.1 使用Docker命令部署
# 运行Samba容器
docker run -d \
--name samba \
--restart unless-stopped \
-p 139:139 \
-p 445:445 \
-v /data/samba/share:/share \
-v /data/samba/config/smb.conf:/etc/samba/smb.conf \
dperson/samba \
-u "user1;password1" \
-s "share;/share;yes;no;no;all;user1"
2.2 使用Docker Compose部署
# docker-compose.yml
version: '3'
services:
samba:
image: dperson/samba
container_name: samba
restart: unless-stopped
ports:
- "139:139"
- "445:445"
volumes:
- /data/samba/share:/share
- /data/samba/config/smb.conf:/etc/samba/smb.conf
environment:
- TZ=Asia/Shanghai
command: '-u "user1;password1" -s "share;/share;yes;no;no;all;user1"'
3. 用户和权限管理
3.1 添加Samba用户
# 进入容器
docker exec -it samba bash
# 添加用户
adduser username
smbpasswd -a username
# 设置密码
smbpasswd username
3.2 配置共享权限
# 在smb.conf中添加新的共享
[private]
comment = Private Share
path = /share/private
browseable = yes
read only = no
guest ok = no
valid users = username
create mask = 0700
directory mask = 0700
4. 访问共享目录
4.1 Windows访问
1. 打开文件资源管理器
2. 在地址栏输入:\\服务器IP
3. 输入用户名和密码
4.2 Linux访问
# 安装smbclient
sudo apt-get install smbclient
# 列出共享
smbclient -L //服务器IP -U username
# 挂载共享
sudo mount -t cifs //服务器IP/share /mnt/samba \
-o username=user1,password=password1
4.3 macOS访问
# Finder中使用
1. 按下 Command+K
2. 输入:smb://服务器IP
3. 输入用户名和密码
5. 安全配置
5.1 网络安全
# 在smb.conf的[global]部分添加
hosts allow = 192.168.1. 127.
hosts deny = all
5.2 加密设置
# 在smb.conf的[global]部分添加
server signing = mandatory
smb encrypt = required
6. 监控和维护
6.1 查看日志
# 查看Samba日志
docker exec samba tail -f /var/log/samba/log.smbd
# 查看容器日志
docker logs -f samba
6.2 性能优化
# 在smb.conf的[global]部分添加
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
read raw = yes
write raw = yes
max xmit = 65535
dead time = 15
getwd cache = yes
7. 常见问题处理
7.1 连接问题
# 检查端口是否开放
netstat -an | grep -E '139|445'
# 检查防火墙设置
sudo ufw status
sudo ufw allow 139/tcp
sudo ufw allow 445/tcp
7.2 权限问题
# 检查目录权限
ls -la /data/samba/share
# 修复权限
chmod -R 777 /data/samba/share
chown -R nobody:nogroup /data/samba/share
8. 备份和恢复
8.1 配置备份
# 备份配置文件
cp /data/samba/config/smb.conf /data/samba/config/smb.conf.bak
# 备份共享数据
tar -czf samba_share_backup.tar.gz /data/samba/share
8.2 数据恢复
# 恢复配置文件
cp /data/samba/config/smb.conf.bak /data/samba/config/smb.conf
# 恢复共享数据
tar -xzf samba_share_backup.tar.gz -C /
9. 一条命令启动samba服务
docker run -it --name samba -p 139:139 -p 445:445 -v /home/share:/mount -d dockerproxy.cn/dperson/samba -u "user;123456" -s "share;/mount/;yes;no;no;all;user;user"