【Docker】如何掛載遠端主機目錄? NFS Volume

更新於 發佈於 閱讀時間約 3 分鐘

相信Docker近幾年已經是IT與軟體開發者最常使用的一套虛擬系統了, 詳細是什麼就不多說了, 歡迎參考「📚【Docker】初探微服務時代的虛擬化技術」, 而我們使用Docker時, 有時候因為有AI的需求,需要載入別台機器的大容量模型, 但我們又不希望整個模型搬移, 浪費了兩台的空間, 這時候就我們可能會想說能不能直接將別台機器的檔案給掛載進來…, 就讓我們來實驗看看吧!

在進行操作之前有幾個元件需要先有個基本概念…

圖片來源

圖片來源

NFS

NFS (Network File System) 是一個用於在不同的計算機之間共享文件系統的網絡協議。它允許多台主機在共享網絡上訪問和共享相同的文件和目錄,就像它們本地存在一樣。這使得多台主機能夠共享數據和資源,並實現更高效的協作和數據共享。

簡單來說就是讓我們可以像存取本地目錄一樣的存取到遠端目錄。

Docker

輕量的虛擬化系統,讓我們快速啟動虛擬機,詳細請參考:

📚【Docker】初探微服務時代的虛擬化技術

怎麼做?

伺服端

安裝NFS服務

sudo apt-get update
sudo apt-get install nfs-kernel-server

編輯 /etc/exports 檔案並新增要共享的目錄,例如:

# 這裡代表將目錄共享給本地端IP
# rw代表可讀可寫
${需共享的目錄} ${欲共享的主機}(rw,sync,no_subtree_check)

重啟NFS服務

sudo service nfs-kernel-server restart

Client端

安裝NFS套件

sudo apt-get update
sudo apt-get install nfs-common

純Docker

在本地主機上創建一個目錄,用於掛載遠端目錄,例如:

sudo mkdir -p /mnt/${掛載的目錄名稱}

掛載遠端目錄到本地主機

sudo mount -t nfs REMOTE_HOST_IP:/path/on/remote/host /path/on/local/host

將遠端掛載目錄用volume的方式掛載到容器之中。

docker run -v /path/on/local/host:/path/in/container image_name

假如你是用docker compose來管理容器的話

version: '3'
services:
your_service:
image: your_image
volumes:
- nfsmount:/path/in/container
volumes:
nfsmount:
driver: local
driver_opts:
type: nfs
o: addr=${REMOTE_HOST_IP},nolock,soft,rw
device: ":/path/on/remote/host"

P.S 小技巧, 如果怎麼樣都掛載不成功, 可以先從本機目錄開始掛載起, 掛載完畢後, docker這一端就直接掛載本地目錄即可。

結語

大功告成, 透過簡單的遠端掛載, 可以讓我們有效利用空間減少硬體成本, 設計一台遠端機器效能不必太好,專門提供掛載空間, 而另一台機器則是算力強大的AI訓練機, 我們也不必頻繁的搬移模型, 只要透過掛載的方式, 那麼進行模型載入當下再進行傳輸即可, 不過也是有缺陷的, 就是初期載入較為久一點,畢竟是大模型啊…。

喜歡撰寫文章的你,不妨來了解一下:

Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入?

歡迎加入一起練習寫作,賺取知識!

留言
avatar-img
留言分享你的想法!
avatar-img
阿Han的沙龍
129會員
286內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2024/12/04
當我們在Ubuntu下載 cursor 這套編輯工具並進行以下步驟安裝時: sudo apt-get install libfuse2 chmod +x cursor-0.42.5x86_64.AppImage ./cursor-0.42.4x86_64.AppImage sudo mv
Thumbnail
2024/12/04
當我們在Ubuntu下載 cursor 這套編輯工具並進行以下步驟安裝時: sudo apt-get install libfuse2 chmod +x cursor-0.42.5x86_64.AppImage ./cursor-0.42.4x86_64.AppImage sudo mv
Thumbnail
2024/06/25
咦! 怎麼啟動個docker compose up -d就出現了可疑的訊息: +] Running 2/2d orphan containers ([xxxx]) for this project. If you removed or renamed this service in your
Thumbnail
2024/06/25
咦! 怎麼啟動個docker compose up -d就出現了可疑的訊息: +] Running 2/2d orphan containers ([xxxx]) for this project. If you removed or renamed this service in your
Thumbnail
2023/12/19
情境描述 小明身為Linux系統工程師, 目前接到一個緊急任務, 需要在客戶端確保csv表的某個欄位的值不能重複, 對於軟體工程師來說只要寫個程式就能夠解決, 但客戶端並沒有相關的程式語言啊! 這時候只能夠使用現成的工具來完成,而經驗老道的我們很快就想到了解決方法, 不要急, 就讓我們一步
Thumbnail
2023/12/19
情境描述 小明身為Linux系統工程師, 目前接到一個緊急任務, 需要在客戶端確保csv表的某個欄位的值不能重複, 對於軟體工程師來說只要寫個程式就能夠解決, 但客戶端並沒有相關的程式語言啊! 這時候只能夠使用現成的工具來完成,而經驗老道的我們很快就想到了解決方法, 不要急, 就讓我們一步
Thumbnail
看更多