1.首先安装docker,这个没有什么问题
curl -sSL https://get.daocloud.io/docker | sh
2.安装完成之后查看docker版本及其他信息
sudo docker version
注意:
在此处和以后的位置运行dockers命令的时候都需要加上sudo,否则会提示权限问题,是因为我们在安装docker的时候没有添加当前用户到dockers组。
注意下图版本应该是18.05.0-ce,我们在安装nvidia-docker 的时候会遇到版本问题
3.一般教程现在通常会运行一个hello-world来查看docker效果,但是我们先获取docker加速,这样的话,速度会快很多,不然会遇到很多因为网速的问题,而拉取镜像失败的情况。将以下配置信息直接复制在终端,会自动写入配置文件中。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://oyukeh0j.mirror.aliyuncs.com"]
}
EOF
然后再用下面的命令重启docker服务。
sudo /etc/init.d/docker restart
4.拉取并运行镜像hello-world
sudo docker pull hello-world
sudo docker run hello-world
小结:docker的安装和测试就完成了,但是需要构造一个gpu加速的深度学习docker容器,基本上是想到安装nvidia-docker,当然我的意思是你的是nvidia的显卡才行,中间还包含了一些检测显卡信息的操作。一开始在安装nvidia-docker2的时候遇到了一些问题,由于不熟悉,所以一直没有整明白,放弃安装nvidia-docker2的版本,直接装了版本1,这个完全没问题。但是不知道版本1会不会对其他的新版本不支持,总之后来又重新装上了nvidia-docker2。
5.安装nvidia-docker2版本。
官方教程信息
当然一开始本来就是不懂,看到安装的命令就直接安装,然后遇到定位不到包的信息时,再仔细看的时候才知道需要添加repository。
sudo apt-get install -y nvidia-docker2
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
sudo apt-get update
这个时候就按照教程一步一步来打算用apt-get方式获取,再重新加载docker daemon configuration。注意有说到在安装docker2的时候会覆盖以前有的配置文件,当然现在什么是配置信息,我肯定是不知道的。
sudo apt-get install -y nvidia-docker2
然而,又遇到了问题.
这个是docker-ce的版本需要为18.03.1而我们的docker版本是18.05.0。
看下直接安装是不行的。
解决的办法是卸载原来的docker-ce,安装相应的版本。最后查看一下安装版本情况。中间可能还有写其他的依赖需要卸载和安装。但是照着这个想法来就行。
重新安装,发现ok,不过里面的一些选项不太懂,所以直接以默认的方式确认了。可能后面因为这个出了点问题也不知道。
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
6.尝试运行检测nvidia-docker2是否正常,通常别人的教程在这个时候就结束了没有问题,结果我又出问题了,我能说什么。
查了一下 是nvidia run time没有注册,注册,这么高大的东西,一开始当然不懂,别人教程的时候就不出这个问题好吗。
还是前面提到过的配置文件,应该是被写坏了,当时写了一个加速的配置进去,结果配置文件里就只有那个加速的。将以下内容添加到配置文件中,为了不出什么问题,我直接把加速给删了。
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
再查看显卡信息正常。
.如果一切都不出问题,总的就是如其他教程那样几个命令步骤下来就行,但是我怎么就出现了问题呢?怎么就别人都不会出现问题的地方出问题呢?对Linux不是很熟悉的我,出了这个那个问题,出问题的原因不一样,网上各种教程方法也不一定刚好解决,结果就全乱了,多少次我最想做的就是重装系统。