nvidia-container-toolkit 国内镜像源安装
在国内安装 nvidia-container-toolkit 时,由于访问 NVIDIA 官方源较慢或失败,可以使用以下方式通过 国内镜像源 加速安装,适用于 Docker 支持 GPU 的容器环境搭建。
env
- ubuntu22.04
1.docker-ce
2.设置国内源(推荐清华源)
- https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
- https://mirrors.ustc.edu.cn/help/libnvidia-container.html
中科大
2.1 apt
2.1.1.config nvidia-docker.list
1 | distribution=$(. /etc/os-release;echo $ID$VERSION_ID) # 例如:ubuntu20.04 |
⚠️ 注意替换 ${distribution} 为你的系统版本。
清华源地址:
https://mirrors.tuna.tsinghua.edu.cn/nvidia-docker
如果你在使用 Debian,也可以切换为阿里云(手动方式):
1 | # 替换为阿里云 docker 源(仅 docker CE,不含 nvidia) |
中科大源
1.加key
curl -fsSL https://mirrors.ustc.edu.cn/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
2.生成list
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
3.查看list
root@gpu-develop-dev:~# cat /etc/apt/sources.list.d/cuda-ubuntu2204-x86_64.list
deb [signed-by=/usr/share/keyrings/cuda-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /
2.1.2安装 NVIDIA Container Toolkit
1 | sudo apt-get update |
如需安装旧版兼容层支持:
1 | sudo apt-get install -y nvidia-docker2 |
2.2 dnf/yum
2.2.1.download nvidia-container-toolkit.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' |
sed 's#gpgkey=https://nvidia.github.io/libnvidia-container/gpgkey#gpgkey=https://mirrors.ustc.edu.cn/libnvidia-container/gpgkey#g ' |
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
ok-/etc/yum.repos.d/nvidia-container-toolkit.repo
[nvidia-container-toolkit]
name=nvidia-container-toolkit
baseurl=https://mirrors.ustc.edu.cn/libnvidia-container/stable/rpm/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://mirrors.ustc.edu.cn/libnvidia-container/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
[nvidia-container-toolkit-experimental]
name=nvidia-container-toolkit-experimental
baseurl=https://mirrors.ustc.edu.cn/libnvidia-container/experimental/rpm/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=0
gpgkey=https://mirrors.ustc.edu.cn/libnvidia-container/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
2.2.2 安装 NVIDIA Container Toolkit
dnf makecache
dnf install -y nvidia-container-toolkit
3. 配置 Docker 使用 NVIDIA 运行时
基于命令自动配置docker相关
nvidia-ctk runtime configure --runtime=docker
编辑或创建 /etc/docker/daemon.json:
1 | { |
然后重启 Docker:
1 | sudo systemctl daemon-reexec |
4. 验证 GPU 是否可用
1 | docker run --rm --gpus all nvidia/cuda:12.3.1-base-ubuntu22.04 nvidia-smi |
输出应显示 NVIDIA GPU 信息。
5.docker/docker-compsoe支持
services:
ollama:
image: ollama/ollama:0.5.4
container_name: ${CONTAINER_NAME}
restart: unless-stopped
ports:
- ${PANEL_APP_PORT_HTTP}:11434
networks:
- 1panel-network
tty: true
volumes:
- ./data:/root/.ollama
labels:
createdBy: "Apps"
# 添加 GPU 支持
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
# 如果使用 NVIDIA Container Toolkit,可以添加以下环境变量
environment:
NVIDIA_VISIBLE_DEVICES: all
NVIDIA_DRIVER_CAPABILITIES: "compute,utility"
networks:
1panel-network:
external: true
# 添加 GPU 支持
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
# 如果使用 NVIDIA Container Toolkit,可以添加以下环境变量
environment:
NVIDIA_VISIBLE_DEVICES: all
NVIDIA_DRIVER_CAPABILITIES: "compute,utility"
6常见问题
nvidia-smi失败:确认宿主机 NVIDIA 驱动已正确安装(使用nvidia-smi测试)。- 驱动未加载:检查
lsmod | grep nvidia是否有输出。 - WSL2 用户需单独配置 GPU passthrough。
7.镜像源参考
| 来源 | 地址 |
|---|---|
| 清华源 | https://mirrors.tuna.tsinghua.edu.cn/nvidia-docker/ |
| 阿里云 Docker CE | https://mirrors.aliyun.com/docker-ce |
| 华为源 | https://repo.huaweicloud.com(无 nvidia-docker) |