docker如何搭建samba共享目錄
更新時間:2025年03月08日 14:18:26 作者:北極的企鵝88
文章介紹了如何使用Docker搭建一個Samba共享文件系統(tǒng),首先安裝了Docker容器,然后下載并拉取了Samba鏡像,在本地創(chuàng)建了一個目錄用于掛載,啟動容器并添加了SMB用戶名和密碼,驗證掛載成功,最后總結(jié)了主要參數(shù)
需求
- 因項目需要共享文件夾來傳輸數(shù)據(jù)。
- 正好接觸docker,所以想用docker來搭建samba共享文件
- 系統(tǒng):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包放入服務(wù)器中,分別執(zhí)行下面命令 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 // 設(shè)置開機自啟 sudo systemctl enable docker //啟動docker容器 sudo systemctl start docker
1.3 驗證是否安裝成功
sudo systemctl status docker
// 應(yīng)返回running狀態(tài):
● 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
應(yīng)當返回一個空的列表
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2、下載samba鏡像
2.1 首先在服務(wù)器中查找docker版的samba
// 查找使用最多的samba容器鏡像 sudo docker search samba

2.2 pull samba 容器鏡像
sudo docker pull dperson/samba
3、在本地創(chuàng)建個目錄,以便于容器掛載
mkdir /hdddata/shared //在/home目錄下創(chuàng)建shared目錄 chmod 777 /hdddata/shared //修改shared權(quán)限,不修改的話連接進去會提示沒有權(quán)限寫入數(shù)據(jù)
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" 參數(shù)說明:
分別是:
shared:共享文件夾的名稱(shared);/mount:共享在samba容器中的路徑(/mount);yes:共享名稱對所有工作組用戶可見;no:不是只讀(也就是說可寫);no:不允許guest用戶;all:指定共享的所有權(quán)用戶;none:指定共享的超級用戶;- 指定具有寫權(quán)限的用戶;
5、啟動鏡像進入容器內(nèi)部,添加smb用戶名和密碼
進入容器內(nèi)部 sudo docker exec -it 容器ID /bin/bash 添加smb用戶名和密碼 運行sudo smbpasswd -a centos命令添加用戶,并設(shè)置密碼為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
參數(shù)說明:
centos:用戶名1qaz@WSX:密碼114.325.5.23:改成部署samba容器的ipshared: 不變,需要掛載的名稱,即步驟4的共享文件夾的名稱,并不是路徑(shared);
7、Github主要參數(shù)說明
以下是Github參數(shù)介紹:
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"
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker實現(xiàn)導出、導入和數(shù)據(jù)搬遷
本篇文章主要介紹了docker實現(xiàn)導出、導入和數(shù)據(jù)搬遷,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
Docker+K8S 集群環(huán)境搭建及分布式應(yīng)用部署
這篇文章主要介紹了Docker+K8S 集群環(huán)境搭建及分布式應(yīng)用部署,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
Docker安裝MongoDB并使用Navicat連接的操作方法
MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫,MongoDB最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,這篇文章主要介紹了Docker安裝MongoDB并使用Navicat連接,需要的朋友可以參考下2022-10-10
查看Docker停止容器占用的內(nèi)存的實現(xiàn)方法小結(jié)
要查看 Docker 停止的容器占用的內(nèi)存,可以通過以下幾種方法來實現(xiàn),Docker 提供了一些命令和工具來幫助你管理和監(jiān)控容器的資源使用情況,需要的朋友可以參考下2024-11-11
docker獲取Let''s Encrypt永久免費SSL證書的方法
在本篇文章里小編給大家分享了一篇關(guān)于docker獲取Let's Encrypt永久免費SSL證書的方法,以后需要的朋友們可以參考下。2021-01-01

