ubuntu上使用docker运行需要使用GPU的程序

能在docker中运行使用GPU的程序,首先必须安装了docker和nvidia-docker,具体安装方法参考前两篇文章.

本文使用Dockerfile的方式创建镜像

nvidia docker镜像源地址为https://hub.docker.com/r/nvidia/cuda,可以根据自己的需要拉取镜像源,本文使用的镜像源为ubuntu14.04+cuda8.0+cudnn7.0

1 编写Dockerfile
Dockerfile文件内容为:
#拉取镜像源
FROM nvidia/cuda:8.0-cudnn7-runtime-ubuntu14.04
#指定镜像维护人,非必须项
MAINTAINER Ding Yu
#将自己的应用程序拷贝到容器中,本文拷贝了自己实现的人脸识别程序,即将本地整个FaceRecognition/目录
#(注:宿主机中拷贝的目录必须跟Dockerfile文件所在目录或子目录下,而不能在宿主机的其他目录下)
#中的所有内容拷贝到容器的/tmp目录下
COPY FaceRecognition/ /tmp/
#设置容器使用中文字符集,这个主要是解决docker中中文乱码的问题,因为我的人脸识别程序需要在图片上显示人的中文名
ENV LANG C.UTF-8
#开放容器的80端口
EXPOSE 80

2 编译并生成镜像
sudo docker build -t="test/face" .
注:最后面的.代表在当前目录下查找Dockerfile

3 查看生成的docker镜像
sudo docker images
可以看到:
REPOSITORY          TAG                                                  IMAGE ID               CREATED             SIZE
test/face                     latest                                               7e4526397e5a        3 hours ago          2.13GB
nvidia/cuda                8.0-cudnn7-runtime-ubuntu14.04    d5491c845e53        2 months ago       1.02GB

4 创建并运行docker容器
sudo docker run --runtime=nvidia -it test/face

5 此时进入到容器中,在容器的/tmp目录下就是我们拷贝过来的文件
cd tmp/
ls

6 退出容器
exit

7 查看已创建的容器
sudo docker ps -a
可以看到:
CONTAINER ID        IMAGE             COMMAND       CREATED           STATUS                         PORTS           NAMES
ea8ce13b3a84          test/face           "/bin/bash"         3 hours ago         Exited (0) 2 hours ago                          hungry_hodgkin

8 再次进入该容器
sudo docker start ea8ce13b3a84
sudo docker attach ea8ce13b3a84

猜你喜欢

转载自blog.csdn.net/maidabu/article/details/86483160
今日推荐