Docker 需要安装 GPU 驱动吗?

1. 流程概述

在讨论 Docker 是否需要安装 GPU 驱动之前,我们需要了解 Docker 和 GPU 驱动的关系以及安装流程。下面是整个流程的概述:

  1. 确认是否需要在 Docker 容器内使用 GPU 加速。
  2. 检查系统是否已安装合适的 GPU 驱动。
  3. 配置 Docker 运行时(runtime)以支持 GPU。
  4. 构建或拉取包含 GPU 支持的 Docker 镜像。
  5. 运行 Docker 容器并验证 GPU 加速是否正常工作。

下面我们将详细介绍每个步骤的具体操作和代码。

2. 检查 GPU 驱动是否已安装

首先,我们需要检查操作系统是否已经安装了合适的 GPU 驱动。不同的操作系统和 GPU 型号可能需要不同的驱动程序。

在 Linux 系统上,可以通过以下命令查看当前系统的 GPU 信息:

lspci | grep -i nvidia

如果输出结果中包含 NVIDIA 相关信息,则说明系统已经安装了 NVIDIA GPU 驱动。

在 Windows 系统上,可以通过以下步骤检查 GPU 驱动信息:

  1. 打开设备管理器(Device Manager)。
  2. 找到 "显示适配器"(Display adapters)类别。
  3. 如果列表中显示了 NVIDIA 显卡,则说明系统已经安装了 NVIDIA GPU 驱动。

如果系统没有安装合适的 GPU 驱动,需要按照官方文档或相关指南安装适用于你的操作系统和 GPU 型号的驱动程序。

3. 配置 Docker 运行时以支持 GPU

在 Docker 19.03 及更高版本中,Docker 提供了一种名为 "nvidia-container-runtime" 的运行时,用于支持在容器内使用 NVIDIA GPU 加速。要配置 Docker 运行时以支持 GPU,需要执行以下步骤:

  1. 安装 nvidia-container-runtime:

    # 添加 NVIDIA 官方仓库的 GPG 密钥
    curl -s -L  | \
      sudo apt-key add -
    
    # 添加 NVIDIA 官方仓库
    distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
    curl -s -L  | \
      sudo tee /etc/apt/sources.list.d/nvidia-docker.list
    
    # 安装 nvidia-container-runtime
    sudo apt-get update && sudo apt-get install -y nvidia-container-runtime
    
  2. 配置 Docker 运行时:

    # 编辑 Docker 的配置文件
    sudo nano /etc/docker/daemon.json
    

    在打开的配置文件中添加以下内容:

    {
      "runtimes": {
        "nvidia": {
          "path": "/usr/bin/nvidia-container-runtime",
          "runtimeArgs": []
        }
      }
    }
    

    保存并关闭文件。

  3. 重启 Docker 服务以使配置生效:

    sudo systemctl restart docker
    

4. 构建或拉取支持 GPU 的 Docker 镜像

在配置完 Docker 运行时以后,我们需要构建或拉取支持 GPU 加速的 Docker 镜像。

对于构建镜像,可以使用以下示例 Dockerfile 文件:

FROM nvidia/cuda:10.1-base

# 安装额外的依赖,例如 CUDA Toolkit、cuDNN 等
RUN apt-get update && apt-get install -y <packages>

# 复制应用程序代码或安装必要的软件包
COPY app /app

# 设置环境变量等

# 定义容器启动时执行的命令
CMD ["python", "app.py"]

其中,nvidia/cuda:10.1-base 是一个已经包含 NVIDIA GPU 驱动和 CUDA 10.1 的基础镜像。你可以根据需要选择不同的基础镜像。

对于拉取镜像,可以使用以下命令:

docker pull <image>:<tag>

其中,<image>