TuxAI

Docker + GPU 容器:容器化部署 AI 服务

预计阅读 15 分钟 2026年8月17日 环境:服务器 / GPU
aidockergpu容器nvidia本地部署

Docker + GPU 容器:容器化部署 AI 服务

写在前面

把 AI 服务装进 Docker 容器,最大的好处是环境一致:同一份镜像在任何机器上跑出的结果一样,不用再为「在我电脑上好好的」这种问题头疼。本教程带你在 Linux 上完成三件事:装 Docker → 配置 NVIDIA Container Toolkit 让容器能用 GPU → 跑一个真实的 GPU 容器验证。

本篇面向有 NVIDIA 显卡的用户;没有 NVIDIA 显卡也没关系,前两步装 Docker 的部分同样适用(纯 CPU 容器不需要 Toolkit)。

环境要求

  • 一个 Linux 系统(Ubuntu / Debian / Fedora 等)
  • NVIDIA 显卡 + 官方驱动(nvidia-smi 能正常输出)
  • 磁盘:至少 10GB 可用空间(镜像 + 模型)

注意:Docker Desktop(Windows/macOS 上的 Docker 图形版)无法直接透传物理 GPU,本教程针对 Linux 上的原生 Docker Engine。

第一步:安装 Docker Engine

Ubuntu / Debian 官方源安装:

# 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl
# 添加 Docker 官方 GPG 密钥与仓库
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

让当前用户免 sudo 使用 docker(重新登录后生效):

sudo usermod -aG docker $USER

验证:

sudo systemctl enable --now docker
docker --version

国内网络拉镜像慢的话,可在 /etc/docker/daemon.json 配置镜像加速器(如阿里云、腾讯云容器镜像服务提供的地址),然后 sudo systemctl restart docker

第二步:安装 NVIDIA Container Toolkit

NVIDIA Container Toolkit 是让 Docker 容器调用宿主 GPU 的标准方案(旧方案 nvidia-docker2 已弃用,新装环境直接用 Toolkit):

# 添加 NVIDIA 仓库
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://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
  sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit

配置 Docker 使用 NVIDIA runtime 并重启:

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

验证配置生效:

docker info | grep -i runtime

国内网络访问 nvidia.github.io 不稳定时,可把仓库地址换成中科大镜像 https://mirrors.ustc.edu.cn/libnvidia-container(其余命令不变)。

第三步:验证 GPU 容器

跑一个 CUDA 官方镜像,在容器里执行 nvidia-smi

docker run --rm --gpus all nvidia/cuda:12.6-base-ubuntu24.04 nvidia-smi

能输出显卡型号、驱动版本、CUDA 版本即说明 GPU 已成功透传进容器。

指定某张卡(多卡机器):

docker run --rm --gpus '"device=0"' nvidia/cuda:12.6-base-ubuntu24.04 nvidia-smi

第四步:实战——容器里跑 Ollama

Ollama 官方镜像自带 GPU 支持,这是验证「容器 + GPU + AI」最直观的例子:

docker run -d --name ollama --gpus all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  ollama/ollama
  • --gpus all:容器可访问全部 GPU
  • -v ollama:/root/.ollama:模型存到数据卷,删容器不丢模型
  • -p 11434:11434:暴露 API 端口

进入容器拉模型(以 Qwen3 4B 为例):

docker exec -it ollama ollama pull qwen3:4b

从宿主机调用容器里的模型:

curl http://localhost:11434/api/generate -d '{"model": "qwen3:4b", "prompt": "用一句话介绍 Linux"}'

常用命令速查

命令作用
docker ps查看运行中的容器
docker logs <容器名>查看容器日志
docker stop <容器名> / docker start <容器名>停止 / 启动容器
docker rm -f <容器名>强制删除容器(数据卷里的模型保留)
docker volume ls查看数据卷
nvidia-smi宿主机查看 GPU 占用(容器占用也会显示)

常见问题

docker run --gpus all 报错 “could not select device driver”? 说明 NVIDIA Container Toolkit 未正确安装或 Docker 未重启。依次检查:nvidia-ctk runtime configure --runtime=dockersudo systemctl restart dockerdocker info | grep -i runtime 应能看到 nvidia

容器里 nvidia-smi 提示找不到命令? 选错了镜像。基础镜像(如 ubuntupython)不带 nvidia-smi,改用 nvidia/cuda 系列或 PyTorch 官方镜像(自带 CUDA 环境)。

没有 NVIDIA 显卡想练手? 跳过 Toolkit 两步,用纯 CPU 镜像即可,命令去掉 --gpus all 照常运行。

重启后容器没了? 容器本身不会自动开机启动。创建时加 --restart unless-stopped 参数即可(已有容器可 docker update --restart unless-stopped <容器名>)。

下一步

  • 在容器里部署推理服务:vLLM 高吞吐推理(教程整理中)
  • 生图方向:Stable Diffusion 本地部署(教程整理中)
  • 先玩过包管理器游戏再来容器?terminal-game 一分钟热个身

提示:涉及系统安装、驱动、分区等操作前,请务必备份重要数据。容器与工具均免费开源,模型商用前请查看对应模型主页的许可说明。

评论

评论区由 GitHub Discussions 驱动,使用 GitHub 账号即可参与讨论。