在之前的文章有稍微提過,目前個人在 Synology NAS 上透過 Docker 架設了許多服務,也算是累積了一些在它上面使用 Docker 的經驗,此文將簡單的記錄一些 Synology NAS 上有關的 Docker 兩三事。
安裝與使用 要在 Synology NAS 上安裝 Docker 非常容易,直接在 Synology DSM 後台的「套件中心」安裝即可。安裝成功即可看到 DSM 中多了 Docker 的 GUI 可以使用。 個人覺得 Synology 做出來的 Docker GUI 其實滿好用的,私心希望他們能將它改寫另外打包成 opensource 釋出。 在 DSM 安裝完 Docker 之後,除了可以透過 GUI 的方式操作 Docker,若你 SSH 登入 NAS,會發現也可以直接在 SSH 中使用 Docker 指令。個人後來要啟動新的 Container 時,幾乎都是直接 SSH 登入,在 command line 中輸入 Docker 指令。
Docker 版本與相關檔案位置 NAS 若是安裝 DSM 5.2,則安裝的 Docker 版本會是 1.6.2。如果最近有升級到 DSM 6....
除了 Jenkins 之外,個人排行第二感興趣的 CI Tool 是 GitLab(GitLab CI 在 GitLab 8.0 之後合併至 GitLab CE/EE)。個人目前被 GitLab 所吸引的地方是它的「單純與便捷」,如同有些人說 Jenkins 太囉唆了,Jenkins 在使用上可以設定的細節超級多(雖然你不一定每一項都會用到);相較之下 GitLab 單純且便捷,彷彿只要在程式碼中多加一個 yaml 檔即可設定完所有 CI 流程與動作。
但,真的有這麼簡單嗎? 所以當然要實際架設來玩玩看,才能做出更多的判斷。
2016.11.4 補充,確實就是這麼簡單,GitLab 確實是目前熱門的 CI Tool,功能越趨完整,雖然難免開始肥大化,但是未來發展不容小覷。
另外此文已經有部分過期了,建議各位閱讀之餘,還要對照最新的文件,避免有誤!
用 Docker 架設 GitLab 現在 Docker 如此盛行,要架設服務最簡單的做法就是先上 Docker Hub 搜尋現成的 Docker Image。GitLab 這種熱門專案當然不意外,一定會有現成的 Image 可以直接取用。在社群朋友的推薦之下,即找到下面這個優質的 Docker Image。
https://hub.docker.com/r/sameersbn/gitlab/ 印象中這個 Docker Image 的作者 sameersbn 是 Docker 圈內的大神之一,除了 GitLab 之外,他也做了其他很多優質的 image,大神出品,品質保證,選用他的 image 准沒錯!
大神做出來的 Docker Image 備有非常完整的使用說明,根據 Quick Start 的說明,可以直接使用作者貼心的準備的 docker-compose....
不曉得該怎麼替本篇內容命名文章標題,所以最後索性直接拿關鍵字當作標題,就讓我偷懶一回吧。
最後還是改了一個標題,因為之後寫的文章可有能會提到這一篇。
公司新添購了一台 Synology NAS 型號為 DS1515+,明眼人一看這型號應該就明白,這是一台可以運行 Docker 的 Synology NAS。Synology NAS 其實原本就已經可以安裝各種套件,讓使用者享受一機多用的好處。現在變本加厲能直接運行 Docker,這根本是意圖叫人不要把 NAS 當成純粹的 NAS 來使用。 (若想要查詢哪些 Synology NAS 可以運行 Docker 可以參閱 Synology 網站。)
既然廠商如此用心良苦,意圖叫人惡搞善用他們家的產品,我們當然恭敬不如從命。基本上既然可以運行 Docker,那麼其實大部分 Server 能做的事情都有機會可以轉移至 NAS 上,所以首先我便打算在上面運行一個 Container 來取代既有的 Raspberry pi。
預定的使用情境大概如下,我們有一檯 Raspberry pi 在運行 cron,它會替我們定時定期執行一些工作,工作的程式是用 php 編寫,透過 php cli 來執行。由此若要轉移這個工作,所需最簡單的環境就是一個有 php cli + cron 的 Container 即可。
因為已經有許多人分享如何在 Synology NAS 上安裝 Docker,因此本文就不再重述,只能說安裝流程非常簡單,只要滑鼠點幾下即可,沒有任何難度可言。使用 Docker 也與安裝一樣簡單,只要透過管理界面點幾下,很容易就能下載 Images,並運行 Container。
如此一來剩下的麻煩事就只有該如何做出一個有 php cli + cron 的 Container 呢?...