我是ubuntu 20.04,直接按照网上的教程,失败,很郁闷,还好,最后解决了,但是在这过程中,发现一个问题:最初遇到问题,然后百度,百度上找到的教程解决不了,然后才开始思考教程中每一步的含义,最后才开始想有没有办法曲线救国的路线解决这些问题。网上教程很多,我就直接拿他们的教程,然后提供我的解决方案。
首先,安装docker-ce,这一步我没有遇到问题,所以直接借用他人的命令:
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
#启动docker
$ sudo systemctl enable docker
$ sudo systemctl start docker
如果使用以上命令,没有成功,大家自行再找教程。
好了,接下来,才是重点了,我们开始试图安装nvidia-docker,首先,加源:
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
理想很美好,但是很可惜,在我执行:
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
这一步直接报错,他提示我gpg找不到
gpg: 找不到有效的 OpenPGP 数据。
你如果也遇到这种报错,不要往后面尝试了,行不通的。我们要首先解决这个报错。
那么,这个报错咋解决呢,我也是借鉴的其他人类似的解决方法,我们直接打开:
https://nvidia.github.io/nvidia-docker/gpgkey
当这个网站打开后,他会自动提示你下载一个文件,将这个文件下载后放到你想放到的位置,然后执行:
sudo apt-key add xxxxx #这里xxx指的是你上面下载的文件的目录
如果顺利,执行上面命令后会返回ok,接下来,我们可以执行下面两行了:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
执行这两行之后,可能不会报错,但是当执行apt-get update这行命令之后,你会发现https://nvidia.github.io/nvidia-docker/ubuntu18.04/amd64 这种网站并没有更新到软件源里面,怎么会造成这种情况呢?
这时候,我们打开/etc/apt/sources.list.d/nvidia-docker.list这个文件,我们会发现这个文件里面是空的,这就是问题所在,tee这个命令没有把我们想要的东西写到文件里面。然后我百度了以下distribution=$(. /etc/os-release;echo I D ID IDVERSION_ID)命令的含义,又看了以下别人类似问题的解决方案,于是,我把https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list 改为https://nvidia.github.io/nvidia-docker/ubuntu18.04/nvidia-docker.list,直接打开这个网站,复制网站上的内容到nvidia-docker.list这个文件,然后再执行apt-get update这个命令,ok,新网站加进去了。
然后,我们执行
sudo apt-get install -y nvidia-container-toolkit
我当时执行的是下面这个:
sudo apt-get install -y nvidia-docker2
但是最后好像还是安装的nvidia-container-toolkit,所以你们直接执行上面那个命令吧。
如果顺利,你就安装好了,但是我不顺利,安装过程,提示我
错误:1 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64 libnvidia-container1 1.3.0-1
Could not handshake: Error in the pull function. [IP: 185.199.108.153 443]
E: 无法下载 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64/./libnvidia-container1_1.3.0-1_amd64.deb Could not handshake: Error in the pull function. [IP: 185.199.108.153 443]
E: 有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?
我就直接将上面报错的网站尝试性的打开,打开后就提示我下载,是个deb包,我下载后安装,安装后再执行
sudo apt-get install -y nvidia-docker2
终于没报错,搞定了。
最后,重启docker,然后pull下一个镜像测试,命令如下:
sudo systemctl restart docker
sudo docker run --gpus all nvidia/cuda:10.0-base nvidia-smi
当镜像pull下来之后,输出:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.100 Driver Version: 440.100 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 2060 Off | 00000000:26:00.0 On | N/A |
| 0% 39C P8 13W / 160W | 526MiB / 5926MiB | 3% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+
搞定! 因为过程挺艰难,故写下来,以免下次还遇到这问题。
2020.11.18