前前篇(安装Docker):https://blog.csdn.net/qq_34717531/article/details/107933650
前篇(yolov3flask部署(cpu运行,没装cuda)):https://blog.csdn.net/qq_34717531/article/details/107938337
安装的docker是只支持cpu的,为了使用gpu,我们要安装nvidia-docker2。
一、安装nvidia-docker2
可参考:https://github.com/NVIDIA/nvidia-docker
Ubuntu 16.04/18.04/20.04, Debian Jessie/Stretch/Buster:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
cuda10测试:
sudo docker run --gpus all nvidia/cuda:10.0-base nvidia-smi
二、配置cuda10+cudnn7+opencv4.4
下载一个cuda10的docker镜像(https://hub.docker.com/r/nvidia/cuda),并建立容器。
docker pull yadongw/cuda10.0-cudnn7-devel-ubuntu16.04-python3.5:latest
docker run -d -it -p 4555:4555 --name=ycc --gpus all yadongw/cuda10.0-cudnn7-devel-ubuntu16.04-python3.5:latest bash
将本机opencv4.4复制到容器。
docker cp /home/ycc/opencv-4.4.0 73a9937be531:/home/
编译opencv4.4:https://blog.csdn.net/qq_34717531/article/details/107763872
可看到编译了cuda10 和 cudnn7.5 。
至此,cuda10配套的410显卡驱动 + cuda10 + cudnn7.5 + opencv4.4 在容器中配置完成。
三、安装flask,并测试yolov4flask
将python默认版本改为3.5:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
安装pip3,flask和pillow。
apt-get install python3-pip
将本机yolov4flask复制到容器,
docker cp /home/ycc/yolov4flask 73a9937be531:/home/
四、打包成docker镜像
docker commit -a "ycc" -m "yolov4flask" 73a9937be531 yolov4flask:v1
镜像打包好了,就是有点大啊,精简了一下,重新打包,还是有着6.68G:
可以直接下载opencv4.4(Python+opencv4.4 ,无cuda版本 ,可用于yolov4 cpu检测), 这个版本比较小:
sudo docker pull opencvcourses/opencv:440
打包后也有3.36G(cpu版本)。
五、docker镜像部署
将自己打包的docker镜像进行部署,需要用到save和load。
docker save yolov4flask -o yolov4flask.tar
save将docker镜像保存为tar格式,放入服务器后,使用load,镜像就在服务器中了。
docker load -i yolov4flask.tar