一. 安装nvidia-docker2

0.首先确保本机的NVIDIA驱动正常工作

nvidia-smi

如果驱动正常可以看到您的GPU名称,驱动版本和最高支持的CUDA版本

1.使用命令将工具包的包存储库添加到您的系统:

1
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

2.在主机上安装nvidia-docker2

1
2
apt-get update
apt-get install -y nvidia-docker2

3.重启Docker进程

1
sudo systemctl restart docker

二.查找Nvidia官方cuda镜像

cuda版本与驱动对照表
官方docker镜像地址
docker cuda版本选择

docker镜像名称为 [镜像名称]:<版本号>
例如:nvidia/cuda:11.4.0-devel-ubuntu20.04

三.使用Dockerfile打包

1.编写Dockerfile

1
2
3
4
5
6
7
8
9
FROM nvidia/cuda:11.4.0-devel-ubuntu20.04
ENV TZ=Europe/Kiev RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
MAINTAINER seallhf sd185115@163.com ADD ./ ./ WORKDIR ./
RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6 -y
RUN apt-get install libgl1 -y
RUN apt-get install python3-pip -y
RUN pip3 install -r requirements.txt
ENTRYPOINT ["gunicorn", "-c", "gunicorn.py", "app:server"]

2.执行生成image

1
2
3
4
# 构建Docker镜像。运行以下命令,将`<image_name>:<tag>`替换为您想要的镜像名称和标签:
# docker build -t <image_name>:<tag> .
# 例如
docker build -t myapp:latest .

3.查看已生成的image

1
2
# 运行命令可看到刚刚生成的镜像
docker images

四.运行容器

1.启动容器

1
2
3
4
# 使用构建好的镜像启动一个Docker容器。将`<host_port>`替换为您想在主机上映射的端口,将`<container_port>`替换为容器中的端口,并将`<image_name>:<tag>`替换为您的镜像名称和标签:
# docker run -d -p <host_port>:<container_port> <image_name>:<tag>
# 例如
docker run -itd --gpus all -p 8888:8888 myapp:latest

2.进入容器

1
2
3
4
5
# 进入docker容器执行命令
docker exec -it myapp /bin/bash
# 执行下面命令
nvidia-smi
# 此时可在容器内看到您的GPU名称,驱动版本和最高支持的CUDA版本,说明docker容器已经使用gpu