小刻也能看懂的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 的鏡像生成一個容器。
- 通過
DOCKER >> ADD CONTAINER
進入添加容器頁面 Template
是模板,記錄以往添加容器時填寫的內容,因為這是第一次添加容器,所以沒有Name
是容器名稱,輸入 "FileBrowserEX"Repository
是 Docker 鏡像的地址,輸入 "80x86/filebrowser"- 然后點擊
Add another Path, Port, Variable, Label or Device
鏈接來設置參數 - 需要按照 Docker 說明文檔,依次添加參數,如圖
- 全部填寫完成后點擊
APPLY
將開始下載鏡像並創建容器 - 如圖顯示
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”(應用)選項卡。