docker 1.12.6 使用GPU

  • Post author:
  • Post category:其他


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

[3]

https://github.com/NVIDIA/nvidia-docker/issues/670



版权声明:本文为u013431916原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。