Synology NAS 的 Docker 兩三事

在之前的文章有稍微提過,目前個人在 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.0,安裝的 Docker 版本則是 1.9.1

因為 NAS 上的 Docker 是透過「套件中心」安裝,所以安裝的路徑與啟動方式是有經過 Synology 官方精心調配,目前已知有幾個重要的位置:

docker.sock 如果你有打算使用 docker in docker,或希望在 Container 中操控 NAS 上的 Docker,那一定會需要知道 docker.sock 的位置。

docker.sock 存放的路徑是 /run/docker.sock

我目前將 GitLab 安裝在 NAS 上,就是讓 GitLab-Runner 直接操控 NAS 的 Docker 來進行 CI / CD。

docker client 會存放在 /var/packages/Docker/target/usr/bin

其他 Docker 相關檔案的位置 例如 docker pull 下載的 Image 或運行中的 Container 存放位置。

存放的路徑是 /volume1/@docker

啟動 Docker daemon 的 script NAS 上的 Docker 的啟動流程有經過 Synology 官方精心調配,一部分的原因是他們要搭配他們家的 Docker GUI,所以有一些特別的 scripts。

存放的路徑是 /var/packages/Docker/scripts

有興趣深入研究的人可以先查看 start-stop-status 這一支 script,還滿有趣的,不過如果要惡搞之前請先三思,因為個人曾經想要修改 script,最後的下場就是 Docker GUI 整個炸掉,變成只能 SSH 登入用 command line 控制 Docker,最後不得已只好整個 NAS 還原才順利修復。

貼心小提醒,這些 scripts 都有註明 # Copyright (c) 2000-2015 Synology Inc. All rights reserved.,所以自己私下偷偷的玩一玩就好,而且玩一玩很容易玩壞,所以務必自行小心處理,玩壞了請自行處理。

Docker 引起的 NAS 異常重開機

最後再提供一個使用狀況供大家參考,請參閱下面這篇在 Synology 討論區上的內容,當你充分且大量的在 NAS 上使用 Container 時,可能會發生 NAS 忽然自己重開機,並且回報發生了電力異常問題。但其實這並非電力異常,而是 Docker 或 Docker GUI 導致某種異常狀況,於是觸發 NAS 的重開機制。詳情可以參閱討論區的內容,尚不知道升級到 DSM 6.0 是否能解決此問題,但我在 DSM 5.2 上已經發生數次異常重開機的狀況,還因此搞壞了硬碟,所以此問題不容小覷啊!

更多文章