相信Docker近幾年已經是IT與軟體開發者最常使用的一套虛擬系統了, 詳細是什麼就不多說了, 歡迎參考「📚【Docker】初探微服務時代的虛擬化技術」, 而我們使用Docker時, 有時候因為有AI的需求,需要載入別台機器的大容量模型, 但我們又不希望整個模型搬移, 浪費了兩台的空間, 這時候就我們可能會想說能不能直接將別台機器的檔案給掛載進來…, 就讓我們來實驗看看吧!
NFS (Network File System) 是一個用於在不同的計算機之間共享文件系統的網絡協議。它允許多台主機在共享網絡上訪問和共享相同的文件和目錄,就像它們本地存在一樣。這使得多台主機能夠共享數據和資源,並實現更高效的協作和數據共享。
簡單來說就是讓我們可以像存取本地目錄一樣的存取到遠端目錄。
輕量的虛擬化系統,讓我們快速啟動虛擬機,詳細請參考:
安裝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
安裝NFS套件
sudo apt-get update
sudo apt-get install nfs-common
在本地主機上創建一個目錄,用於掛載遠端目錄,例如:
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
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時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入?
歡迎加入一起練習寫作,賺取知識!