这篇文章写于2020.09.21日
所做的项目无法连接外网,所有导致很多东西没有办法升级和更新。所以,就用了已经被官方放弃的nvidia-docker 1.0 来启动docker 镜像。
安装的相关软件的情况说明
ubuntu 16.04 lts
显卡驱动:NVIDIA-Linux-x86_64-440.82.run(安装显卡驱动的时候,也遇到一些问题,后面会补充)
Docker:18.06.3~ce
docker-compose:1.25.0
nvidia-docker1
nvidia-container-runtime:按照操作指南安装的,具体什么版本还真的不知道了
安装细则
重点记录下docker,docker-compose,nvidia-docker1,nvidia-container-runtime的安装以及docker-compose.yml文件内部该如何配置以启动容器的时候,可以让容器使用GPU。
Docker
移除原有的老版本的Dokcer
$ sudo apt-get remove docker docker-engine docker-ce docker.io
安装以下包以使apt可以通过HTTPS使用存储库(repository)
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
添加Docker官方的GPG密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
使用下面的命令来设置stable存储库(我也不知道这是干嘛的):
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
更新下索引包:
$ sudo apt-get update
如果安装最新版本的Dokcer,执行:
$ sudo apt-get install -y docker-ce
如果安装指定版本的Dokcer,执行下面一系列指令:
#这行命令是用于获取docker的版本列表
$sudo apt-cache madison docker-ce
#列表内容如下
docker-ce | 5:19.03.12~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:19.03.11~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:19.03.10~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:19.03.9~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:19.03.8~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:19.03.7~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:19.03.6~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:19.03.5~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:19.03.4~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:19.03.3~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:19.03.2~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:19.03.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:19.03.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.9~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.8~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.7~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.6~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.5~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.4~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.3~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.2~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.3~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.2~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.0~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.03.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.03.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.12.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.12.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.09.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.09.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.06.2~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.06.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.06.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.03.3~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.03.2~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
#安装指定版本docker sudo apt-get install docker-ce=<VERSION>
$sudo apt-get install docker-ce=18.06.3~ce~3-0~ubuntu
docker-compose
官方镜像:
#1.24.1 可以替换成你想要的版本,比如,我就替换成了1.25.0
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
但是,官方镜像往往速度较慢,甚至连接不上,所以,我们要使用国内镜像:
#版本的处理方式同官方镜像
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
安装完毕后,验证docker-compose 是否安装完成
docker-compose --version
#如果安装成功,会打印出docker-compose的版本信息,例如:
docker-compose version 1.25.0, build 0a186604
nvidia-docker1 与nvidia-container-runtime
对于nvidia-docker1与nvidia-container-runtime 的理解,我现在的认识有且只有,如果我想通过nvidia-docker1 启动docker-compose 的话,就必须安装这两个东西,并加以配置。
nvidia-docker官方仓库wiki(nvidia-docker1 已被放弃,所以相关介绍在wiki中:github.com/NVIDIA/nvid…
nvidia-container-runtime 的官方仓库为:github.com/NVIDIA/nvid…
安装nvidia-docker1和nvidia-container-runtiem前先要安装的内容
安装相关的库
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
有两步我不太明白的操作,但是我都执行了
For pre-releases, you need to enable the experimental repos of all dependencies(这句话该怎么翻译?)
sudo sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
To later disable the experimental repos of all dependencies, you can run(这句话又该怎么翻译?)
sudo sed -i -e '/experimental/ s/^/#/g' /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
安装nvidia-docker1 与nvidia-container-runtime
#安装nvidia-docker1
sudo apt-get install nvidia-docker
#安装nvidia-container-runtime
sudo apt-get install nvidia-container-runtime
nvidia-docker与nvidia-container-runtime的相关配置
这个配置应该是添加nvidia-docker 与nvidia-container-runtime 的关联,有两种方法:Syetemd drop-in file 和 Daemon configration file(该怎么翻译,我并不知道)。
Systemd drop-in file
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Daemon configuration file
sudo tee /etc/docker/daemon.json <<EOF
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
EOF
sudo pkill -SIGHUP dockerd
docker-compose.yml 里面改如何写?
version: '2.3'
services:
nodeserver:
image: node:10.16.3
runtime: nvidia
enviroment:
- NVIDIA_VISIBLE_DEVICES=all