1. 程式人生 > 其它 >小刻也能看懂的Unraid系統使用手冊:Docker篇

小刻也能看懂的Unraid系統使用手冊:Docker篇

通過建立共享,並在其他計算機上訪問共享的方式,已經可以實現 NAS 的檔案儲存和訪問功能了。但這僅僅是基礎功能,通過 Docker 提供的各種應用和服務,我們可以把這臺 Unraid NAS 伺服器變成家庭影音中心、私有網路雲盤、24小時線上的下載機,還可以在伺服器上搭建網站、部落格等。

小刻也能看懂的Unraid系統使用手冊

Docker篇

Docker可以做什麼?

通過建立共享,並在其他計算機上訪問共享的方式,已經可以實現 NAS 的檔案儲存和訪問功能了。但這僅僅是基礎功能,通過 Docker 提供的各種應用和服務,我們可以把這臺 Unraid NAS 伺服器變成家庭影音中心、私有網路雲盤、24小時線上的下載機,還可以在伺服器上搭建網站、部落格等。

Docker的基礎知識

Docker 技術的思想來源於集裝箱,正如它的圖示所展示的那樣,通過 Docker 技術,開發者把應用程式和所需的執行環境放到一個“集裝箱”裡,這些“集裝箱”之間互不影響,應用程式在各自的“集裝箱”裡執行。通過這個技術,實現了應用程式之間互相隔離,避免了因為執行環境混亂導致的相容問題和衝突。這讓應用和服務的部署變得非常輕鬆。你甚至可以通過 Docker 在同一個伺服器上安裝多個相同的應用。

映象 Image

開發者把應用程式和所需的執行環境打包成為一個映象,然後釋出出去,供使用者下載。映象是用來建立容器的。

容器 Container

使用者下載到應用的映象後,使用 Docker 執行,將會建立一個容器,應用在該容器裡執行。因為容器內外是隔離的,所以如果要控制容器內的應用程式的話,則需要對映一個由主機到容器的埠。容器內的應用想要訪問容器外的檔案,則需要設定一個磁碟路徑的對映。

倉庫 Repository

倉庫是開發者釋出映象的地方,使用者可以在倉庫搜尋映象,檢視映象配置引數。

Docker 官方的映象倉庫地址:https://hub.docker.com/

檢視Docker設定

Unraid 系統已經集成了 Docker 環境,通過 SETTINGS >> Docker

進入 Docker 設定介面。在這裡可以檢視當前執行的 Docker 版本,啟用或禁用 Docker。還有兩個路徑,是需要注意的:

Docker vDisk location

這是 Unraid 為 docker 執行建立的虛擬磁碟,安裝的所有 Docker 都在該虛擬磁碟上,它預設使用 /mnt/user/system/docker/docker.img 路徑,存放在 system 共享所在的磁碟上。

Default appdata storage location

這是容器內的應用資料儲存的位置。在使用者安裝 Docker 應用的時候,需要將 Docker 應用的配置檔案路徑對映到這裡,否則 Docker 重啟時會恢復預設設定。

安裝Docker應用

Unraid 提供了兩種安裝 Docker 應用的方式:一種是通過 Unraid 社群應用商店(Community Applications)安裝,另一種是通過 Docker 容器安裝。通過社群商店安裝較為簡單,但為了演示 Docker 引數配置的過程,也為了後續安裝一些社群商店沒有的 Docker,先使用 Docker 容器進行安裝。

1. 搜尋 Docker 映象

以 FileBrowser 的安裝為例,FileBrowser 是一個有 WebGUI 的檔案管理器,可以線上瀏覽伺服器上的檔案,支援上傳下載,支援一些媒體檔案的播放,功能豐富。

首先,要去倉庫裡搜尋 FileBrowser 映象,訪問 hub.docker.com 在搜尋欄輸入 FileBrowser 回車,搜尋結果有很多,其中獲得 Stars 數量最多的是 FileBrowser 官方的映象,但這裡我們選擇 80x86/filebrowser,它是開發者荒野無燈大神製作的增強版。點進去可以看到詳情頁面,這裡有該 Docker 的介紹和開發者寫的安裝說明,接下來我們需要按照這個說明去配置 Docker 的引數完成安裝。

由於國內網路的不穩定,hub.docker.com 這個網站可能無法訪問,這種情況可以通過修改 DNS 地址解決,比如修改為 114.114.114.114。如果修改 DNS 地址的方法無效,可以參考 Unraid中文版入門指南 中“使用Docker”部分的解決方法。

2. 閱讀 Docker 說明

安裝一個陌生的 Docker 時,一定要仔細閱讀它的說明文件,Docker 的開發者一般會以表格的形式列出需要使用者配置的引數。在 FileBrowser 的說明文件中,很容易就找到這些引數列表,如圖所示。這些引數分為下面幾種型別:

Path 路徑

前面介紹過 Docker 執行在容器裡,容器與主機是隔離的,在容器裡建立一個檔案,容器外是無法訪問到的,為了讓 Docker 可以正常訪問修改主機上的檔案,需要引入 Path 路徑引數。Path 引數要設定兩個值,一個是容器路徑,一個是主機路徑。通過 Path 的設定,Docker 訪問容器路徑的時候就相當於訪問了主機路徑。

在 FileBrowser 的引數列表中,/config/myfiles 就是容器路徑,作者在表格中詳細描述了這兩個路徑的用途。

/config 是配置檔案的路徑,可以對映到 /mnt/user/appdata/FileBrowserEX/config 下。

/myfiles 是檔案管理器根目錄,可以對映到 /mnt/user/Movies/ 目錄。

Port 埠對映

類似於路由器的埠對映,Port 引數也要設定兩個值,一個是容器的埠,一個是主機埠。通過埠對映讓主機可以訪問容器。

在 FileBrowser 的引數列表中,只需要配置一個 Port 引數。

Variable 變數

變數引數的數量一般比較多,作用也各不相同,常見的有:PUID(代表使用者ID),PGID(代表使用者組ID),WEB_PORT(埠號)等。

注意!這裡的埠號指 Docker 使用的埠號,它的型別是變數,只需要填寫一個值。

而 Port 型別的埠,指埠對映,需要填寫兩個值。

Label 標記

暫時沒有用過這種型別的引數。TBD

Device 裝置

這是一個特殊的引數,指定系統中的裝置檔案,主要用於載入硬體驅動。

在 FileBrowser 的文件中給出了啟用核顯進行視訊編解碼的引數設定,就是利用 Device 引數添加了核顯的驅動。這裡暫不去配置它,後續在配置 Jellyfin 硬體解碼的時候會用到。

3. 新增容器

在仔細閱讀了說明文件,知道該設定哪些引數後,就可以開始安裝 Docker 了。實際上,安裝 Docker 就是用 Docker 的映象生成一個容器。

  1. 通過 DOCKER >> ADD CONTAINER 進入新增容器頁面
  2. Template 是模板,記錄以往新增容器時填寫的內容,因為這是第一次新增容器,所以沒有
  3. Name 是容器名稱,輸入 "FileBrowserEX"
  4. Repository 是 Docker 映象的地址,輸入 "80x86/filebrowser"
  5. 然後點選 Add another Path, Port, Variable, Label or Device 連結來設定引數
  6. 需要按照 Docker 說明文件,依次新增引數,如圖
  7. 全部填寫完成後點選 APPLY 將開始下載映象並建立容器
  8. 如圖顯示 Successfully 表示容器建立完成!

4. 使用 Docker

DOCKER 頁面可以看到系統中已有的容器,如圖所示,列表中已經顯示出剛才建立的 FileBrowserEX。在 PORT MAPPINGS(APP TO HOST) 一列顯示了容器 IP 埠和主機 IP 埠的對應關係,使用瀏覽器訪問右邊的主機地址 10.0.0.110:7001 就可以開啟 FileBrowserEX 的 WebGUI 頁面進行使用了。

5. Docker 高階選項

DOCKER 頁面點選 FileBrowserEx 容器名稱超連結,進入修改容器設定的介面,點選右上角的 BASIC VIEW(基礎檢視) 切換到 ADVANCED VIEW(高階檢視) 在這裡可以進行容器高階選項的配置。

5.1 給 Docker 新增圖示

沒有圖示的 Docker 是沒有靈魂的,在引數列表中有 Icon URL 這一項,將找到的圖示網址貼上到這裡就可以給 Docker 指定漂亮的圖示了。

5.2 新增快捷連結

使用 Docker 要輸入 IP 地址和埠,非常麻煩,而且有時會忘記埠號。其實可以通過設定高階選項中的 WebUI 引數來給 Docker 新增一個快捷連結。

設定 WebUI 引數為 http://[IP]:[PORT:7001] 其中 "7001" 是 Docker 的主機埠號。

新增快捷連結後,可以直接點選 Docker 圖示選擇 WebUI 進入網頁。

5.3 Extra Parameters 附加引數

附加引數是一個很容易被忽略的選項,很多作者在 Docker 釋出頁的引數列表上並不會列出附加引數,而是把它寫在建立容器的命令裡。比如在 FileBrowser 的說明文件裡就沒有提及附加引數這個選項,萌新可能會忽略了這個引數的填寫。所以說在安裝 Docker 的時候也要注意看一下它的命令列示例。

在 FileBrowser 說明文件後面,有作者寫的通過命令列建立容器的示例程式碼:

IMAGE_NAME=80x86/filebrowser 

WEB_PORT=8082
FB_AUTH_SERVER_ADDR="127.0.0.1"
mkdir -p $HOME/docker/fb/config $HOME/docker/fb/myfiles #建立資料夾的命令
podman run -d --name fb \
  --restart=unless-stopped \ #附加引數:容器自動重啟(這裡不使用)
  -e PUID=$UID \             #變數:PUID
  -e PGID=$GID \             #變數:PGID
  -e WEB_PORT=$WEB_PORT \    #變數:埠號
  -e FB_AUTH_SERVER_ADDR=$FB_AUTH_SERVER_ADDR \  #變數:認證伺服器地址(這裡不使用)
  -p $WEB_PORT:$WEB_PORT \                       #埠對映:埠對映
  -v $HOME/docker/fb/config:/config \            #路徑:配置檔案路徑
  -v $HOME/docker/fb/myfiles:/myfiles \          #路徑:根目錄路徑
  --mount type=tmpfs,destination=/tmp \          #附加引數:設定臨時檔案掛載點
  ${IMAGE_NAME}:2.9.3-amd64

筆者在程式碼上進行了註釋,可以看出來這段命令其實和建立 Docker 容器時配置引數的過程是一樣的。仔細觀察可以發現命令中有兩行和其他行不太一樣,分別是第一行 --restart=unless-stopped 和 最後一行 --mount type=tmpfs,destination=/tmp,這兩行其實就是附加引數。

第一個附加引數的意思容易理解,它是保證容器在異常退出後自動重啟的。第二個引數筆者一開始也不明所以,經過查詢資料,才明白它的意思,它的意思是:在系統記憶體中分配一個用於儲存 tmp 臨時檔案的磁碟,並掛載到 /tmp 容器路徑上。這個引數是可以提高 Docker 效能的。所以在高階視圖裡把這段程式碼貼上到 Extra Parameters 選項裡,應用設定並重建容器。

Docker總結

雖然倉庫中的 Docker 應用種類繁多,功能各異 ,但它們的配置方法其實和上文中的 FileBrowser 所差無幾,無非是多幾個需要配置的引數,所以在安裝 Docker 的時候一定要仔細閱讀說明文件,也要多參考網上其他作者寫的教程。

Unraid 還可以通過 “Community Applications” 社群應用商店來安裝 Docker,方法和上文大體相同,如果掌握了通過容器新增 Docker 的方法,那麼通過社群商店安裝 Docker 將觸類旁通。

Community Applications

“Community Applications”(社群應用程式),包括 Unraid 社群的外掛、Docker 容器和應用商城。若要安裝,請轉到“PLUGINS”(外掛)標籤頁,選擇“Install Plugin”(安裝外掛)並複製貼上下列 URL 的其中之一:

https://gitee.com/BlueBuger/community.applications/raw/master/plugins/community.applications.plg

https://www.52help.net/ad/nas/Squidly271/community.applications/master/plugins/community.applications.plg

完成上述操作後,Unraid WebGUI 的頂部欄上方將會新增一個“APPS”(應用)選項卡。