由于默认安装的docker都是基于cpu版本的,如果想要配合GPU进行一些简单的部署的话,则需要安装nvidia-docker来结合使用。想要安装nvidia-docker版本,前提需要你的硬件支持gpu加速(nvidia系列),同时先安装好了nvidia驱动和cuda以及cudnn和docker基础版,接下来需要做的如下(以下是基于ubuntu18.04进行安装的docker-ce基础上进行安装,
(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
参考链接:
1、Ubuntu18.04安装docker-ce、显卡驱动、以及nvidia-docker
3、nvidia官网:https://github.com/NVIDIA/nvidia-docker