NVIDIA Container Toolkit国内快速安装

目的在centos/debina等系统下容器化调用 nvidia gpu。


1. 前提条件

1.1 支持平台

  • Linux 发行版(Ubuntu、Debian、RHEL、CentOS 等)
  • Docker 19.03 及以上版本或兼容的容器运行时

1.2 NVIDIA 驱动

  • 需已安装 NVIDIA GPU 驱动
  • 驱动版本应支持所需 CUDA 版本
  • 可通过 nvidia-smi 验证驱动安装

1.3 GPU 容器支持

  • 容器需要能够访问 GPU 资源
  • 安装 NVIDIA Container Toolkit 以实现 Docker 运行 GPU 容器

2. 安装步骤

中科大

2.1 设置存储库

Ubuntu / Debian

1
2
3
4
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

国内加速

1
2
3
4
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://mirrors.ustc.edu.cn/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://nvidia.github.io#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://mirrors.ustc.edu.cn#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

RHEL / CentOS / Fedora

1
2
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
sudo dnf config-manager --add-repo=https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo

国内加速

curl -s -L https://mirrors.ustc.edu.cn/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
  sed 's#nvidia.github.io/libnvidia-container/stable/#mirrors.ustc.edu.cn/libnvidia-container/stable/#g' |
  sed 's#nvidia.github.io/libnvidia-container/experimental/#mirrors.ustc.edu.cn/libnvidia-container/experimental/#g' |
  sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo

2.2 安装 NVIDIA Container Toolkit

Ubuntu / Debian

1
2
3
4
5
sudo apt-get install -y nvidia-container-toolkit

nvidia-ctk runtime configure --runtime=docker

systemctl daemon-reload && systemctl restart docker

RHEL / CentOS / Fedora

1
2
3
4
5
sudo dnf install -y nvidia-container-toolkit

nvidia-ctk runtime configure --runtime=docker

systemctl daemon-reload && systemctl restart docker

3. 验证安装

1
docker run --rm --gpus all nvidia/cuda:12.1-base nvidia-smi
  • 输出应显示 GPU 信息及驱动版本
  • 确认 Docker 可以访问 GPU

4. 配置默认运行时

编辑 /etc/docker/daemon.json

1
2
3
4
5
6
7
8
9
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}

然后重启 Docker:

1
sudo systemctl restart docker

5. Docker Compose 支持

docker-compose.yml 中配置 GPU:

1
2
3
4
5
6
7
8
9
services:
myservice:
image: nvidia/cuda:12.1-base
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: [gpu]
  • capabilities 可根据需求设置 [gpu, utility, compute]
  • 适用于多 GPU 分配场景