安裝Docker GPU版本的過程及遇到坑的解決
首先,安裝的 Docker 版本并不支持 GPU,因此需要安裝支持 GPU 的 Docker 版本。然而,在安裝和配置過程中,遇到了一系列問題和挑戰(zhàn)。
錯誤的安裝步驟
以下是我在嘗試安裝 GPU 版本時,執(zhí)行的錯誤操作:
# 安裝 NVIDIA 驅(qū)動 sudo apt-get update sudo apt-get install -y nvidia-driver-460 # 添加 NVIDIA 運行時配置 sudo mkdir -p /etc/systemd/system/docker.service.d sudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF [Service] ExecStart= ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=/usr/bin/nvidia EOF # 重新啟動 Docker 服務(wù) sudo systemctl daemon-reload sudo systemctl restart docker
這段腳本是根據(jù) GPT 提供的方案執(zhí)行的,但我沒有注意到它可能會導致一些問題。最終我發(fā)現(xiàn),在執(zhí)行完該腳本后,Docker 無法啟動,并且出現(xiàn)了以下錯誤:
xtx@dell-PowerEdge-R750:~$ nvidia-docker --version nvidia-docker: command not found
發(fā)現(xiàn)問題:NVIDIA 驅(qū)動安裝沖突
接下來,我發(fā)現(xiàn) nvidia-smi 無法執(zhí)行,也無法找到 NVIDIA 相關(guān)的命令。通過檢查 NVIDIA 驅(qū)動,發(fā)現(xiàn)系統(tǒng)中安裝了多個版本的 NVIDIA 驅(qū)動。
dpkg -l | grep nvidia
于是,我嘗試卸載了 nvidia-driver-460,但問題依舊存在:
sudo apt-get remove --purge nvidia-driver-460
多次嘗試卸載仍然沒有解決問題,驅(qū)動仍然有沖突。于是決定徹底清理所有 NVIDIA 驅(qū)動,并重新安裝:
# 清除所有 NVIDIA 驅(qū)動 sudo apt-get purge nvidia* # 更新包管理器 sudo apt-get update # 安裝正確版本的 NVIDIA 驅(qū)動 sudo apt-get install nvidia-driver-470 nvidia-utils-470
重新安裝驅(qū)動后,雖然成功安裝了 NVIDIA 驅(qū)動,但執(zhí)行 nvcc -V 命令時沒有任何輸出。這時我懷疑問題可能與 CUDA Toolkit 無關(guān),因為在安裝驅(qū)動時并沒有安裝 CUDA。
權(quán)限問題及解決
接下來,我檢查了 ~/.bashrc 文件,確認路徑?jīng)]有問題。然而,考慮到權(quán)限問題,我以 root 用戶身份進行檢查,發(fā)現(xiàn)沒有問題。這一步解決了驅(qū)動的問題。
安裝 Docker GPU 版本及其問題
接下來,我按照官方教程安裝 Docker 的 GPU 版本,并配置了相應(yīng)的 NVIDIA 運行時。但在啟動 Docker 時,遇到了如下錯誤:
(tx) xtx@dell-PowerEdge-R750:/data/xtx/nnUNet/nnunetv2/inference$ systemctl status docker.service
Warning: The unit file, source configuration file or drop-ins of docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
× docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/docker.service.d
└─override.conf
Active: failed (Result: exit-code) since Thu 2025-01-16 13:39:52 CST; 7min ago
TriggeredBy: × docker.socket
Docs: https://docs.docker.com
Process: 113728 ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=/usr/bin/nvidia (code=exited, status=1/FAILURE)
Main PID: 113728 (code=exited, status=1/FAILURE)
CPU: 92ms
解決問題的過程
一開始,我嘗試按照網(wǎng)上的建議修改 /etc/docker/daemon.json 文件,切換到國內(nèi)鏡像源。然而,修改后仍然報錯。接著,我打開了 override.conf 文件,發(fā)現(xiàn)最初配置中使用了 ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=/usr/bin/nvidia 這一行,而這一行實際上導致了啟動失敗。
最終,我刪除了這行配置,并重新加載并重啟了 Docker 服務(wù):
# 重新加載 systemd 配置 sudo systemctl daemon-reload # 重啟 Docker 服務(wù) sudo systemctl restart docker
此時,Docker 成功啟動,問題得到解決。
簡單總結(jié)一下
平常使用GPT習慣了,感覺簡單問題直接按照它的命令行輸入就行,沒有仔細理解該指令背后的含義,從而導致版本沖突。另外,發(fā)生問題太依賴GPT和教程了,缺少自己的反思。
再面對類似的問題時,應(yīng)該從頭逐步排除法,從系統(tǒng)配置到具體服務(wù)的每一步都要仔細檢查。解決問題的關(guān)鍵往往是細致入微的排查和多角度的分析。即便是看似簡單的操作,背后也可能隱藏著復(fù)雜的系統(tǒng)交互和配置依賴。
到此這篇關(guān)于安裝Docker GPU版本的過程及遇到坑的解決的文章就介紹到這了,更多相關(guān)安裝Docker GPU版本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker安裝運行apache2服務(wù)器做圖片服務(wù)器的方法
這篇文章主要介紹了Docker安裝運行apache2服務(wù)器做圖片服務(wù)器的方法,需要的朋友可以參考下2017-06-06
如何批量刪除Docker中已經(jīng)停止的容器的幾種方法
本文主要介紹了批量刪除Docker中已經(jīng)停止的容器的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05
docker搭建redis三主三從集群的實現(xiàn)步驟
本文主要介紹了docker搭建redis三主三從集群,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08

