以Docker方式使用samba

介绍

Samba 是 SMB/CIFS 网络协议的重新实现, 它作为 NFS(网络文件系统 Network File System) 的补充使得在 Linux 和 Windows 系统中进行文件共享、打印机共享更容易实现。

本篇文章主要介绍使用docker在linux上创建共享文件夹,在windows上访问。

使用过程

我使用的是dperson/samba镜像,详情参见这里

使用samba服务,要用到139445端口

最简单的使用

把本地blog目录映射到容器的share目录中,再通过samba映射到public目录上。
在本地windows上访问//<server_ip>/public就可以访问到linux的blog目录

执行:

1
2
3
sudo docker run -it -p 139:139 -p 445:445 \
-v /home/ff/hexo/blog:/share \
-d dperson/samba -s "public;/share"

说明:

  • 通过docker的-v命令,把宿主机的/home/ff/hexo/blog目录映射到日容器的/share目录。
  • 通过samba的-s命令,把/share目录以public名称共享出来。

增加权限控制的目录

上面的访问是匿名的,任何人都可以访问。如果要加上权限控制,怎么做呢。

需要使用-s参数,来控制权限,使用-u参数指定用户及密码

1
2
3
4
5
sudo docker run -it --rm -p 139:139 -p 445:445 \
-v /home/ff/hexo/blog:/share \
-d dperson/samba \
-u "ff;123123" \
-s "public;/share;yes;no;no;ff;ff;;xx"

-s命令的格式

1
-s "<name;/path>[;browse;readonly;guest;users;admins;writelist;comment]"
  • browse,readonly,guest 参数为yesorno
  • users,admins 为用户列表

参考