docker 使用GPU最简单的方式是利用nvidia-docker,然而docker 1.12.6在安装nvidia-docker2的过程中,会出现冲突:
Transaction check error:
file /etc/docker/daemon.json from install of nvidia-docker2-2.0.2-1.docker1.12.6.noarch conflicts with file from package docker-2:1.12.6-71.git3e8e77d.el7.x86_64
其实,在容器内使用GPU并不需要安装nvidia-docker2,只需要安装nvidia-container-runtime,并在/etc/docker/daemon.json中配置好,就可以了。
下面在Centos 7.4 环境下,系统已安装docker 1.12.6(安装方法见:Centos 7.4安装、配置指定版本的Docker)的情况下,安装nvidia-container-runtime,然后在容器中运行GPU。
1. 添加包repositories:
$ 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
2.搜索repositories中包含的nvidia-container-runtime版本。$ yum search --showduplicates nvidia-container-runtime
ubuntu使用:
$ apt-cache madison nvidia-container-runtime
3. 安装nvidia-container-runtime,注意加上--setopt=obsoletes=0,否则yum会自动安装更高版本的nvidia-container-runtime。
$ sudo yum --setopt=obsoletes=0 install nvidia-container-runtime-1.1.0-1.docker1.12.6.x86_64
如上图,确认版本正确,选择“y”,继续安装。
4.安装成功后还需要配置/etc/docker/daemon.json文件:
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
5.重启docker服务:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service
$ sudo systemctl status docker.service
请确定docker的status正常running。
6. 验证:
$ docker run --rm nvidia/cuda nvidia-smi
这条指令会拉取nvidia/cuda:latest的镜像,拉取的过程可能会比较长,如果本地有其他可以运行GPU的镜像,都可以用来测试。镜像下载完成后,会在容器中运行nvidia-smi指令,如果正常输出,没有报错,则安装成功。 “--rm”参数使容器退出后自动删除该任务。
参考:
[1] https://github.com/NVIDIA/nvidia-docker#quickstart
[2] https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(version-2.0)#installing-version-20
来源:CSDN
作者:shuai_wow
链接:https://blog.csdn.net/u013431916/article/details/79941796