Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
在解決問題之道上不斷前行
手上有個舊專案準備要移植到新機器上,考慮到未來維護決定改變架構,預計要實作LXC 環境中執行docker,並且使用nfs掛載到volume中的架構。
在建置過程中遇到了一些問題,將於以下說明。
這部分就不多贅述,我們的虛擬平台使用proxmox,然後建置了LXC容器,並且在LXC容器中執行docker,到這邊都很順利。
這部分沒什麼大問題,只要將原本專案採用的系統重新用Dockerfile和docker-compose撰寫即可。
原本的專案是php-SQL常見的網站架構,考慮到維護需求,就改寫成web-SQL分離的docker-compose。
服務架起來後,因為有分散架構的規劃,我們將web server與真正的web server file拆開來,然後web server file使用NFS來掛載處理,我們的NAS使用synology牌的機器。
一開始就遇到NFS掛不上去的狀況,怎麼設定都失敗。都會跑出來權限設定錯誤之類的訊息
而當遇到掛載不上去時可以先用指令確認NFS server是否存在
$ showmount -e <NFS server host>
若服務有起來,輸入指令後應該能看到一些資訊。
檢查過後發現synology需要做幾個設定。
首先是synology的共享資料夾,不只要打開NFS機制,還需要在共享資料夾>資料夾編輯>NFS權限設定白名單IP,並且設定細節,我們是將權限全開。
接下來要打開LXC容器的特權模式,建置容器時有個unprivileged containers選項不能打勾,建置容器完後,option>featuer這邊要將NFS和FUSE打勾。
透過錯誤訊息發現還要關閉apparmor。apparmor是Ubuntu中的一個安全相關模組,需要關閉此模組才能讓NFS掛載成功。
$ sudo systemctl stop apparmor
當docker-compose up後都沒有錯誤訊息後,理論上就順利掛載上囉!我們可以用docker-compose run app bash來進去docker中檢查是否真的有掛載上。
$ docker-compose run app bash