起因,DSM 7.x 版只要重啟開機後,原啟動正常 Docker 容器在網址與 Port 號,會回應出 404 與錯誤訊息

升上 DSM 7.x 版後,近日來發現一個問題,原在 DSM 6 使用的 Docker 服務,確因為有設定關關機排程後,原有設定好的網址對應服務,確出現 404 與錯誤訊息。

以 youtube-dl-server 使用容器為例,會因為系統啟動後,將外接 USB 碟的儲存空間,因為找不到路徑而產生錯誤回應,因此服務自然無法運行。

因為這個錯誤與問題,將整個主機啟動系統的過程與設定調整,發現到只要是重開機進入到 DSM 7 的系統後,原本先前因關機前運行動正常的 Docker 容器服務,在系統重啟後顯示正常運行的綠燈,但在到 Web Station 套件的網頁入口查看後,狀態顯示正常但點按連結後確被導向 404,容器的 Port 號對向 Web Station 對外所自訂的 Port 號的連結過程中,向是出現了問題,反覆對應不同設定後問題還是一樣,都會連向 404 回應頁。


SSH 連結主機與 Docker 基本指令

因為還是會使用到服務,會每次都要去 container manager 套件中手動先關閉後再啟動容器。

手動的動啟很麻煩,思考處理方式整理如下。

登入 synology SSH 連線,登入帳號名稱為預設 admin,輸入後接著需要再輸入密碼。

切換到最高權全 root 身分,在次輸入密碼之後終端機開頭就會是 root@<NasName>

查容器資訊,會印出容器對應 id 與名稱等資訊,這裡接著會用容器名稱處理。

要啟動單一的容器服務名稱 kmb32123-youtube-dl-server,使用的指令如下。

一次操作多個容器名稱,例如 kmb32123-youtube-dl-server 加上 jellyfin-jellyfin 二個服務,指令如下。

在終端機以 SSH 連上主機後,所操作 Docker 的指令大約如此。

如果會要在一段指令後,執行關閉容器後接著重新開啟容器,可以使用 && 邏輯運算子連接,意指 stop 指令執行完成後,接著執行 start。


DSM 7 設定任務排程:開關機觸發自定義指令

前往 DSM 控製台 > 任務排程表,點按新增收閤選單下的觸發任務 > 使用者自定義指令碼。

針對開機或是關機事件,指令任務名稱,會需要特別設定使用者帳號,以 root 的權限執行設定。

開關機執行完成時,會觸發執行下面的自定義指令,在輸入框中輸入指令。

關機執行自定義指令如下。

指令片段說明如下:

  • sudo -i:以超級使用者的權限 root 執行指令。
  • sleep 90;:以延遲 90秒 的方式執行,運行後會等待 90 秒後才會執行後面的指令。

資料來源