Docker Samba文件共享踩坑记录
ubuntu18.04 默认的 samba 版本号为 4.7,这个版本不支持 timemachine,于是准备在 docker 上搭建,虽然目前还没开起 timemachine 的功能,但是后续有空也许会弄上。
用的人最多的镜像是dperson/samba
,然而官方的例子太少了,只给了常用情况,但我还有一些需求没有满足, 比如使用单独文件存放密码什么的,于是踩了一波坑。
下面这个是我的完整的 docker 命令
|
|
奇怪的"-p, -v"
我一开始是在官方的例子上修改,官方的例子是这样的:
|
|
我想要把自己的目录映射到容器内,于是就粗暴地加上了两行
|
|
结果提示-v
命令没找到,当时我还以为 docker 更新去掉了-v
挂载镜像,仔细看了一波后才发现原来在dperson/samba -p
之后的内容全部是私有命令,根本就不是 docker 的命令,(命令的格式写的和 docker 一样真的很容易误解啊,后来我在容器内翻了一下,发现这些报错来自一个作者写的脚本samba.sh
)。
密码相关
官方例子里面的密码是放在命令里面的,就像这样-u "example1;badpass"
,但是这样总让人觉得不安全,查找文档关于密码是这样解释的
|
|
没太看懂。 后来在一个issue里面找到了用法
先生成一个 smbpasswd,默认目录在/etc/samba/smbpasswd
,当然也可以手动把它放到别的地方
|
|
然后把它挂载到镜像里面去
|
|
指定密码文件 smbpassword
|
|
权限相关
这个地方官方文档讲的很清楚,我的配置是下面两行这样
|
|
顺便把文档里面的解释复制过来
1 2 3 4 5 6 7 8 9 10 11 12 13 14
-s "<name;>[;browse;readonly;guest;users;admins;writelist;comment]" Configure a share required arg: "<name>;</name></name;></path>" <name> is how it's called for clients <path> path to share NOTE: for the default values, just leave blank [browsable] default:'yes' or 'no' [readonly] default:'yes' or 'no' [guest] allowed default:'yes' or 'no' NOTE: for user lists below, usernames are separated by ',' [users] allowed default:'all' or list of allowed users [admins] allowed default:'none' or list of admin users [writelist] list of users that can write to a RO share [comment] description of share
端口
官方例子是这样-p 139:139 -p 445:445
指定端口的,但是我后来发现 samba 还占用了 137,138 端口,
没想太多就直接用了 host 模式--net=host
查看 samba 版本
进入容器之后发现找不到 samba 可执行文件的位置 最后通过包管理器看到了 samba 版本
|
|