天天看點

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

首先來一個實際可運作的docker samba的配置過程

1. 下載下傳 dperson/samba 這個samba的容器鏡像

docker pull dperson/samba  
           
用docker搭建samba伺服器-2019-03-31

如果下載下傳不下來,請使用國内的加速,具體教程請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

各參數的詳細介紹: 

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

1、按window+R鍵然後輸入gpedit.msc 

2、找到“計算機配置-管理模闆-網絡-Lanman工作站”,在右側内容區“啟用不安全的來賓登入”狀态是“未配置”。

3、輕按兩下“啟用不安全的來賓登入”将其修改為“已啟用”并單擊确定按鈕。

4、設定完成再次嘗試通路可以正常通路。

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

成功連接配接!

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

以上為需要使用者名和密碼的共享,如果需要不用使用者名和密碼的,則可以将指令修改為:

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  即可 !