DOCKER其實也是虛擬化的應用, 但它佔用主機的資源更小, 並以單一應用為一單一容器為主, 因此它是所謂的micro service,中文應該是翻成微服務的應用
以下是CHATGPT對DOCKER的說明
Synology 內建有docker 的應用可以下載..安裝完之後, 並可在其倉庫里選用想使用的微服務應用, 比如我們此例的OTRS. 之前介紹OTRS的文章,即是使用此DOCKER的應用安裝的…可以看到不同人或單位編譯的微服務命名會不同, 比如此次我選用的是juanluisbaptiste開頭為主的, 要把OTRS服務完整安裝完則需兩個,一個AP, 一個MARIADB.它後台資料庫也是獨立的一個容器.
DOCKER微服務的應用,有一優勢,便是易於遷移, 這也是我寫此文的原因之一,本來我也想, 既然它是容器, 基本在SYNOLOGY DOCKER里的環境一致, 所以至少在SYNOLOGY 不同NAS間部署應該很快,很容易嘛, 應該匯出再匯入就一切搞定, 但似乎未必如此,至少以這個OTRS為例,不是那樣,但也或許和容器的提供者編譯的環境有關..
我們先看看CHATGPT如何說明DOCKER的優缺點,如下截圖
就以此回我安裝OTRS遇上的問題, 我驗證了三四次, 有點奇怪也有點不解,但結果便是AP匯出匯入OK, 但DB整備完OTRS資料庫後,做了完整匯出後,每回進入console檢查,都沒有otrs資料庫, 變成我要自己進DB的容器,將OTRS的DB匯出成.sql的備份檔, 再到另一NAS上匯入的容器里,手動匯入.sql的DB備份才OK.
SYNOLOGY DOCKER的匯入匯出功能,就在設定選單里,操作很簡單
另外要特別注意的一點便是網路環境, SYNOLOGY DOCKER內定都使用172.17.0.0/16的網段,而且容器內使用的IP是自動配發的, NAS本身使用172.17.0.1, 其它容器似乎就按先後順序,依序由.2, .3依次配發, 在我原NAS的環境, OTRS AP是172.17.0.4, DB是172.17.0.3, 在部署到不同的NAS上時, 其實最主要是DB的IP, 要能被AP找到,否則應用服務會因為找不到DB而無法運作, 我試著先IMPORT AP, 然後在AP上變更環境變數參數更改DB 指向IP,但似乎無用, 此AP應有其它系統或參數將IP定死在172.17.0.3了, 所以需要保證DB在原172.17.0.3
如果懶的重新安排網路,保持原IP,似乎是較有利的選擇,但若是你在一複雜環境內在不同NAS里移動時,若遷移過去的NAS已有許多容器,便不太容易了,就必須回頭變更相關OTRS內部設定, 可能重頭開始安裝還快一點..
若是為了安排原DB容器的網路IP, 即便刪除了容器, 其原有IP還是沒空出來,可以登入NAS的CONSOLE,執行以下指令,強迫DOCKER立刻騰出IP.
docker network prune
另外, 因為完整匯出DB容器,不知為何,OTRS資料庫都不會被匯出,所以在原NAS上得進行匯出MARIADB的SQL備份, 此匯出也會遇上幾個問題..
1.使用MYSQLDUMP匯出時,系統會抱怨不是UTF-8環境, 它的BASH SHELL內定是ANSI啥的..如截圖,可使用指令locale charmap檢查, 使用locale -a 可以列出目前容器支援的列表
2. 執行export LC_CTYPE=en_US.UTF-8 時,若出現錯誤, 就得安裝其套件,使用指令apt–get install language–pack–en 安裝, 最後需確定此BASH環境能跑UTF-8才能順利匯出MARIADB DB備份
以下為我原NAS上的容器列表,
以下為由原NAS IMPORT匯入到新NAS上的DOKER的容器列表
docker 的內部網路一般是封閉環境, 那也意指外部用戶要使用它時,其實要用NAS的真實IP, NAT進內部容器的封閉網路,這個設定在容器的LOCAL PORT設定上, 但需注意, 若你安裝後放著不管,它一般是AUTO, 每次開關後它會自動跳動, 意思是這回開機它用49182 PORT好了, 下一回開機你會看到它用49183去了.這似乎不利於提供給外部用戶使用, 我舉一個我未開機的容器為例, 你會看到它都是AUTO
你需要將AUTO變更成固定的PORT,但需注意不能與其它容器使用的LOCALPORT重覆.
我的環境便是使用49182 , 那麼用戶連接時便是使用你NAS的IP:49182來連入
其實我覺得嘛, DOCKER是能節省點資源, 但它的學習曲線是有的, 需要點時間搞定它..