如何判断docker是apt的还是snap的,以及是否有对应版本的nvidia Container toolkit
·
可以从“实际运行的 daemon”判断,不能只看 docker --version。
# Docker 客户端来自哪里
command -v docker
readlink -f "$(command -v docker)"
dpkg -S "$(readlink -f "$(command -v docker)")" 2>/dev/null
# apt / deb 安装的 Docker 服务
systemctl status docker --no-pager
systemctl show docker -p FragmentPath
# Snap 安装的 Docker 服务
snap list docker
snap services docker
# 确认当前 docker CLI 实际连接到哪个 daemon
docker context show
docker context inspect "$(docker context show)"
docker info --format 'root={{.DockerRootDir}} version={{.ServerVersion}}'
判断标准:
- 路径是
/snap/bin/docker,且snap services docker中dockerd在运行:Snap Docker。 dpkg -S显示docker.io、docker-ce-cli等,且docker.service在运行:apt/deb Docker。- 两者都装了时,以
docker context inspect和实际运行的服务为准。
检查 NVIDIA Container Toolkit:
nvidia-ctk --version
dpkg -l | awk '/nvidia-container-toolkit|libnvidia-container/ {print $2, $3}'
apt-cache policy nvidia-container-toolkit nvidia-container-toolkit-base libnvidia-container1
# 检查 Docker 是否已加载 NVIDIA runtime
docker info --format 'runtimes={{json .Runtimes}} default={{.DefaultRuntime}}'
nvidia-container-toolkit 没有与 Docker 版本一一对应的“同版本包”;它主要匹配 Ubuntu 版本、CPU 架构和 NVIDIA 驱动。Docker 能看到 nvidia runtime 才是关键。
你截图中的:
sudo nvidia-ctk runtime configure --runtime=docker
默认修改的是 /etc/docker/daemon.json,这是 apt/deb Docker 的标准位置。若实际是 Snap Docker,它通常不使用这个配置路径,因此不存在直接“对应的 Snap Toolkit 版本”;实际部署通常建议改用 apt/deb Docker,再安装 APT 的 nvidia-container-toolkit。当前截图中出现 docker.service,看起来更像是 apt/deb Docker。
怎么知道是否已经在apt版本的docker下安装了nvidia toolkit?(下面的已验证,更好用)
这张图的 JSON 太长,画面只显示到第一个 runtime,不能据此判断有没有 nvidia。
依次执行这三项:
# 1. APT 包是否已安装:每项开头是 ii 即已安装
dpkg -l nvidia-container-toolkit nvidia-container-toolkit-base libnvidia-container1
# 2. 标准 docker.service 是否已注册 NVIDIA runtime
sudo docker info --format '{{range $name, $_ := .Runtimes}}{{println $name}}{{end}}'
# 3. Toolkit 命令是否可用、版本是什么
nvidia-ctk --version
第 2 项的正确输出至少应包含:
runc
nvidia
判断:
- APT 包为
ii,且 runtime 列表有nvidia:已成功装到宿主机,并已接入当前 apt/deb Docker。 - APT 包为
ii,但没有nvidia:Toolkit 已安装,但 Docker 没有加载配置。执行:
sudo systemctl daemon-reload
sudo systemctl restart docker
然后再运行第 2 项确认。
最后做实际 GPU 验证。先看宿主机驱动:
nvidia-smi
再以与你驱动兼容的 CUDA 镜像测试:
sudo docker run --rm --gpus all nvidia/cuda:<CUDA版本>-base-ubuntu22.04 nvidia-smi
容器内能显示 GPU 和驱动信息,才说明整条链路可用。
***本文内容由AI生成,记录下来是为了找起来方便***
更多推荐
所有评论(0)