参考链接:https://blog.csdn.net/red_stone1/article/details/103717757
环境准备: Ubuntu16以上 系统中有GPU并且已安装NVIDIA驱动
在docker容器中使用GPU,首先需要安装nvidia-docker,github地址如下:https://github.com/NVIDIA/nvidia-docker 注意这里,官网也提到,若在docker中运行gpu程序,宿主机环境只需要安装nvidia-驱动即可,无需安装CUDA。
安装nvidia-docker之后,在docker中搜索别人已经编译好的mmdetection镜像(注意镜像里已经包括CUDA等依赖环境),然后我们直接使用就可以了。 使用如下命令进行查找:
docker search mmdetection选择好某个镜像,假设镜像名为apulistech/mmdetection,下载 docker 镜像盗宿主机
sudo docker pull apulistech/mmdetection下载好镜像之后,根据镜像创建容器:
sudo docker run --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=0,1,2 --shm-size 32G --name my_detection -p 2323:22 -it apulistech/mmdetection /bin/bash其中--runtime=nvidia能使新建的 docker 容器能使用宿主机器的 GPU,--name是为容器起一个名字,为my_detection。pytorch的multiprocess需要一些共享内存(shm),所以要显式的设定--shm-size,若不设定可能会出现shm不足的问题。-e为设置环境变量。-p为设置端口映射,方便ssh进入容器。运行成功后,即可进入容器的根目录/。
其中src_file是宿主机的文件,my_detection是容器名,/mmdetection是目录
再次进入到容器时,我们需要先启动容器并启动bash
$ docker start XXX $ docker exec -it XXX /bin/bash其中XXX是容器号码
