本篇參考Installation (version 2.0),並記錄安裝過程所踩過的坑坑洞洞。
官網裡列出了四個要求:
使用uname -r
查詢,筆者機器的結果為:
3.10.0-514.6.2.el7.x86_64
使用docker -v
查詢,筆者機器的結果為:
Docker version 18.09.0, build 4d60db4
如果對Docker的版本有疑惑,或者是Docker版本太低,可以參考CentOS 7下最新版Docker CE之無腦安裝教程&踩坑實錄。
關於查詢NVIDIA GPU architecture的方法,筆者試過到Nvidia的官網查,或是看有沒有linux指令可以查詢,但是都沒有找到。最後才在維基百科上看到一個完整列出各architecture下的GPU GeForce型號的表格。
先使用nvidia-smi -L
這個指令找到顯卡的GeForce版本,結果如下:
GPU 0: GeForce GTX 1080 (UUID: GPU-5ee9e385-7299-d14b-e94c-288298ae5234)
GPU 1: GeForce GTX 1080 (UUID: GPU-2d0c6c1e-0b17-3428-f42b-7ef5ffab32e8)
然後再去維基百科的CUDA頁面中的GPUs supported這個表格查詢。
表格中的四個欄位分別是Compute capability(version),Micro-architecture,GPUs及GeForce。
可以從GeForce這個欄位(第四欄)找出自己的GPU,然後再回頭看它的Micro-architecture。
筆者GPU的GeForce版本是GTX 1080,所以它的micro-architecture是Pascal。
而Compute capability的順序是Turing > Volta > Pascal > Maxwell > Kepler > Fermi > Tesla。
所以筆者的GPU符合要求。
使用nvidia-smi
查詢,筆者機器的結果為:
如果達不到這個要求,則需要更新顯卡驅動程式,具體步驟可以參考:
(多圖)CentOS下安裝NVIDIA driver的超詳細教程。
如果確認了系統、Docker版本、顯卡Architecture及顯卡驅動程式都滿足要求,就可以進入以下步驟:
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo yum remove nvidia-docker
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | \
sudo tee /etc/yum.repos.d/nvidia-docker.repo
DIST=$(sed -n 's/releasever=//p' /etc/yum.conf)
DIST=${DIST:-$(. /etc/os-release; echo $VERSION_ID)}
sudo rpm -e gpg-pubkey-f796ecb0
sudo gpg --homedir /var/lib/yum/repos/$(uname -m)/$DIST/nvidia-docker/gpgdir --delete-key f796ecb0
sudo yum makecache
sudo yum install nvidia-docker2
sudo pkill -SIGHUP dockerd
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
…
https://nvidia.github.io/libnvidia-container/centos7/x86_64/repodata/dfe68d28fb587013c513050804570d27a4afa8104da395bdf795eb232c55719c89554627972f78d0c7fabb372f2c219e6f54e12e73d77e825853a880d98800f3-filelists.xml.xz: [Errno 14] HTTPS Error 404 - Not Found
如果碰到同樣的錯誤,可以前往CentOS下安裝Nvidia docker 2.0:[Errno 256] No more mirrors to try錯誤及解決方式查看。
docker: Error response from daemon: Unknown runtime specified nvidia.
See ‘docker run --help’.
如果碰到同樣的錯誤,可以前往docker: Error response from daemon: Unknown runtime specified nvidia. See ‘docker run --help’.錯誤詳解查看。
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused “process_linux.go:402: container init caused “process_linux.go:385: running prestart hook 1 caused \“error running hook: exit status 1, stdout: , stderr: exec command: [/usr/bin/nvidia-container-cli --load-kmods configure --ldconfig=@/sbin/ldconfig --device=0,1 --compute --utility --require=cuda>=8.0 --pid=4693 /var/lib/docker/overlay/e70cf536e76f503847825ad1bb8cbfca5a03466bf36be4148e9fe6659e85c2b9/merged]\\nnvidia-container-cli: initialization error: cuda error: no cuda-capable device is detected\\n\”””: unknown.
用nvidia-smi
,出現:
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
這代表需要安裝Nvidia driver,(多圖)CentOS下安裝NVIDIA driver的超詳細教程有詳細的教學。
Installation (version 2.0)
CentOS 7下最新版Docker CE之無腦安裝教程&踩坑實錄
維基百科的CUDA頁面
(多圖)CentOS下安裝NVIDIA driver的超詳細教程
CentOS下安裝Nvidia docker 2.0:[Errno 256] No more mirrors to try錯誤及解決方式
docker: Error response from daemon: Unknown runtime specified nvidia. See ‘docker run --help’.錯誤詳解