之前介绍过nvidia/cuda + 宿主gpu驱动环境搭建-CSDN博客
其中有一个重要的步骤是安装nvidia-container-runtime;
下面关于上面的nvidia 的docker 运行时简要介绍一下,不作为安装部署环境使用,仅作为了解。
nvidia-container-runtime是一个用于在 Docker 容器中实现 NVIDIA GPU 支持的运行时工具。它使得容器能够利用主机的 NVIDIA GPU,以支持 GPU 加速的应用程序和工作负载。具体来说,它主要有以下用途和功能:
1. GPU 访问
nvidia-container-runtime 允许 Docker 容器直接访问主机上的 NVIDIA GPU。这使得容器内的应用程序可以利用 GPU 加速功能,例如在深度学习、机器学习和高性能计算(HPC)任务中进行训练和推断。
2. 支持 CUDA 和 NVIDIA 驱动
它确保容器中的应用程序能够使用 CUDA(NVIDIA 的并行计算架构)和其他 NVIDIA 驱动程序提供的功能。容器运行时会将主机上的 NVIDIA 驱动程序和 CUDA 工具包正确地映射到容器中,从而允许容器内的应用程序利用这些资源。
3. 兼容性和优化
nvidia-container-runtime 提供了对 Docker 的 GPU 支持的优化,确保容器内的应用程序能够高效地访问和使用 GPU。它也处理与主机系统和容器之间的兼容性问题。
4. 支持不同的运行时
除了 nvidia-container-runtime,Docker 也支持其他 GPU 运行时,例如 nvidia-docker(早期版本)或 nvidia-container-toolkit。nvidia-container-runtime 是这些工具的现代替代品,它提供了更好的支持和功能。
5. 多 GPU 支持
nvidia-container-runtime 允许容器访问多个 GPU。这对需要多 GPU 训练的深度学习模型或大规模计算任务非常有用。
6. 安装和配置
安装 nvidia-container-runtime 需要确保系统中已经正确安装了 NVIDIA 驱动程序和 CUDA 工具包。配置 Docker 以使用 nvidia-container-runtime 作为默认运行时或在启动容器时指定它,可以确保容器能够正确地使用 GPU。
安装和配置步骤
- 安装 nvidia-container-runtime
sudo apt-get update
sudo apt-get install -y nvidia-container-runtime - 配置 Docker 使用 NVIDIA 运行时
编辑 Docker 配置文件 /etc/docker/daemon.json,添加以下内容:
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
然后重启 Docker 服务:
sudo systemctl daemon-reload
sudo systemctl restart docker - 运行支持 GPU 的容器
使用 --runtime=nvidia 选项启动 Docker 容器,以启用 GPU 支持:
docker run --runtime=nvidia --gpus all your_image
总结
nvidia-container-runtime 是一个关键工具,用于在 Docker 容器中实现和管理 NVIDIA GPU 支持。它提供了对 GPU 资源的访问,确保容器中的应用程序能够高效地使用主机上的 GPU 进行加速计算。通过正确安装和配置 nvidia-container-runtime,你可以充分利用 GPU 的计算能力来加速各种计算密集型应用。
nvidia-docker2
这里是安装nvidia-container-runtime,但是我们前面说的是安装nvidia-docker2;nvidia-docker2是什么呢
nvidia-docker2 是 NVIDIA 提供的一个工具包,用于在 Docker 容器中实现对 NVIDIA GPU 的支持。它包括以下几个核心组件:
1. nvidia-container-runtime
nvidia-container-runtime 是 nvidia-docker2 的核心组件,它允许 Docker 容器直接访问和使用主机上的 NVIDIA GPU。它替换了 Docker 的默认运行时,以提供对 GPU 的支持。
2. nvidia-docker2 包
nvidia-docker2 包是安装和配置 nvidia-container-runtime 的工具集。它包括以下内容:
- nvidia-container-runtime,用于 GPU 支持。
- nvidia-container-toolkit,用于配置和管理 NVIDIA 运行时。
3. 功能和用途
- GPU 支持:通过 nvidia-container-runtime,容器可以访问主机的 GPU,支持 CUDA 计算和其他 GPU 加速任务。
- 容器化 GPU 计算:使得在 Docker 容器中运行深度学习、机器学习、科学计算等需要 GPU 加速的应用变得简单。
- 隔离和管理:提供对 GPU 资源的管理和隔离,使得不同容器可以独立使用 GPU。
安装脚本分析
既然我们说nvidia-docker2包含了nvidia-container-runtime 和 nvidia-container-toolkit,那么我们把前面安装nvidia-docker2的脚本分析一下:
sudo apt-get update
sudo apt-get install -y gnupg curl
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
echo "deb https://nvidia.github.io/nvidia-docker/$distribution $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
导入 NVIDIA 的 GPG 密钥
- curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey:
- curl 是一个用于从 URL 下载数据的工具。
- -s 选项表示静默模式,不显示进度信息。
- -L 选项表示跟随重定向(如果 URL 被重定向到另一个 URL)。
- https://nvidia.github.io/nvidia-docker/gpgkey 是 NVIDIA 提供的 GPG 密钥 URL,用于验证从 NVIDIA 软件源下载的软件包的完整性和来源。
- | sudo apt-key add -:
- | 是管道符,将 curl 命令的输出传递给 apt-key add 命令。
- sudo apt-key add - 将从标准输入读取 GPG 密钥并将其添加到 APT 的密钥管理系统中。这样做的目的是让 APT 认识到这个密钥,从而信任从 NVIDIA 软件源下载的软件包。
确定发行版和版本
distribution=$(. /etc/os-release;echo $ID$VERSION_ID):
- (. /etc/os-release;echo $ID$VERSION_ID) 读取 /etc/os-release 文件,该文件包含有关操作系统的详细信息。
- $ID 是操作系统的标识符(例如 ubuntu)。
- $VERSION_ID 是操作系统的版本号(例如 `20.04`)
最后一行 echo … | tee …
这个命令将 NVIDIA Docker 的仓库信息写入到 APT 的源列表中:
- echo "deb https://nvidia.github.io/nvidia-docker/$distribution $(lsb_release -cs) stable": 构造一个仓库源条目,指明仓库的 URL 和发行版的代号。
- https://nvidia.github.io/nvidia-docker/$distribution: 指向 NVIDIA Docker 的仓库,$distribution 是上一步中提取的操作系统标识和版本号。
- $(lsb_release -cs): 获取当前发行版的代号(如 focal),用于指定仓库的版本。
- stable: 仓库的稳定版本。
- | sudo tee /etc/apt/sources.list.d/nvidia-docker.list: 将仓库条目写入到 /etc/apt/sources.list.d/nvidia-docker.list 文件中。sudo tee 用于以管理员权限执行写入操作,并且同时显示输出。
接着安装nvidia-docker2:
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker