Docker 运行与 GPU 支持:一篇科普指南

Docker 是一个开源的应用容器引擎,它允许开发者将应用及其依赖打包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。然而,对于需要 GPU 加速的应用,如机器学习、深度学习等,我们还需要配置 Docker 以支持 GPU。本文将介绍如何使用 Docker 运行 GPU 加速的应用。

环境准备

首先,确保你的系统已经安装了以下组件:

  • Docker
  • NVIDIA 驱动程序
  • nvidia-docker2

安装 Docker

如果你的系统中还没有安装 Docker,可以通过以下命令安装:

curl -fsSL  -o get-docker.sh
sh get-docker.sh

安装 NVIDIA 驱动程序

确保你的系统安装了最新的 NVIDIA 驱动程序。你可以从 NVIDIA 官网下载并安装。

安装 nvidia-docker2

nvidia-docker2 是一个允许 Docker 容器使用 NVIDIA GPU 的工具。安装命令如下:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L  | sudo apt-key add -
curl -s -L  | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker

运行 Docker 容器并使用 GPU

现在,我们已经准备好了环境,接下来我们将运行一个 Docker 容器,并使用 GPU。

创建 Dockerfile

首先,创建一个 Dockerfile 来定义我们的容器。以下是一个使用 NVIDIA CUDA 工具包的示例 Dockerfile:

# 使用 NVIDIA 的官方 CUDA 镜像作为基础镜像
FROM nvidia/cuda:10.1-cudnn7-runtime-ubuntu18.04

# 安装需要的软件包
RUN apt-get update && apt-get install -y \
    python3-pip \
    python3-setuptools

# 安装 TensorFlow GPU 版本
RUN pip3 install tensorflow-gpu

# 设置工作目录
WORKDIR /app

# 将当前目录的文件复制到容器的工作目录
COPY . /app

# 运行 Python 脚本
CMD ["python3", "script.py"]

构建 Docker 镜像

使用以下命令构建 Docker 镜像:

docker build -t my-gpu-app .

运行 Docker 容器

使用以下命令运行 Docker 容器,并指定使用 GPU:

docker run --gpus all -it --rm my-gpu-app

这里的 --gpus all 参数告诉 Docker 容器使用所有可用的 GPU。

序列图

以下是 Docker 运行 GPU 支持的序列图:

sequenceDiagram
    participant User as U
    participant Docker as D
    participant NVIDIA GPU as G

    U->>D: docker build -t my-gpu-app .
    D->>G: 检查可用的 GPU
    G-->>D: 报告 GPU 信息
    D->>U: 成功构建镜像
    U->>D: docker run --gpus all -it --rm my-gpu-app
    D->>G: 请求使用 GPU
    G-->>D: 允许使用 GPU
    D->>U: 运行容器并使用 GPU

结语

通过本文,我们了解到了如何在 Docker 中配置并运行支持 GPU 的容器。这为需要 GPU 加速的应用提供了极大的便利。希望本文能够帮助你在 Docker 中顺利地使用 GPU 资源。如果你有任何问题或建议,请随时与我们联系。