前面我們已經(jīng)講完了 Docker 的安裝與鏡像加速器的配置,本文將介紹一些 Alliot 常用的鏡像以及相關(guān)的配置。 前言 命令行與群暉的 Docker 套件面板操作,各有優(yōu)劣,因此,下文的內(nèi)容有綜合兩種方式來進行。為了照顧新手,步驟描述可能比較啰嗦,老手其實只需要知道鏡像名,去 dockerhub 對應(yīng)的項目主頁查看即可。 創(chuàng)建卷的掛載目錄 很多容器都會要用到卷(volume),以此來做數(shù)據(jù)的持久化。在容器里,container 內(nèi)部修改的文件都會保存在 container 的可讀寫層中,當 container 銷毀(如重建 container 等)時,那些文件就會丟失,并且,跨 container 的文件操作,在沒有卷(volume)的情況下,也非常麻煩。因此,Alliot 推薦在群暉里新建一個共享目錄來專門存放卷(volume)文件。 打開群暉控制面板-共享文件夾,選擇新增,如下圖所配置即可:  接下來我們需要將這個共享文件夾的權(quán)限放大一些,防止容器應(yīng)用的權(quán)限問題(這里我直接將權(quán)限改成了最松,安全起見請勿將其他重要文件夾的目錄這樣配置):  今后我們可以將容器卷掛載點都置于改目錄下,便于管理。 某度云盤遠程下載 NAS 作為一個 7*24 小時開機的設(shè)備,最大的用處就是下載了,可惜,龜速某度云盤并沒有提供群暉相關(guān)的客戶端來供掛機下載。(cloudSync 屬于同步而且有大小限制,不太適合某度云盤的下載),逛 Github 的時候偶然看到了一個 VNC 結(jié)合百度云盤 Linux 客戶端的 Docker 鏡像項目,非常適合在群暉上運行。 項目地址: https://github.com/john-shine/Docker-CodeWeavers_CrossOver-VNC 創(chuàng)建 使用 ssh 連接群暉并獲取 root 權(quán)限
12345678910111213 | # 從遠端 pull 最新 imagedocker pull johnshine/baidunetdisk-crossover-vnc:latest# 從 image 創(chuàng)建 container 并運行docker run -d \--name baidunetdisk \-p 5901:5901 \-p 6080:6080 \-e vnc_password=your_password \johnshine/baidunetdisk-crossover-vnc:latest# 上面的參數(shù)中,--name 表示容器名(可自定義),-d 表示以守護進程運行,-p 表示映射容器端口(前面為host端口,后面為容器端口),-e 表示環(huán)境變量# 即 映射容器的5901與6080端口到主機5901與6080端口,設(shè)置vnc密碼為your_password |
之后,我們回到 DSM 的 Docker 套件,可以看到我們剛才創(chuàng)建的容器,我們先將它停止,點擊編輯:
 在 “卷” 選項卡中,添加文件夾,選擇下載保存的位置,裝載路徑為:/home/baidu/baidunetdiskdownload/ (保存位置可以自定義,裝載路徑必須為這個),應(yīng)用,之后將該容器啟動即可。 管理 我們可以使用瀏覽器直接打開: http://nas的IP:6080 登錄賬號即可(密碼為前面設(shè)置的vnc_password值):
 或者也可以使用 VNC 客戶端(推薦 VNCVIEWER)進行連接,連接地址為: nas的IP:5901 BUG卡LOGO 使用過程中發(fā)現(xiàn)有時候容器啟動后連接 VNC,會出現(xiàn)卡百度網(wǎng)盤 LOGO 的情況,這時候我們需要使用 ssh 連接群暉并獲取 root 權(quán)限 執(zhí)行:
1234567891011 | # 進入容器內(nèi)部并開啟一個 shelldocker exec -it `docker ps|grep baidu|awk '{print $1}'` /bin/bash# 刪除數(shù)據(jù)庫文件rm -f /home/baidu/baidunetdisk/baidunetdiskdata.db# 退出容器 shellexit# 重啟該容器docker restart `docker ps -a|grep baidu|awk '{print $1}'` |
重新連接 VNC 即可。 Aria2NG aria2 是一款開源的多線程的下載工具,許多軟件中都有它的身影(前面被搞的 Pandownload 也是基于 aria2 的)。而 Aria2NG 則是一個基于 aria2 的 UI 版。 創(chuàng)建 首先,打開群暉 DSM 中的 Docker 套件,在 注冊表 中搜索 auska 的 docker-aria2 下載對應(yīng)的鏡像后,在 映像 中選擇啟動,勾選 使用高權(quán)限運行 ,端口設(shè)置里,容器端口不變,本地端口中,6800 為 Aria2 RPC 服務(wù)端口(不推薦修改),8080 為 Aria2NG WEB 服務(wù),按需修改。卷設(shè)置中,添加文件夾。創(chuàng)建一個保存配置用的文件夾,Alliot 這里為 docker/aria2 此處可按需自定義,裝載路徑則必須為 /config ,同樣的創(chuàng)建一個保存下載文件用的文件夾,Alliot 這里為 homes 按需自定義,裝載路徑必須為 /mnt ,之后再去到群暉的 File Station ,找到這些文件夾,右鍵屬性,設(shè)置 Everyone 可讀可寫。回到 docker 環(huán)境設(shè)置中,SECRET 變量為 Aria2 RPC 密鑰,默認為odcn.top admin ,可按需修改,Alliot 這里選擇默認,配置完成后應(yīng)用,到容器里啟動即可。 打開瀏覽器,訪問 群暉的 IP:Aria2NGWEB的端口 即可進入 Aria2NG,這里說一下一個坑,此鏡像不會自動配置 Aria2 服務(wù)器的 RPC 密鑰,即使是默認的 admin 也不行,所以打開 WEB 后會提示 錯誤 認證失敗 ,需要手動填寫先前設(shè)置的 SECRET 。 自動更新tracker 很多朋友說 Aria2 速度依舊很慢,這是因為沒有添加 tracker 地址導(dǎo)致的,我們利用腳本設(shè)置從 tracklist 自動更新 Aria2NG 的 tracker: 使用 ssh 連接群暉并獲取 root 權(quán)限 后,新建一個腳本內(nèi)容如下:
12345678910111213 | !/bin/bash#CONFFILE 更改成你的 conf 文件真實地址CONFFILE="/volume1/docker/aria2/aria2.conf"DOCKERID="`docker ps| grep aria|awk '{print $1}'`"list=`wget -qO- https:///best.txt|awk NF|sed ":a;N;s/\n/,/g;ta"`if [ -z "`grep "bt-tracker" $CONFFILE`" ]; thensed -i '$a bt-tracker='${list} $CONFFILEecho add……elsesed -i "s@bt-tracker.*@bt-tracker=$list@g" $CONFFILEecho update……fidocker restart -t=30 $DOCKERID |
運行該腳本后可以看到 aria2.conf 添加了 bt-tracker 字段即可。 登錄 DSM 打開控制面板添加計劃任務(wù)如下:
1234 | # 任務(wù)名隨意,使用 root 用戶執(zhí)行# 計劃里每天執(zhí)行# 任務(wù)設(shè)置里添加:sh /volume1/docker/aria2/auto_tracker.sh |
在 Aria2 的配置文件 aira2.conf 中,添加如下字段:
12 | save-session-interval=30 # 30 S 保存會話force-save=true # 強制保存 |
腳本運行后會提示容器意外關(guān)閉,這是因為更改 aria2 的配置文件后,腳本重啟了容器以生效。 人人影視下載 美劇愛好者肯定都知道人人影視這個軟件,人人影視也有 Docker 版,并行下載能夠跑滿寬帶。 安裝 使用 ssh 連接群暉并獲取 root 權(quán)限 后,執(zhí)行:
123 | root@Alliot-blog:~# docker run -d --name rrshare \-v \-p \ |
Jellyfin Jellyfin 是 Emby 出來的一個免費版分支,與收費的 Emby 差別不大,甚至能夠用舊版的 Emby 客戶端來連接。在 DS918+ 系統(tǒng)下,Jellyfin 能夠進行硬解(Emby硬解需要購買訂閱)。
安裝 要硬解的話,我們需要先看一下核顯是否正常驅(qū)動了: 使用 ssh 連接群暉并獲取 root 權(quán)限 后,執(zhí)行:
123 | ls /dev/dri/# 有如下輸出則是有驅(qū)動card0 renderD128 |
之后,使用命令行創(chuàng)建容器:
123456789 | root@Alliot-blog:~# docker run -d --name jellyfin-docker \-v /volume1/docker/jellyfin/config:/config \-v /volume1/docker/jellyfin/cache:/cache \-v /volume1/video:/video \-p 8080:8096 \-p 8081:8920 \-device=/dev/dri:/dev/dri \jellyfin/jellyfin:latest |
注意:
1234 | -v 的 `/volume1/docker/jellyfin` 需要根據(jù)你自己前面創(chuàng)建的docker共享文件夾來修改`/volume1/video` 為你影片的存放路徑-p 這里,8096 為容器的 http 端口,8920 為 https 端口,我把宿主機的8080映射給了容器的8096,之后我們可以通過 http://nas的ip:8080 來訪問 Jellyfin 了-device 是將核顯設(shè)備映射給容器內(nèi)部使用,如果前面檢查沒有驅(qū)動則不需要該字段,也無法硬解了。 |
之后瀏覽器打開 http://nas的ip:8080 ,按照指引完成配置后,在 jellyfin 控制臺中的硬件加速處選擇 “VAAPI” 硬件加速,轉(zhuǎn)碼線程推薦 “4”,其他默認。效果如下:  另外一個問題就是,推薦在 Docker 套件中,將內(nèi)存做限制,我目前給的 2G 限制,前幾天使用 jellyfin 外網(wǎng)看電影的時候,出現(xiàn)群暉宕機,無法 ping 通的情況,強制下電重啟才恢復(fù),估計是內(nèi)存被吃滿的原因,限制內(nèi)存后暫時沒出現(xiàn)這個問題(jellyfin 挺吃內(nèi)存,給多少吃多少)。 解鎖網(wǎng)易云音樂灰色歌曲 源于這個項目 unblockneteasemusic,可以通過代理,將網(wǎng)易云音樂的變灰歌曲解鎖。
1234 | root@Alliot-blog:~# docker run -d --name unblockneteasemusic \-p 666:8080 \-p 8081:8081 \nondanee/unblockneteasemusic |
打開網(wǎng)易云音樂,如圖,配置 HTTP 代理,填入群輝 IP 和上面映射的 666 端口即可(如果需要在公網(wǎng)訪問,記得去路由器里做端口轉(zhuǎn)發(fā)): 群暉-網(wǎng)易云代理 保存重啟客戶端后即可。 自動更新容器 Docker 應(yīng)用有個很不方便的地方就是,沒有自動檢查鏡像更新的功能,對于喜歡嘗鮮的朋友來說,上游鏡像有更新了第一時間就想要更新嘗試一下,這時候一個名為 watchtower 的應(yīng)用就出現(xiàn)了。 watchtower 是一個可以監(jiān)控正在運行的容器鏡像是否有更新的工具,當本地鏡像與遠端鏡像有差異的時候,可以自動使用當前容器的運行參數(shù)以新鏡像重新創(chuàng)建一個新的容器,并刪除舊的容器。這有點類似于我們手機應(yīng)用商店更新 APP 一樣。 watchtower 本身也被打包為容器鏡像,我們可以使用 ssh 連接群暉并獲取 root 權(quán)限 后,通過以下命令來運行:
12 | # 運行一次,更新所有的容器,并清除舊的容器docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once |
這樣我們所有的容器就會更新到遠端倉庫最新的鏡像版本了。 大致介紹一下上面的命令,我們知道 Docker 是 server+client 的架構(gòu),上述命令 -v 參數(shù)映射的 /var/run/docker.sock 就是 Docker client 與 daemon 通信的 socket 文件,watchtower 通過這個文件來監(jiān)控當前的所有容器。 watchetower 還可以針對某一個容器進行監(jiān)控,或是配置計劃任務(wù)定時更新甚至郵件通知等。其他更多參數(shù)見官網(wǎng) https://containrrr.dev/watchtower/arguments/ 結(jié)語 Alliot 暫時就只有這些值得推薦給大家的了,還有更多值得嘗試的鏡像歡迎在博客留言補充。
|