1. 程式人生 > >CentOS下Nvidia docker 2.0之安裝教程&踩坑實錄

CentOS下Nvidia docker 2.0之安裝教程&踩坑實錄

CentOS下Nvidia docker 2.0之安裝教程&踩坑實錄

前言

本篇參考Installation (version 2.0),並記錄安裝過程所踩過的坑坑洞洞。

要求

官網裡列出了四個要求:

1. GNU/Linux x86_64 with kernel version > 3.10

使用uname -r查詢,筆者機器的結果為:

3.10.0-514.6.2.el7.x86_64

2. Docker >= 1.12

使用docker -v查詢,筆者機器的結果為:

Docker version 18.09.0, build 4d60db4

如果對Docker的版本有疑惑,或者是Docker版本太低,可以參考CentOS 7下最新版Docker CE之無腦安裝教程&踩坑實錄

3. NVIDIA GPU with Architecture > Fermi (2.1)

關於查詢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這個表格查詢。
table
表格中的四個欄位分別是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符合要求。

4. NVIDIA drivers ~= 361.93 (untested on older versions)

使用nvidia-smi查詢,筆者機器的結果為:
nvidia-smi
如果達不到這個要求,則需要更新顯示卡驅動程式,具體步驟可以參考:
(多圖)CentOS下安裝NVIDIA driver的超詳細教程

步驟

如果確認了系統、Docker版本、顯示卡Architecture及顯示卡驅動程式都滿足要求,就可以進入以下步驟:

1. 移除nvidia-docker 1.0

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

2. 設定repository

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

3. 更新repository的key

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

4. 安裝nvidia-docker 2.0

sudo yum install nvidia-docker2

5. 重新載入Docker daemon的設定

sudo pkill -SIGHUP dockerd

6. 測試安裝是否成功

docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

踩坑實錄

  1. 筆者在第三步碰到了以下錯誤:


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錯誤及解決方式檢視。

  1. 在第六步的時候又碰到了另一個錯誤:

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’.錯誤詳解檢視。

  1. 在第六步還有可能碰到另一個錯誤:

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 [email protected]/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’.錯誤詳解