[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-dockerdocker掛載nfs系統失敗與解決方式":3},{"id":4,"slug":5,"title":6,"description":7,"content":8,"date":9,"image":10,"imageAlt":6,"author":11,"categories":14,"path":18,"minRead":19},97,"dockerdocker掛載nfs系統失敗與解決方式","[Docker]Docker掛載nfs系統失敗與解決方式","Docker掛載nfs系統失敗與解決方式 手上有個舊專案準備要移植到新機器上，考慮到未來維護決定改變架構，預計 […]","\u003Ch1>Docker掛載nfs系統失敗與解決方式\u003C\u002Fh1>\n\u003Cp>手上有個舊專案準備要移植到新機器上，考慮到未來維護決定改變架構，預計要實作LXC 環境中執行docker，並且使用nfs掛載到volume中的架構。\u003Cbr \u002F>\n在建置過程中遇到了一些問題，將於以下說明。\u003C\u002Fp>\n\u003Ch2>LXC 環境\u003C\u002Fh2>\n\u003Cp>這部分就不多贅述，我們的虛擬平台使用proxmox，然後建置了\u003Ca href=\"https:\u002F\u002Fwww.wikiwand.com\u002Fzh-tw\u002FLXC\" title=\"LXC容器\">LXC容器\u003C\u002Fa>，並且在LXC容器中執行docker，到這邊都很順利。\u003C\u002Fp>\n\u003Ch2>舊專案docker化\u003C\u002Fh2>\n\u003Cp>這部分沒什麼大問題，只要將原本專案採用的系統重新用Dockerfile和docker-compose撰寫即可。\u003Cbr \u002F>\n原本的專案是php-SQL常見的網站架構，考慮到維護需求，就改寫成web-SQL分離的docker-compose。\u003C\u002Fp>\n\u003Ch2>實體網站檔案化\u003C\u002Fh2>\n\u003Cp>服務架起來後，因為有分散架構的規劃，我們將web server與真正的web server file拆開來，然後web server file使用NFS來掛載處理，我們的NAS使用synology牌的機器。\u003C\u002Fp>\n\u003Ch2>NFS掛載不上去\u003C\u002Fh2>\n\u003Cp>一開始就遇到NFS掛不上去的狀況，怎麼設定都失敗。都會跑出來權限設定錯誤之類的訊息\u003Cbr \u002F>\n而當遇到掛載不上去時可以先用指令確認NFS server是否存在\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$ showmount -e &lt;NFS server host&gt;\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>若服務有起來，輸入指令後應該能看到一些資訊。\u003Cbr \u002F>\n檢查過後發現synology需要做幾個設定。\u003Cbr \u002F>\n首先是synology的共享資料夾，不只要打開NFS機制，還需要在\u003Cstrong>\u003Cem>共享資料夾&gt;資料夾編輯&gt;NFS權限\u003C\u002Fem>\u003C\u002Fstrong>設定白名單IP，並且設定細節，我們是將權限全開。\u003C\u002Fp>\n\u003Ch2>修改LXC的模式\u003C\u002Fh2>\n\u003Cp>接下來要打開LXC容器的特權模式，建置容器時有個\u003Cstrong>\u003Cem>unprivileged containers\u003C\u002Fem>\u003C\u002Fstrong>選項不能打勾，建置容器完後，\u003Cstrong>\u003Cem>option&gt;featuer\u003C\u002Fem>\u003C\u002Fstrong>這邊要將NFS和FUSE打勾。\u003C\u002Fp>\n\u003Ch2>關閉apparmor\u003C\u002Fh2>\n\u003Cp>透過錯誤訊息發現還要關閉apparmor。\u003Ca href=\"https:\u002F\u002Fwww.linuxcapable.com\u002Fzh-TW\u002Fhow-to-enable-disable-apparmor-on-ubuntu-20-04\u002F\" title=\"apparmor\">apparmor\u003C\u002Fa>是Ubuntu中的一個安全相關模組，需要關閉此模組才能讓NFS掛載成功。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$ sudo systemctl stop apparmor\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>掛載完成\u003C\u002Fh2>\n\u003Cp>當docker-compose up後都沒有錯誤訊息後，理論上就順利掛載上囉！我們可以用\u003Cstrong>docker-compose run app bash\u003C\u002Fstrong>來進去docker中檢查是否真的有掛載上。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$ docker-compose run app bash\u003C\u002Fcode>\u003C\u002Fpre>\n","2022-08-15T10:00:38","\u002Fapi\u002Fproxy-image?url=https%3A%2F%2Fpost.billxu.net%2Fwp-content%2Fuploads%2F2022%2F07%2FDocker_Temporary_Image_Google_Blue_1080x1080_v1.webp",{"name":12,"link":13},"Chih Fan","http:\u002F\u002Fpost.billxu.net",[15],{"name":16,"slug":17},"Devops","devops","\u002Fblog\u002Fdockerdocker掛載nfs系統失敗與解決方式",1]