赞
踩
由于默认安装的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时如果出现了如下错误解决方案如下:
原因:没有安装nvidia-container-runtime包,直接apt install安装即可
原因: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
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博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。