在安装docker的时候遇到不少问题,还好最终圆满解决。不小心将终端关掉了,为了复现安装过程中的问题,将安装好的卸载了,重新来。
1. 卸载原有的docker
网上多有的方法:
sudo apt-get remove docker docker-engine
然后并不好使,使用下列命令卸载
sudo apt-get remove docker docker-engine docker-ce docker.io
sudo apt-get purge docker
sudo apt-get autoremove docker
sudo rm -rf /var/lib/docker
2.安装相关工具
sudo apt-get install apt-transport-https ca-certificates curl python-software-properties software-properties-common
3.安装秘钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
安装成功显示:
4.查看秘钥是否安装成功
sudo apt-key fingerprint OEBFCD88
5.添加docker官方仓库
sudo add-apt-repository "https://download.docker.com/linux/debian stretch stable"
sudo apt-get update
注:
Debian 9(“stretch”) — 当前的稳定版
Debian 8(“jessie”) — 被淘汰的稳定版
Debian 7(“wheezy”) — 被淘汰的稳定版
Debian 6.0(“squeeze”) — 被淘汰的稳定版
Debian GNU/Linux 5.0(“lenny”) — 被淘汰的稳定版
Debian GNU/Linux 4.0(“etch”) — 被淘汰的稳定版
Debian GNU/Linux 3.1(“sarge”) — 被淘汰的稳定版
Debian GNU/Linux 3.0(“woody”) — 被淘汰的稳定版
Debian GNU/Linux 2.2(“potato”) — 被淘汰的稳定版
Debian GNU/Linux 2.1(“slink”) — 被淘汰的稳定版
Debian GNU/Linux 2.0(“hamm”) — 被淘汰的稳定版
那么怎么查询自己的debian版本呢,使用如下命令
cat /etc/debian_version
我的是9.0的,所以添加官方仓命令后边是 stretch,请根据自己的版本进行修改。
但是,我的此时报错:
aptsources.distro.NoDistroTemplateException: Error: could not find a distribution template for debian/unstable
解决方案:
在源中添加该官方仓,具体操作如下
sudo gedit /etc/apt/sources.list
在该文件最后添加
deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian stretch stable
保存,保存后就不要纠结了,继续往下执行
6.查看docker-ce的版本,安装制定版本
sudo apt-cache madison docker-ce
可以看到如下结果:
说明上述添加源已经成功。
此时,安装docker
sudo apt-get install docker-ce=18.06.3~ce~3-0~debian containerd.io
此时我安装的时候就随机选择了一个版本进行安装。
7.查看安装版本信息
docker version
结果
8.设置docker非root账户
sudo gpasswd -a ${USER} docker
9.安装nvidia-docker2的秘钥
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
10.安装nvidia-docker2的仓库
curl -s -L https://nvidia.github.io/nvidia-docker/debian8/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
11.更新源
sudo apt-get update
12.查看版本
sudo apt-cache madison nvidia-docker2
sudo apt-cache madison nvidia-container-runtime
13.安装制定版本nvidia-docker2 , 以及nvidia-container-runtime
我这里选的都是第一个
sudo apt-get install nvidia-docker2=2.0.3+docker18.06.2-1
sudo apt-get install nvidia-container-runtime=2.0.0+docker18.06.2-1
此时报错了
nvidia-docker2 : 依赖: docker-ce (= 18.06.2~ce~3-0~debian) 但是 5:19.03.1~3-0~debian-stretch 正要被安装
分析原因是,docker版本不对应,查看这两项所需的docker版本为18.06.2,而我之前装的是18.06.3,怎么办,从第一步重新开始,将第6步中的安装变为:
sudo apt-get install docker-ce=18.06.2~ce~3-0~debian containerd.io
14.测试nvidia-docker2的安装是否成功
docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
对应自己的cuda版本,版本查询指令如下:
cat /usr/local/cuda/version.txt
报错:
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.real --device=all --compute --utility --pid=6747 /var/lib/docker/overlay2/f260a58c9024cd704bf51a8ae49516f6e9b62cf5c6b73d7e6917073642a79f94/merged]\\\\nnvidia-container-cli: ldcache error: open failed: /sbin/ldconfig.real: no such file or directory\\\\n\\\"\"": unknown.
解决方案如下:
- 添加库:
sudo apt-get install nvidia-opencl-common libnvidia-encode1 libnvidia-fbc1 libnvidia-ifr1 libgles1-nvidia libcuda1 nvidia-smi
- 修改/etc/nvidia-container-runtime/config.toml,
sudo gedit /etc/nvidia-container-runtime/config.toml
将ldconfig="@/sbin/ldconfig.real"注释掉
然后再测试,就可以得到正确的结果了,(如果不可以,请重启电脑后再测试,即执行代码docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi)
成功后显示:
如果报错为:
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
解决方案:运行以下两条命令:
sudo systemctl daemon-reload
sudo systemctl restart docker
然后再执行 docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
至此,安装完成!!!