首先来一个实际可运行的docker samba的配置过程
1. 下载 dperson/samba 这个samba的容器镜像,如果下载不下来,请使用国内的加速,具体教程请百度搜索
复制
docker pull dperson/samba
2. 在主机端建立共享文件目录,我的共享数据盘是挂载在这里的/mnt/disk
,设置权限为 7777
,权限根据自己的需要,我这里用最高权限
3.运行下列命令,建立samba共享服务
复制
docker run -it --restart=always --name samba -p 139:139 -p 445:445 -v /mnt/disk:/home/shares/shareA -d dperson/samba -w "WORKGROUP" -u "userA;123456789" -s "samba;/home/shares/shareA;yes;no;no;userA;userA;userA"
各参数的详细介绍:
复制
docker run -it \
--name samba \ #为新的容器命一个名,方便启动、停止、删除等操作,毕竟一长串字符不好输入
-p 139:139 \ #将主机的139端口映射到samba_docker这个容器的139端口上
-p 445:445 \ #将主机的445端口映射到samba_docker这个容器的445端口上
-v /mnt/disk:/home/shares/shareA \ # 将主机上的共享目录向容器进行映射
-d dperson/samba \ #以dperson/samba这个dockers镜像为模板,建立容器
-w "WORKGROUP" \ #从这里开始是dperson/samba 的参数,上面是docker run 的参数。这里指定了工作组
-u "userA;123456789" \ #为samba服务设置账户和密码
-s "shareA;/home/shares/shareA;yes;no;no;userA;userA;userA"
最后一行以分号为间隔,分别是:
共享文件夹的名称;
共享在samba容器中的路径;
共享名称对所有工作组用户可见;
不是只读(也就是说可写);
不允许guest用户;
指定共享的所有权用户;
指定共享的超级用户;
指定具有写权限的用户;
至于在共享文件夹中所创建的文件、文件夹的权限,通过:
docker exec -it 4ae45cd4f491 /bin/bash
用vi 修改容器内的samba的配置文档 /etc/samba/smb.conf 即可。
问题1、如果不能成功从Windows 10 端连接到共享文件夹,可能是端口没有开放
为samba开放特定端口,请以root身份运行,或者命令前加 sudo
复制
firewall-cmd --zone=public --add-port=139/tcp --permanent
firewall-cmd --zone=public --add-port=445/tcp --permanent
firewall-cmd --zone=public --add-port=137/udp --permanent
firewall-cmd --zone=public --add-port=138/udp --permanent
firewall-cmd --reload
systemctl restart firewalld.service
问题2、出现如下图所示,因为安全策略阻止。
1、按window+R键然后输入gpedit.msc
2、找到“计算机配置-管理模板-网络-Lanman工作站”,在右侧内容区“启用不安全的来宾登录”状态是“未配置”。
3、双击“启用不安全的来宾登录”将其修改为“已启用”并单击确定按钮。
4、设置完成再次尝试访问可以正常访问。
成功连接!
以上为需要用户名和密码的共享,如果需要不用用户名和密码的,则可以将命令修改为:
复制
docker run -it --name samba_docker -p 139:139 -p 445:445 -v /home/shares/shareA:/home/shares/shareA -d dperson/samba -w "WORKGROUP" -u "userA;123456789" -s "shareA;/home/shares/shareA;yes;no;yes;"
好了,先到这里吧,应该够用了。不够用请参考官方文档。
配置了一个自动挂栽硬盘分区的配置文件
要mount /dev/sda1
到 /home/disks/HD160G
,配置文档的名称即为: home-disks-HD160G.mount
配置的内容:
复制
[Unit]
Description=mount a local disk
[Mount]
What=UUID=c31b231a-7fdf-49fb-9779-652933462c94 # 用的是/dev/sda1 的UUID,防止硬盘号改变
Where=/home/disks/HD160G
Type=ext4
Options=defaults
[Install]
WantedBy=local-fs.target
评论区