VM暫時告一段落,其實unraid上面的插件還是以容器(docker)最為大宗
像我們後面要做的雲端、還是一些「偷吃步」的插件(不是像「Unassign Disk」這種GUI套件而已,而是可以增加unRaid沒有功能的「擴充套件」
都須依靠docker運作
因此了解docker原裡與操作也十分重要
假設今天有一種能裝很多東西的籃子:
而籃子裝滿了很多東西,有雞蛋、零食、水果、調味品…等
結果雞蛋不小心撞到地面破掉了,蛋汁流的籃子裡都是,所有東西幾乎都被「汙染」了
這就是單個OS執行各種軟體環境造成的結果
每個軟體都這個環境上執行,久而久之不僅沒效率,還很容易因軟體問題導致系統崩潰或跟其他軟體衝突
俗話說的好:「雞蛋不要放在同一個籃子裡」,這時容器就發揮功用了
用它就可以將不同的軟體個別在單獨的環境執行
一談到container(容器),就不能不提這個最能代表container的平臺:Docker。
看看這支鯨魚,載了眾多箱子卻不感覺疲憊,反而給人一種強大輕巧的感覺
身為一個非常成熟的container平臺,不僅擁有眾多的開源容器映像;且安全性跟效能也非常穩定
(作圖:小雨)
Docker Engine會部屬在Hyperviser或OS上,目的只是為了讓系統內核能跟Docker做資料交換
畢竟Docker運作大多是應用程式(App)為主,就必須有底層內核來「驅動」
再往上一層會遇到相依性函式庫(Dependency Library),組成會有像執行檔(bin)、直譯器(python)、和一些App會用到的相依性套件
這層能為上層App提供必要的執行環境,舉個栗子:
像昨天剛「折騰」完的Wordpress網站,就可放在Docker上運行
這時
- LAMP就有如Dependency Library為網站提供執行環境
- Wordpress就相當於在LAMP上運作的App
而把Dependency Library跟App打包成一種img(映像檔),就是container,可直接在任何的Docker環境上執行
相較於需安裝整個OS的Hyperviser而言,Docker提供了輕量級的環境供軟體執行
以將軟體包在img內提供個別服務的形式,可在不影響原系統的情況下運行服務
而Hyperviser是以硬體模擬的形式部署整個環境,就相當使用一臺真的電腦
以OS為單位的VM,可在獨立的環境中運作任何軟體
但這樣是不是Docker比較有優勢呢? 也不一定
因為container仍需透過OS進行開發,這時利用Hyperviser來打包Docker可在不影響原系統的情況進行完整開發流程
沒有哪個比較優,只能說各有千秋!
如果只是為了使用軟體而利用Hyperviser安裝不同OS,反而非常浪費資源
不如直接使用Docker不僅不用硬體模擬就能有更好的效能,這樣只需一台電腦就能提供很多服務
container的玩法比VM有著更多的彈性,就舉兩點: