docker搭建samba共享目录

需求:因项目需要共享文件夹来传输数据。正好接触docker,所以想用docker来搭建samba共享文件

系统:Centos7.6

1、安装docker容器

1.1 首先下载docker rpm包

container-selinux-2.107-1.el7_6.noarch.rpm
containerd.io-1.2.6-3.3.el7.x86_64.rpm
docker-ce-cli-19.03.8-3.el7.x86_64.rpm
docker-ce-19.03.8-3.el7.x86_64.rpm

1.2 安装docker

将上面四个rpm包放入服务器中,分别执行下面命令
sudo rpm -ivh container-selinux-2.107-1.el7_6.noarch.rpm   
sudo rpm -ivh containerd.io-1.2.6-3.3.el7.x86_64.rpm
sudo rpm -ivh docker-ce-cli-19.03.8-3.el7.x86_64.rpm
sudo rpm -ivh docker-ce-19.03.8-3.el7.x86_64.rpm
// 设置开机自启
sudo systemctl enable docker
//启动docker容器
sudo systemctl start docker

1.3 验证是否安装成功

sudo systemctl status docker
//  应返回running状态:
 docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-06-28 12:43:59 CST; 18s ago
     Docs: https://docs.docker.com
 Main PID: 30655 (dockerd)
    Tasks: 29
   Memory: 51.6M
   CGroup: /system.slice/docker.service
           └─30655 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/con...
或者
sudo docker ps
应当返回一个空的列表
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

2、下载samba镜像

2.1 首先在服务器中查找docker版的samba

// 查找使用最多的samba容器镜像
sudo docker search samba

在这里插入图片描述

2.2 pull samba 容器镜像

sudo docker pull dperson/samba 

3、在本地创建个目录,以便于容器挂载

mkdir /hdddata/shared            ///home目录下创建shared目录
chmod 777 /hdddata/shared		 //修改shared权限,不修改的话连接进去会提示没有权限写入数据

4、启动镜像

docker run -it --name samba -p 139:139 -p 445:445 -v /hdddata/shared:/mount -d dperson/samba -u "centos;1qaz@WSX" -s "shared;/mount;yes;no;no;all;none"
"shared;/mount;yes;no;no;all;none" 参数说明:
分别是:
shared:共享文件夹的名称(shared);
/mount:共享在samba容器中的路径(/mount);
yes:共享名称对所有工作组用户可见;
no:不是只读(也就是说可写);
no:不允许guest用户;
all:指定共享的所有权用户;
none:指定共享的超级用户;
指定具有写权限的用户;

5、启动镜像进入容器内部,添加smb用户名和密码

进入容器内部
sudo docker exec -it 容器ID /bin/bash
添加smb用户名和密码
运行sudo smbpasswd -a centos命令添加用户,并设置密码为1qaz@WSX 

6、验证挂载

sudo mount -t cifs -o rw,vers=2.0,dir_mode=0777,file_mode=0666,username=centos,password=1qaz@WSX,iocharset=utf8 //114.325.5.23/shared/ /hdddata/sharedEmpty																	
参数说明:
centos:用户名			
1qaz@WSX:密码				
114.325.5.23:改成部署samba容器的ip
shared: 不变,需要挂载的名称,即步骤4的共享文件夹的名称,并不是路径(shared);

7、Github主要参数说明:

以下是Github参数介绍:
sudo docker run -it --rm dperson/samba -h
Usage: samba.sh [-opt] [command]
Options (fields in '[]' are optional, '<>' are required):
    -h          This help
    -c "<from:to>" setup character mapping for file/directory names
                required arg: "<from:to>" character mappings separated by ','
    -G "<section;parameter>" Provide generic section option for smb.conf
                required arg: "<section>" - IE: "share"
                required arg: "<parameter>" - IE: "log level = 2"
    -g "<parameter>" Provide global option for smb.conf
                required arg: "<parameter>" - IE: "log level = 2"
    -i "<path>" Import smbpassword
                required arg: "<path>" - full file path in container
    -n          Start the 'nmbd' daemon to advertise the shares
    -p          Set ownership and permissions on the shares
    -r          Disable recycle bin for shares
    -S          Disable SMB2 minimum version
    -s "<name;/path>[;browse;readonly;guest;users;admins;writelist;comment]"
                Configure a share
                required arg: "<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
    -u "<username;password>[;ID;group;GID]"       Add a user
                required arg: "<username>;<passwd>"
                <username> for user
                <password> for user
                [ID] for user
                [group] for user
                [GID] for group
    -w "<workgroup>"       Configure the workgroup (domain) samba should use
                required arg: "<workgroup>"
                <workgroup> for samba
    -W          Allow access wide symbolic links
    -I          Add an include option at the end of the smb.conf
                required arg: "<include file path>"
                <include file path> in the container, e.g. a bind mount

例子:Start an instance creating users and shares:
sudo docker run -it -p 139:139 -p 445:445 -d dperson/samba -p \
            -u "example1;badpass" \
            -u "example2;badpass" \
            -s "public;/share" \
            -s "users;/srv;no;no;no;example1,example2" \
            -s "example1 private share;/example1;no;no;no;example1" \
            -s "example2 private share;/example2;no;no;no;example2"

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值