用docker搭建samba服务器-2019-03-31

首先来一个实际可运行的docker samba的配置过程

1. 下载 dperson/samba 这个samba的容器镜像

 docker pull dperson/samba  

如果下载不下来,请使用国内的加速,具体教程请google搜索

 2. 在主机端建立共享文件目录,我这里是/home/shares/shareA/,设置权限为 0775

3.运行下列命令,建立samba共享服务

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;no;userA;userA;userA"

用docker搭建samba服务器-2019-03-31_第1张图片

各参数的详细介绍: 

docker run -it \
--name samba_docker \  #为新的容器命一个名,方便启动、停止、删除等操作,毕竟一长串字符不好输入
-p 139:139 \           #将主机的139端口映射到samba_docker这个容器的139端口上
-p 445:445 \           #将主机的445端口映射到samba_docker这个容器的445端口上
-v /home/shares/shareA:/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、出现如下图所示,因为安全策略阻止。

用docker搭建samba服务器-2019-03-31_第2张图片

1、按window+R键然后输入gpedit.msc 

2、找到“计算机配置-管理模板-网络-Lanman工作站”,在右侧内容区“启用不安全的来宾登录”状态是“未配置”。

3、双击“启用不安全的来宾登录”将其修改为“已启用”并单击确定按钮。

4、设置完成再次尝试访问可以正常访问。

 用docker搭建samba服务器-2019-03-31_第3张图片

成功连接!

用docker搭建samba服务器-2019-03-31_第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;"

 

好了,先到这里吧,应该够用了。不够用请参考官方文档。

 

2019-04-0412:25 更新

1.增加一个自启动参数,让该samba服务实现开机自启动功能:

docker container update --restart=always  samba_docker (容器名称) 

这一句命令是用来为运行中的容器增加参数的。

2. 配置了一个自动挂栽硬盘分区的配置文件

要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

该文档放置在 :/etc/systemd/system 目录下即可

然后运行: #  systemctl enable home-disks-HD160G.mount  即可 !

 

你可能感兴趣的:(CoreOS容器Linux相关)