由于默认安装的docker都是基于cpu版本的,如果想要配合GPU进行一些简单的部署的话,则需要安装nvidia-docker来结合使用。想要安装nvidia-docker版本,前提需要你的硬件支持gpu加速(nvidia系列),同时先安装好了nvidia驱动和cuda以及cudnn和docker基础版,接下来需要做的如下(以下是基于ubuntu18.04进行安装的docker-ce基础上进行安装,如果是centos请参考Centos7下安装Docker(详细安装教程)_u014069688的博客-CSDN博客_centos7安装docker):

(1)配置

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -   ##获取gpg密钥并添加密钥
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu18.04/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list  ##获取ubuntu18.04版本的nvidia-docker列表,结果返回给标准输出
sudo apt-get update

如果是ubuntu其他版本,将上面18.04换成对应版本即可。

(2)安装

sudo apt-get install nvidia-docker2   ###ubuntu安装,centos则换成yum search --showduplicates nvidia-docker,yum install nvidia-docker:xxx
sudo pkill -SIGHUP dockerd    ###重新加载docker守护进程配置
sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi  ###测试

如果测试出现了error,极有可能是新的cuda与系统内核版本不匹配了,可以尝试指定cuda版本信息即可。

sudo nvidia-docker run --rm nvidia/cuda:10.0-devel nvidia-smi
或者
docker run --rm --gpus all nvidia/cuda:11.0.3-base nvidia-smi

或者去以下网址查阅随便拉取一个基础带cuda的镜像

https://gitlab.com/nvidia/container-images/cuda/blob/master/doc/supported-tags.md

如果还是一直出现找不到对应镜像,则可以考虑换源来试试,方法查看前几篇docker推文。

(3)使用

可以单独安装指定版本的tf-gpu包信息

docker run --runtime=nvidia -it --rm tensorflow/tensorflow:1.14.0-gpu-py3  ###安装tf-gpu:1.14

也可以先配置好cuda等,然后再依次配置好各种需要的库,最后再commit成最终的项目镜像。以配置tf-gpu:1.14版为例,

sudo nvidia-docker run -it  nvidia/cuda:10.0-base  ###如果没有安装cuda10.0会先自动下载,然后再进入
apt install cuda-toolkit-10-0  ###官方拉取的镜像不完整,需要进行这一步

###进入/usr/local/cuda-10-0下查看文件是否齐全,有没有bin文件,然后再将cuda添加到环境变量中,同时需要安装配置cudnn,完成整体环境配置

####由于配置的cuda环境很简陋,需要自己配置python和pip
apt-get install python3-pip

###然后利用pip3进行包的安装
pip3 install tensorflow-gpu==1.14 -i https://pypi.douban.com/simple

###将安装好的打包成新的镜像
nvidia-docker ps -a
nvidia-docker commit 容器id 新的镜像

后来在网上又找到一种新的方法,直接配置一个带有cuda和cudnn的Linux环境,然后再依次添加需要的库

docker pull nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04

需要着重说明的一点就是启动带gpu的镜像需要用下面的方式

sudo nvidia-docker run -it xxx_id  ###而不是sudo docker run -it xxx_id !!!!

补:

在使用nvidia-docker时如果出现了如下错误解决方案如下:

  • fork/exec /usr/bin/nvidia-container-runtime: no such file or directory: unknown

原因:没有安装nvidia-container-runtime包,直接apt install安装即可

  • docker: Error response from daemon: Unknown runtime specified nvidia

原因:nvidia runtime没有注册,用--runtime选项会报错,修改daemon.json即可

vi /etc/docker/daemon.json

{
   "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"],
  "insecure-registries": ["registry.test.cn"],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "live-restore": true,
  "metrics-addr": "0.0.0.0:9323",
  "default-runtime": "nvidia",
  "experimental": true,
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

然后重启docker服务即可

sudo systemctl daemon-reload
sudo systemctl restart docker

但是,自 Docker 19.03 版本以及 NVIDIA Container Toolkit(前身为 NVIDIA Docker)的引入,你可以使用 docker run 命令的 --gpus 标志来直接在容器内启用 GPU 支持。也就是`docker run --gpus` 不需要安装 `nvidia-docker`。`docker run --gpus` 是 Docker 19.03 版本及更高版本中的一项原生功能,用于启用容器内的 NVIDIA GPU 支持。它不依赖于额外的 `nvidia-docker` 工具。 要使用 `docker run --gpus`,你需要满足以下要求:

1. 安装 NVIDIA 驱动:确保你的系统上安装了适当版本的 NVIDIA GPU 驱动。

2. 安装 NVIDIA Container Toolkit:你需要安装 NVIDIA Container Toolkit,它是一个用于与 Docker 集成的工具,它确保容器可以访问主机上的 NVIDIA GPU。 一旦你满足了这些要求,你可以使用 `docker run --gpus` 来运行容器,并在容器内启用 GPU 支持,而不需要额外的 `nvidia-docker` 安装。这使得管理容器内的 GPU 更加方便,并且是一种更直接的方法。

参考链接:

1、Ubuntu18.04安装nvidia-docker(亲测有效,步骤详尽)

2、Ubuntu18.04安装docker-ce、显卡驱动、以及nvidia-docker

3、安装NVIDIA-DOCKER

4、nvidia官网:https://github.com/NVIDIA/nvidia-docker

5、Cuda in docker: nvcc command not found解决方法

6、显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么

7、【Docker】如何修改Docker的默认镜像存储位置(二)

8、nvidia-docker runtime报错(Unknown runtime specified nvidia)_临江仙我亦是行人的博客-CSDN博客

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐