Docker容器中使用Nvidia GPU報錯 docker: Error response from daemon: could not select device driver “” with capabilities: [[gpu]].
問題出現
我們知道,想要在 docker19 及之后的版本中使用 nvidia gpu 已經不需要單獨安裝 nvidia-docker 了,這已經被集成到了 docker 中。
相必大家也知道,要使用宿主機的 GPU,需要在 docker run
的時候添加 --gpus [xxx]
參數。但是,在我們剛剛安裝好 docker 并構建好鏡像之后,直接這樣運行是有問題的,即:
docker run -it --gpus all image_name:tag_name
會出現如題報錯:
docker: Error response from daemon: could not select device driver “” with capabilities: [[gpu]].
解決方案
實際上,我們在通過 --gpus
參數來使用宿主機的 GPU 時,需要先安裝一個英偉達的容器運行時。
另外需要注意的是,這個東西是不能直接 apt install,會報找不到該軟件,需要先添加英偉達的 apt 軟件源。具體操作步驟如下:
1 添加源
將下面的腳本放到任意位置,
# nvidia-container-runtime-script.shsudo curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
sudo curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update
并執行:
sudo sh nvidia-container-runtime-script.sh
會得到類似如下輸出:
OK
deb https://nvidia.github.io/libnvidia-container/ubuntu18.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-container-runtime/ubuntu18.04/$(ARCH) /
Hit:1 http://archive.canonical.com/ubuntu bionic InRelease
Get:2 https://nvidia.github.io/libnvidia-container/ubuntu18.04/amd64 InRelease [1139 B]
Get:3 https://nvidia.github.io/nvidia-container-runtime/ubuntu18.04/amd64 InRelease [1136 B]
Hit:4 http://security.ubuntu.com/ubuntu bionic-security InRelease
Get:5 https://nvidia.github.io/libnvidia-container/ubuntu18.04/amd64 Packages [4076 B]
Get:6 https://nvidia.github.io/nvidia-container-runtime/ubuntu18.04/amd64 Packages [3084 B]
Hit:7 http://us-east4-c.gce.clouds.archive.ubuntu.com/ubuntu bionic InRelease
Hit:8 http://us-east4-c.gce.clouds.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:9 http://us-east4-c.gce.clouds.archive.ubuntu.com/ubuntu bionic-backports InRelease
Fetched 9435 B in 1s (17.8 kB/s)
Reading package lists... Done
2 安裝
經過第一步之后,英偉達的軟件源就已經添加好了,接下來直接 apt 安裝就行了:
sudo apt-get install nvidia-container-runtime
安裝完成后驗證一下,輸入:
which nvidia-container-runtime
應當得到輸出:
/usr/bin/nvidia-container-runtime
這就表明該軟件已經正常安裝好了。
3 運行容器
安裝好之后,就可以運行我們帶 GPU 的容器了:
docker run -it --gpus all image_name:tag_name
此時不會報錯,正常進入容器。
4 選定GPU編號
如果需要指定某個 GPU 編號,規范還是很嚴格的,筆者親測下面這種格式是可以的:
docker run -it --gpus '"device=0,2"' --shm-size 32g image_name:tag_name
Ref:
https://blog.csdn.net/BigData_Mining/article/details/104991349