內容來源于@什么值得買APP,觀點僅代表作者本人 |作者:可愛的小cherry
大家好,這里是可愛的Cherry
最近發的文章,Cherry是越來越懶了,丟了一個compose.yml就不管了,基本在介紹項目使用上了,沒想到還是有很多朋友沒有接觸過,或者對docker-compose使用不熟悉。
因此本期,Cherry在上一篇玩轉NAS之docker的基礎上,重點講一下docker-compose如何安裝、使用,并且介紹一下非SSH使用docker-compose的一些方法。
Cherry不喜歡用套件,為什么?因為一是有潔癖,套件刪除有沒有遺留文件不清楚,二是不放心,套件屬于二次封裝,肯定不如直接原版用的放心。
文章
『和Cherry玩轉NAS』 篇一:干貨滿滿,新手必讀,一文掌握docker核心技巧,輕松成為NAS高手——docker(篇一)
docker compose是docker的多容器管理應用程序,用于定義、管理、運維多個docker容器的工具。
最簡單的理解,就是docker(后面特指docker run指令)管理一個容器,compose管理多個容器。
docker run、docker compose、container之間的管理。不僅限于容器本身,還包括卷、網絡等所有docker的一切。
docker-compose的優勢大概總結有三點。
一是容器管理簡易化。
所有容器的定義、運行都可以通過文本記錄在冊,通過修改yml配置文件可以輕松的更改和管理這些容器。
二是容器管理用持續化。
所有容器的配置,例如卷、鏡像、網絡都在yml配置文件里,無論何時,我都可以在yml文件和數據卷的合作下,輕松重啟我的docker容器而不用擔心容器丟失。
三是容器管理更安全。
compose的容器間訪問,默認是互聯互通,通過hostname的使用,可以讓容器不暴露端口的情況下被同個項目下的容器所訪問,大大提高了安全性。
核心文件
docker compose的核心是yml文件一般常用的是docker-compose.yml,或者compose.yml。
核心指令(所有指令,都必須在docker-compose.yml文件所在的目錄下執行)
#后臺啟動compose
docker-compose up -d
#關閉compose
docker-compose down
#查看日志
docker-compose logs -f
#查看當前compose容器運行情況
docker-compose ps
#進入compose容器下的某一個,hostname是ps后展示出的service名字,即上圖service下一級的windows
docker-compose exec -it [hostname]
目前,成品NAS除群暉7.X系、威聯通、鐵威馬外,其它NAS都還沒有內置docker-compose,因此需要我們手動安全。
#輸入以下指令,查看是否安裝docker compose
docker-compose --version
安裝方法,首先通過finalshell等工具登錄NAS,然后一次輸入以下指令
#安裝docker-compose
curl -L https://hub.gitmirror.com/https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose
#賦權
chmod +x /usr/bin/docker-compose
#驗證docker compose
docker-compose -v
除了在SSH頁面進行docker compose操作外,最重要的是docker-compose的可視化操作,先介紹2個第三方的compose可視化項目。
dockge是一款專門針對docker compose的可視化應用項目,由uptime kuma作者開發。該項目通過一個界面,實現了compose類目的整合。
通過可視化編輯yml文件,可以輕松管理和運維compose項目。
所有dockge管理的compose項目,都必須將docker-compose.yml文件放到環境變量DOCKGE_STACKS_DIR所設置的目錄下。
dockge管理的compose路徑格式如下,可以把所有項目納入dockge管理
老牌dockerUI項目,放在dockge后面的原·因是整合效果和運維內容不如dockge那么多,不支持直接更新鏡像文件。
所有portianer管理的compose項目,都必須使用portainer的界面上進行新建。
群暉作為頭牌NAS系統,系統成熟度無疑是最高的,從7.2版本更新docker套件并支持compose項目管理依賴,將docker使用又納入了一個新的高度。雖然目前群暉出了bee系列這種垃圾硬件賣系統的東西,但是傳統的DS系列依舊好評如潮。
例如最新的雙盤位DS224+,雖然采用傳統的J4125,比不上目前的N100等cpu,但是在日常使用中已經足夠了,要知道DS920+都戰了4年了依舊是推薦之首。
使用cotainer manager管理compose項目
威聯通方面,最新的當屬TS-466C,4盤位最新NAS,采用N6005處理器,在性能上單核和多核分別較J4125提升58%和52%左右。
和群暉的差異可能更多的還是在操作系統上,傳統的轉圈和卡頓,不過這個價格還說啥呢,夠香了就是。
威聯通使用container station管理compose項目
在應用商城,搜索docker compose,安裝圖里的插件即可。
安裝以后,在docker里就有docker compose可視化頁面了
docker-compose.yml的語法,其實和docker run十分相似,簡化了link的依賴關系,將四大元素分層級進行定義,如最主要的卷、網絡、端口、環境變量其實是不變的,就是從單數增加到了復數。
這里給大家講解一下常用的docker-compose.yml文件的格式和規范。yml文件嚴格遵守縮進符,層級錯誤會導致無法部署,因此使用空格不要使用tab。
?version: "3"
代表這當前yml文件的語言版本,目前常用的是2.X和3.X版本,主流為3.X版本,可空
?name: ABC
代表當前項目名字為ABC,可空
?services:
代表下屬層級的都是服務,就是我們的容器
?s1:容器的hostname,理解為項目內的id,唯一且必填
?container_names:容器名稱,等同于docker run的name,可空
?image:鏡像,等同于docker run的image,必填
?env_file:環境變量文件,等同于docker run的–env,可空
?environment:環境變量,等同于docker run的-e,根據項目要求更改
?volumes:存儲卷,等同于docker run的-v,支持綁定和卷,如果是卷需要在下面的volumes去新增。
?networks:網絡,等同于docker run的–net,指定容器所在的網絡
?restart:重啟策略,等同于docker run的restart,自定義
?ports:端口,等同于docker run的-p,自定義
?depends_on:依賴,等同于docker run的link,表示容器間的依賴關系
?s2:另外一個容器
?volumes:容器卷,這里只填寫卷模式,如果是綁定模式則在容器內部定義。
?db1:新建一個叫db1的卷
?db2:新建一個叫db2的卷
?networks:
?net1:新建一個叫net1的網絡,單個compose項目可以不需要,會自動生成項目名稱的網絡。
對于部署一個docker compose項目來說,修改yml文件是最核心的工作。一般來說官方都會提供一個比較完整的yml文件,我們需要修改的僅僅是涉及到本地化部署的一些內容,那就是以下4個。
端口,左側是宿主機的端口,可以自定義;右側是容器端口,不能修改。
存儲(綁定),左側是綁定模式的宿主機路徑,可以自定義;右側是容器路徑,不能修改。
比如我要改到/volume1/abc下,那就是- /volume1/abc:/db_a
存儲(卷),左側是卷模式下的卷名稱,可自定義,;右側是容器路徑,不能修改。
環境變量,這個根據每個項目的不同進行調整即可。
經過群友介紹,有一個項目可以將本地現有的docker全部導出為compose文件,效果一等一的好。
因為時間有限,Cherry還沒體驗過這個項目,因此明后天體驗完以后,會把該項目完整的使用方法梳理出來。
歡迎朋友們評論區討論留言。我會定期更新關注NAS使用方法、開源軟件與Docker軟件、游戲與生活相關內容,喜歡的朋友請關注、點贊、留言支持。
作者聲明本文無利益相關,歡迎值友理性交流,和諧討論~
本內容來源于@什么值得買APP,觀點僅代表作者本人 |作者:星木海
上篇硬件篇里,我已經把這臺聯想小新700筆記本電腦更換了一塊2T的移速移動硬盤,原來的系統是win10 家庭版,用起來實在是有點不習慣,所以重裝為win10 專業版操作系統,下面是舊筆記本的改造文章鏈接和移速固態硬盤鏈接:
下面是聯想小新700的配置截圖,這個配置其實還是可以用做主力筆記本使用的,畢竟最大支持16G*2的內存,i7-6700HQ也是標壓CPU。
之所以選擇改造這臺舊筆記本的原因就是不想花費太多的mony,一臺入門nas不含硬盤就得大幾百塊,加上4T硬盤*2就是接近2K了,更大的硬盤就不說了。然后我又想配個UPS,防止硬盤在停電的時候損壞,查到的資料里說突然停電也是硬盤損壞的重要原因之一,綜上所述一折騰下來五千塊可能就沒了。。。
而我實際需求是照片存儲和瀏覽,所以實際上找一款開源相冊管理軟件就夠了,至于說nas的其他功能,我其實用不上,畢竟我有天翼云盤和百度網盤雙備份,家里還有一塊4T機械硬盤冷備份,而且我目前照片+視頻也只有不到700G,所以舊筆記本加上2T固態硬盤后就能滿足需求了,而且筆記本電腦有電池,不怕突然停電。
筆記本電腦安裝win10專業版的主要原因是:日常這臺筆記本都放在角落當服務器用,也沒有外接顯示器,都是在另外一臺筆記本電腦上使用遠程桌面連接,而家庭版是沒有這個功能的。也許有人說可以用向日葵、Todesk之類的遠控也可以啊,但是我的目的是在家里使用,并不打算把這些照片放在公網訪問,所以還有什么軟件比微軟自帶的遠程桌面好使呢?
開源相冊我查了一圈資料后自己安裝了兩個相冊測試,分別是PhotoPrism和Piwigo,最后我選定了PhotoPrism,本篇文章是PhotoPrism的部署思路,關于Piwigo的可以看下面鏈接里的文章:
至于為什么docker不直接安裝一個windows版的,而是要先安裝一個VMware Workstation再安裝linux虛擬機后部署docker呢?首先,因為我想保持windows系統的純凈,眾所周知的原因,windows安裝的軟件越多,后期越臃腫,我不想把各種軟件都直接裝在系統里;其次,安裝虛擬機有個好處,我可以做一個快照,萬一玩掛了,直接恢復快照,而且就算操作系統掛了,只要虛擬機文件在,直接打開虛擬機就好了,不會因為操作系統掛掉應用就需要全部重新部署;第三,我的照片全部放在windows磁盤上,而PhotoPrism安裝在虛擬機的docker容器里,我會把windows里的照片目錄共享掛載到linux里面,然后再把linux的這個掛載目錄映射到docker容器里,因為windows里設置了共享權限為只讀,所以PhotoPrism是無法刪除這些照片的,這樣可以防止家人瀏覽的時候誤刪除,因為PhotoPrism不支持多賬戶,瀏覽的話就是管理員賬戶直接瀏覽。
前置條件:必須安裝docker,關于docker的安裝教程真的是一大堆,我這里就不復述了。
我是在VMware Workstation里面安裝了一個CentOS7.9的虛擬機,然后安裝docker,并且把windows本地照片的目錄掛載到了linux里面。linux訪問并掛載windows下的共享目錄命令為:
mount -t cifs -o username=admin,password=admin //192.168.1.1/share ./windows
其中username和password就是你windows的在賬戶密碼,IP地址后的share是windows共享目錄的名稱,./windows里windows是在linux里面掛載的目錄名。如果你還不會windows共享的話,那我建議先學習下相關知識吧,不然是沒法進行后面步驟的。
上圖里面那個1.7T的盤就是我筆記本電腦里面掛載過來的,我把這個共享目錄掛載在了/app/picture目錄里,然后PhotoPrism也部署在了/app/photoprism里面。
1、下載配置文件
#創建一個文件夾
mkdir /app/photoprism
cd /app/photoprism
#下載配置文件(如果不加--no-check-certificate選項會報錯)
wget https://dl.photoprism.app/docker/docker-compose.yml --no-check-certificate
2、修改配置文件
下面配置是建立映射關系,如果打算把自己存圖片的位置直接掛載上來的話,就要像我這樣修改路徑,去掉#,按照我的格式修改就好,/app/picture就是我照片的目錄:
- "/app/picture:/photoprism/originals"
下面截圖紅框的環境變量可以修改一下,編號2的紅框是默認密碼,必須改掉!編號3紅框是默認端口2342,如果想修改的話,可以修改一下,就是記得修改之后還要修改編號1的紅框參數,這是主機和docker容器的端口映射關系。
其他默認參數都可以不修改。
3、啟動PhotoPrism
#啟動
docker compose up -d
Running3/3都創建或啟動,就說明啟動成功了。
4、打開PhotoPrism
瀏覽器打開頁面,登錄后,修改語言:Settings--Language 這里修改為 簡體中文 就可以了
5、配置文件源
這里的文件源就是之前配置文件里修改過的映射目錄:- "/app/picture:/photoprism/originals"
使用自己的文件源好處是保留了原始的文件結構,之前在配置文件中配置了自己文件路徑,把自己的圖片上傳到/app/picture里面(我是從windows共享掛載過來的,所以直接在筆記本電腦的D盤上傳圖片就可以了),然后在‘資料庫’中建立索引,就完成了。
這樣源文件還在原來的位置,PhotoPrism中只保留索引,方便后期備份,只需要保護好自己的的文件目錄就行。下面就是我建立好索引之后的狀態,可以方便瀏覽我的照片,所有照片的結構目錄都是在windows上的,如果變化了目錄結構只需要重新建立索引就可以了。
目前已經完成了所有照片第一階段的整理,我使用感受還是挺不錯的。首先第一次建立索引的速度還行,看進度是一秒鐘建立一張新照片的索引,后續增加照片的話,可以只索引新增的。如果整個目錄都發生較大改變的話,可以選擇睡覺之前索引,第二天起床肯定索引好了。
人臉識別
然后可以識別所有的人臉,下面這些照片還是十幾年前用幾十萬像素的手機拍的,人臉依然可以識別出來。
上面在新增識別中把我自己的照片下標識為:“我自己”,然后刷新一下頁面,在已識別這邊就把我自己的照片都識別出來了,全部瀏覽了一下,準確率基本在90%以上,這個功能還是可以的(畢竟免費的)。
地點識別
可能是因為我第一階段的照片都是以前舊手機拍的,沒有什么地點信息,一共只有20多張照片可以看到地圖信息,但是至少PhotoPrism是有這個功能了。
新建相冊
可以新建相冊,但是我沒想到的是相冊創建了卻沒法刪除。。。也許是我還沒找到刪除的地方吧
我也只是測試下這個功能而已,本身用不上的,因為我在相冊的實際目錄已經用文件夾分類命名了。
如下圖所示我在D盤的相冊實際目錄已經按時間地點分類好了,所以用PhotoPrism瀏覽的時候直接選擇文件夾就好了,基本用不上它自帶的相冊功能。
視頻
導入的視頻都可以播放,絕大部分視頻都有日期信息,有少量視頻可以識別地點信息,比如我2018年十一去江西武功山露營的視頻就識別出了地點信息。
設置
設置里面有很多選項,以后再慢慢摸索,我主要是把只讀模式打開了,這樣雙重保障不讓照片被誤刪除。
至于功耗這塊,因為是游戲本,所以電源是135W的,但是理論上來說跑個虛擬機而已,顯示屏基本不會開,功耗不會太高。這是我正常狀態下CPU、內存、磁盤的使用情況,因為沒專業設備,功率也沒有準確值,所以按照這個使用率來估算,我覺得待機功耗50W差不多了,也就是一天一度電的樣子。
PhotoPrism目前是可以滿足我瀏覽照片的需求的,至于說nas功能,其實就是在小新700上定期下載百度網盤和天翼云盤備份的照片,然后再復制到那塊4T的冷備盤上。而這臺筆記本電腦長期開機就可以滿足我很多需求了,比如下載電影,如果我還想折騰的話,也可以多開幾臺虛擬機裝docker等,都不在話下。就我的實際情況而言,我相信這個方案已經是最優解了吧