如何在 Docker 内看不到 GPU

简介

在使用 Docker 进行开发时,有时候需要在容器内访问宿主机上的 GPU。但是默认情况下,容器内是无法直接访问宿主机的 GPU 资源的。本文将介绍如何通过一系列步骤来实现在 Docker 内看不到 GPU。

步骤

下面是实现该目标的步骤:

步骤 描述
1 安装 Docker
2 安装 NVIDIA Container Toolkit
3 创建 Dockerfile
4 构建 Docker 镜像
5 运行容器

安装 Docker

首先,我们需要确保 Docker 已正确安装在宿主机上。可以按照官方文档的指示进行安装。

安装 NVIDIA Container Toolkit

NVIDIA Container Toolkit 是一组用于容器环境中使用 NVIDIA GPU 的软件。我们可以通过以下步骤来安装它:

  1. 使用以下命令下载安装脚本:
$ curl  | sh
  1. 安装 NVIDIA Container Toolkit:
$ 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

创建 Dockerfile

在项目目录下创建一个名为 Dockerfile 的文件,并添加以下内容:

FROM nvidia/cuda:10.1-base

RUN apt-get update && apt-get install -y --no-install-recommends \
        cuda-libraries-10-1 \
        cuda-nvtx-10-1 \
        libcublas10=10.2.1.243-1 \
        libnccl2=2.7.8-1+cuda10.1 \
        && apt-get clean \
        && rm -rf /var/lib/apt/lists/*

# 设置环境变量
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility

# 运行测试命令
CMD nvidia-smi

在上述 Dockerfile 中,我们使用 nvidia/cuda:10.1-base 作为基础镜像,然后安装了必要的 CUDA 库和驱动,设置了环境变量,并在最后运行了 nvidia-smi 命令来验证是否可以访问 GPU。

构建 Docker 镜像

在项目目录下打开终端,执行以下命令来构建 Docker 镜像:

$ docker build -t gpu-docker .

这将会根据 Dockerfile 中的配置信息构建一个名为 "gpu-docker" 的镜像。

运行容器

最后,我们可以通过运行容器来验证 GPU 是否可以访问。执行以下命令:

$ docker run --gpus all gpu-docker

如果一切正常,你将会看到容器内显示的 GPU 信息。

结论

通过以上步骤,我们成功地实现了在 Docker 内看不到 GPU 的目标。这对于开发需要 GPU 加速的应用程序非常有用,例如深度学习模型训练等。希望本文能帮助到刚入行的小白理解并实现这一功能。