一、背景及動(dòng)機(jī)
前面一篇寫了《大數(shù)據(jù)及機(jī)器學(xué)習(xí)帶 GPU 必須干的第一件事》,心想如果不讓容器也來第一件事,怪癢癢的難受。如果你的電腦像下面一樣不支持,那就要來好好看看了:
$ docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
docker: Error response from daemon: unknown or invalid runtime name: nvidia.
See 'docker run --help'.
關(guān)鍵環(huán)境就在于 --runtime=nvidia 了,如果不解決掉這個(gè)問題,一切都是扯淡!
二、處理全過程
2.1、安裝 WSL 2
此步必須運(yùn)行 Windows 10 版本 2004 及更高版本(內(nèi)部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。
之前有重裝過很多次,有那么幾次 wsl 命令自動(dòng)帶了,要看操作系統(tǒng)了,下面檢查一下:
$ wsl -l -v
如果支持上面的命令正常打印出信息,就不用考慮安裝,如果不正常,就請如下:
$ wsl --install
安裝完成后,它默認(rèn)就是 WSL 2,可能有朋友們想要第 1 版,本文在這里不講述了,主要是 WSL 2 用了很久了,沒啥太大問題。
緊接著就安裝 Ubuntu 20.04,如果有想用最新的,可以考慮 Ubuntu 22.04。
$ wsl --install -d Ubuntu-20.04
安裝完成后,會(huì)出現(xiàn)輸入賬號(hào)和密碼,因?yàn)?root 不讓用,但不影響我們使用,設(shè)置就對了。
2.2、安裝 Docker Desktop
此步太簡單,傻瓜式安裝,點(diǎn)擊如下鏈接可前往下載,參考圖緊隨其它,如下所示:Install Docker Desktop on Windowshttps://docs.docker.com/desktop/install/windows-install/
裝完后,默認(rèn)路徑在:C:\Program Files\Docker\
一般情況下,安裝包沒有跟上最新版本,同樣也操作很多次了,直接最新,反正以后不想更新了。
2.3、開啟 Docker 的 GPU
2.3.1、正式開始
首先就像是文章開頭的那樣的,先試一下報(bào)錯(cuò):
$ docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
docker: Error response from daemon: unknown or invalid runtime name: nvidia.
See 'docker run --help'.
接著由于前面的工作到位,請使用 WSL 命令行窗口把?Ubuntu-20.04 打開:
2.3.2、安裝 nvidia 容器工具包
在該 Linux 環(huán)境下使用 Apt 方式去安裝,輸入以下命令:
$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
$ sudo apt-get update
這個(gè)時(shí)候,會(huì)發(fā)現(xiàn)第 3 條命令會(huì)出現(xiàn)錯(cuò)誤:
$ sudo apt-get install -y nvidia-container-toolkit
/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link
?沒有關(guān)系,重啟電腦吧,或者你可以用騷動(dòng)作,比如重啟 Docker Desktop,一般可以,但不保證。再次執(zhí)行,正常了!
$ sudo apt-get install -y nvidia-container-toolkit
2.3.3、配置 Docker Daemon
執(zhí)行以下命令:
$ sudo nvidia-ctk runtime configure --runtime=docker
老實(shí)說,這沒多大作用,重啟也沒有用,更好的辦法是打開 Docker Desktop 如下操作之后,再重啟:
2.3.4、完美解決
三、擴(kuò)展知識(shí)
3.1、Linux 包管理工具?Apt、Yum、Dnf 和 Zypper 有什么不同?
本文安裝的時(shí)候使用了 Apt,后面三種也是可以的,如有需要,可去官方找資料。
3.1.1、所屬發(fā)行版
- Apt (Advanced Package Tool):主要用于 Debian 及其衍生發(fā)行版,如 Ubuntu、Linux Mint 等。
- Yum (Yellowdog Updater, Modified):主要用于 Red Hat 系列發(fā)行版,如 CentOS、Fedora (早期版本)等。
- Dnf (Dandified Yum):是 Yum 的升級版,主要用于較新的 Fedora 和 Red Hat Enterprise Linux 8 及以上版本。
- Zypper:主要用于 SUSE 和 openSUSE 發(fā)行版。
3.1.2、命令語法
- Apt 使用 apt-get、apt-cache 等命令進(jìn)行包管理操作。
- Yum 和 Dnf 使用 yum 和 dnf 命令進(jìn)行包管理操作,語法基本相同。
- Zypper 使用 zypper 命令進(jìn)行包管理操作。
3.1.3、性能和速度
- Dnf 相比 Yum 有更好的性能和速度,支持并發(fā)下載和安裝包。
- Apt 和 Zypper 的性能和速度也較為優(yōu)秀。
3.1.4、依賴解析
- Apt、Yum、Dnf 和 Zypper 都能夠自動(dòng)解析和處理包的依賴關(guān)系。
- Dnf 在依賴解析方面有所改進(jìn),提供了更好的依賴解決方案。
3.1.5、軟件倉庫
不同的包管理工具使用不同的軟件倉庫配置文件和格式。
- Apt 使用 /etc/apt/sources.list 和 /etc/apt/sources.list.d 目錄下的文件。
- Yum 和 Dnf 使用 /etc/yum.repos.d 目錄下的 .repo 文件。
- Zypper 使用 /etc/zypp/repos.d 目錄下的 .repo 文件。
盡管這些包管理工具在語法和使用方面有所不同,但它們的基本功能和目的都是相似的,即方便地管理軟件包的安裝、升級和卸載等操作。選擇哪個(gè)包管理工具主要取決于你使用的 Linux 發(fā)行版。
3.2、解釋一下?nvidia 容器工具包
NVIDIA Container Toolkit 使用戶能夠構(gòu)建和運(yùn)行 GPU 加速的容器。該工具包括一個(gè)容器運(yùn)行時(shí)庫和一些實(shí)用工具,可以自動(dòng)配置容器以利用 NVIDIA GPU。
那么使用 NVIDIA Container Toolkit 時(shí)有哪些優(yōu)勢:
- 簡化了在容器中使用 NVIDIA GPU 的過程。用戶不需要手動(dòng)安裝 NVIDIA 驅(qū)動(dòng)程序或修改容器鏡像。
- 提供了一致的方式來配置和部署 GPU 加速的容器,提高了可移植性和可重復(fù)性。
- 與主流的容器運(yùn)行時(shí)和編排工具(如 Docker、Kubernetes)兼容,便于集成到現(xiàn)有的容器化工作流中。
3.3、命令行中 docker --runtime 做什么用?
是 Docker 命令行中的一個(gè)選項(xiàng),用于指定容器運(yùn)行時(shí)期。容器運(yùn)行時(shí)是負(fù)責(zé)創(chuàng)建和管理容器的底層軟件。默認(rèn)情況下,Docker 使用?runc
?作為容器運(yùn)行時(shí)。但是,通過?--runtime
?選項(xiàng),你可以指定使用其他的容器運(yùn)行時(shí),如?nvidia-container-runtime
。
當(dāng)你使用??--runtime=nvidia
? 選項(xiàng)運(yùn)行容器時(shí)期,Docker 將使用 NVIDIA Container Toolkit 提供的?nvidia-container-runtime
?作為容器運(yùn)行時(shí)期。這個(gè)特殊的運(yùn)行時(shí)會(huì)自動(dòng)配置容器,使其能夠訪問宿主機(jī)上的 NVIDIA GPU。
3.4、為什么我用了 Ubuntu?
因?yàn)槲④浀?WSL 相關(guān)文章有提及到:安裝驅(qū)動(dòng)程序后,請確保啟用 WSL?并且還要安裝基于 glibc 的發(fā)行版本(例如 Ubuntu 或 Debian)。文章來源:http://www.zghlxwxcb.cn/news/detail-846865.html
另外一個(gè)原因是 Ubuntu 使用的概率還是蠻高的,算是混個(gè)臉熟。文章來源地址http://www.zghlxwxcb.cn/news/detail-846865.html
四、參考資料
- NVidia 官方文檔站點(diǎn)
- Docker Desktop 官方站點(diǎn)
- 如何使用 WSL 在 Windows 上安裝 Linux
到了這里,關(guān)于Windows 下讓 Docker Desktop 關(guān)聯(lián)上 NVidia GPU的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!