在 Debian/Ubuntu 上的 Docker 容器中设置 NVIDIA CUDA 工具包
在 Debian 和 Ubuntu 系统上利用 NVIDIA GPU 的强大功能通常需要浏览迷宫般的配置和依赖项。 NVIDIA 的 CUDA 工具包对于 GPU 加速任务至关重要,可以使用 Docker 简化这一过程。通过容器化工具包,开发人员可以确保跨系统提供一致、简化和优化的环境。在本指南中,我们将详细介绍将 CUDA 工具包无缝集成到这些流行 Linux 发行版的 Docker 容器中的步骤。
在本教程中您将学习:
- 如何在 Debian 和 Ubuntu 上设置 Docker 以实现 GPU 兼容性。
- NVIDIA CUDA 工具包的基本要素及其对 GPU 加速任务的重要性。
- 将 CUDA 工具包无缝集成到 Docker 容器中的步骤。
- 维护和更新启用 CUDA 的 Docker 环境的最佳实践。
- 解决常见问题并确保最佳 GPU 性能。
为 Debian 和 Ubuntu 上的 GPU 加速 Docker 环境做准备
当您的 Debian 或 Ubuntu 系统上已经安装了 NVIDIA 驱动程序后,GPU 加速任务的基础设置就完成了一半。在本指南中,我们将利用这一基础将 NVIDIA 的 CUDA 工具包无缝集成到 Docker 容器中。这种容器化环境将为您的所有 GPU 计算提供一致、简化的平台,确保您可以专注于手头的任务,而无需纠结于配置。让我们深入研究,让强大的 GPU 真正为您服务。
- 安装 NVIDIA 驱动程序
在深入研究 CUDA 工具包与 Docker 的集成之前,必须在系统上正确安装 NVIDIA 驱动程序。这些驱动程序充当操作系统和 NVIDIA GPU 硬件之间的桥梁,确保最佳通信和性能。如果您使用 Debian 或 Ubuntu 并且尚未安装 NVIDIA 驱动程序,或者您不确定当前的安装,我们已经为您提供了帮助。对于 Debian 用户,请遵循我们全面的 Debian NVIDIA 安装指南,Ubuntu 爱好者可以参考详细的 Ubuntu NVIDIA 安装指南。在继续下一步之前,请确保您已成功安装并验证了驱动程序。这个基础对于 Docker 中 GPU 加速任务的无缝运行至关重要。 安装Docker
为了容器化 NVIDIA CUDA 工具包,Docker 是我们选择的平台。 Debian 和 Ubuntu 在其存储库中方便地提供 Docker,使安装过程变得简单。通过安装 Docker,您的系统能够在容器中创建、部署和运行应用程序,从而确保环境一致。以下是安装 Docker 的命令:更新 APT 包索引# apt update
使用 docker.io 包安装 Docker
apt install docker.io
验证 Docker 的状态和版本
# systemctl status docker docker --version
安装Docker
要运行 GPU 加速的 Docker 容器,我们需要 NVIDIA Container Toolkit。该工具包扩展了 Docker,以充分利用 NVIDIA GPU,确保 GPU 功能可以在容器内顺利使用。通过执行以下命令,我们将设置 Debian 或 Ubuntu 系统,以便从 Docker 容器内识别 NVIDIA GPU 并与其正确交互。依次执行以下命令:下载NVIDIA GPG密钥$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey -o /tmp/nvidia-gpgkey
Dearmor 的 GPG 密钥并保存它
# gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg /tmp/nvidia-gpgkey
下载 NVIDIA 容器工具包列表文件
$ curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list -o /tmp/nvidia-list
修改列表文件以包含签名
# sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' /tmp/nvidia-list > /etc/apt/sources.list.d/nvidia-container-toolkit.list
更新包数据库
# apt-get update
配置 Docker 以支持 NVIDIA
准备好 NVIDIA Container Toolkit 后,下一个重要任务是配置 Docker 以识别和利用 NVIDIA GPU。通过使用nvidia-container-cli
命令将 Docker 运行时配置为使用 NVIDIA Container Toolkit,您将修改 Docker 的配置以使用 NVIDIA 的运行时:# nvidia-container-cli configure --runtime=docker
在幕后,此命令会对
/etc/docker/daemon.json
文件进行更改。因此,Docker 能够识别 NVIDIA 运行时并可以访问 GPU 功能。修改 Docker 配置后,重新启动 Docker 守护进程以使更改生效至关重要:# systemctl restart docker
运行 NVIDIA CUDA Docker 映像
所有必需的设置就位后,令人兴奋的部分就开始了:运行具有 NVIDIA GPU 支持的 Docker 容器。 NVIDIA 在 Docker Hub 上维护了一系列 CUDA 映像。在本教程中,我们将使用12.2.0-base-ubuntu22.04
标签。但是,请始终确保在 NVIDIA CUDA Docker Hub 上检查最新标签以保持更新。
拉取特定的 NVIDIA CUDA 映像:# docker pull nvidia/cuda:12.2.0-base-ubuntu22.04
运行具有 GPU 支持的 Docker 容器:
# docker run --gpus all -it nvidia/cuda:12.2.0-base-ubuntu22.04 bash
此命令运行具有完全 GPU 访问权限 (
--gpus all
) 的 Docker 容器,并在容器内提供交互式 shell。进入后,您可以使用nvidia-smi
等 NVIDIA 实用程序来确认 GPU 访问。
维护支持 CUDA 的 Docker 环境
在快速发展的技术环境中,保持支持 CUDA 的 Docker 环境处于最新状态至关重要。定期检查 NVIDIA CUDA Docker Hub 的映像更新。随时了解 NVIDIA 和 Docker 版本的信息,在运行多个容器时明智地管理 GPU 资源,备份基本配置,并积极与社区互动以获取提示和最佳实践。保持积极主动将确保 GPU 加速项目的最佳性能和安全性。
故障排除并确保 GPU 性能
在任何技术努力中,遇到问题都是不可避免的,支持 CUDA 的 Docker 环境也不例外。遇到问题时,请重新检查您的设置步骤以发现任何疏忽。在容器内使用 nvidia-smi
等工具来验证 GPU 可访问性。确保您的 NVIDIA 驱动程序与您正在部署的 CUDA 版本兼容。最后,监控 GPU 使用情况以防止出现瓶颈。关注这些领域将为获得更流畅的体验和最佳的 GPU 性能铺平道路。
结论
利用 NVIDIA CUDA 平台和 Docker 之间的强大协同作用,为 GPU 加速应用程序提供强大而灵活的环境。虽然设置过程最初看起来可能很复杂,但可扩展性、可重复性和性能方面的优势是无与伦比的。通过认真遵循概述的步骤并遵守最佳实践,您将做好充分准备,充分利用 GPU 的潜力。与任何技术之旅一样,持续学习和与社区的互动将成为宝贵的资产,确保您始终处于 GPU 计算进步的最前沿。