由于默认安装的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
(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
(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
参考链接:
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博客