Ollama Docker 部署
容器化部署适合两类场景:一是不想污染宿主机的 Python/驱动环境,二是要在多台机器上复现同一套推理服务。官方镜像 ollama/ollama 已经处理好 GPU 库依赖,你要做的只是选对启动参数。
版本基线 v0.40.12,官方
docs.ollama.com/docker。
一、纯 CPU:最简单的一条命令
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
三个参数各有作用,缺一个都不好用:
| 参数 | 作用 | 缺了会怎样 |
|---|---|---|
-d |
后台运行 | 容器占住终端 |
-v ollama:/root/.ollama |
挂一个命名卷存模型 | 容器一删模型全丢,下次重新下载几十 GB |
-p 11434:11434 |
端口映射到宿主机 | 宿主机访问不到 API |
--name ollama 只是给容器起个好记的名字,方便后面 docker exec。
二、NVIDIA GPU
要点:先装 NVIDIA Container Toolkit,再启动容器。只装显卡驱动是不够的——Docker 默认看不到 GPU。
安装 Container Toolkit(Debian / Ubuntu)
## ① 添加 GPG 密钥
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
## ② 添加软件源
curl -fsSL 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-get update
## ③ 安装
sudo apt-get install -y nvidia-container-toolkit
RHEL / Fedora 系用 yum:
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo \
| sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
sudo yum install -y nvidia-container-toolkit
让 Docker 用上 NVIDIA 运行时
## 写入 docker 的 runtime 配置
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
这一步做完,--gpus=all 才会生效。
启动带 GPU 的容器
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
和 CPU 版只差 --gpus=all。
Jetson 设备要额外指定版本:官方说明 Ollama 无法自动识别 JetPack 版本,需要显式传环境变量 JETSON_JETPACK=5 或 JETSON_JETPACK=6。
三、AMD GPU
AMD 卡要用 rocm 标签,并把设备节点透传进容器:
docker run -d --device /dev/kfd --device /dev/dri \
-v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:rocm
两个 --device 都不能少:/dev/kfd 是 ROCm 的计算接口,/dev/dri 是渲染设备节点。
四、Vulkan:默认就开着
官方镜像里已经打包了 Vulkan 支持,只要容器能访问到 GPU 设备就默认启用:
docker run -d --device /dev/kfd --device /dev/dri \
-v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
两个开关值得记住:
## 关闭 Vulkan(比如你的设备上 Vulkan 表现反而更差)
OLLAMA_VULKAN=0
## 指定使用哪些 Vulkan 设备(索引号)
GGML_VK_VISIBLE_DEVICES=0
对多卡机器,GGML_VK_VISIBLE_DEVICES 是控制用哪张卡的实际手段。
五、跑模型
容器起来后,在容器里执行 ollama 命令即可:
## 拉取并进入对话
docker exec -it ollama ollama run llama3.2
也可以直接在宿主机用 API 调用(端口已映射):
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Why is the sky blue?",
"stream": false
}'
更多模型在 ollama.com/library 找。
六、一个能直接用的 compose 配置
docker run 适合快速验证,长期部署建议写进 compose,参数可版本化管理:
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
ports:
- "11434:11434"
volumes:
- ollama-models:/root/.ollama
# NVIDIA 显卡时启用下面这段
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
volumes:
ollama-models:
restart: unless-stopped 保证宿主机重启后容器自动回来,这是生产环境和 docker run 最实质的差别。
七、挂了模型卷之后的好处
用命名卷(-v ollama:/root/.ollama)而不是不挂卷,收益比看起来大:
- 升级镜像不丢模型。
docker pull新版本、删容器重建,模型还在卷里。 - 多容器共享。同一台机器上跑多个 Ollama 容器可以挂同一个卷(前提是别同时写)。
- 备份简单。卷就是一个目录,
docker run --rm -v ollama:/data -v $(pwd):/backup alpine tar czf /backup/ollama.tgz /data就能打包。
如果想用宿主机上的具体目录而不是命名卷,把 -v ollama:/root/.ollama 换成 -v /data/ollama:/root/.ollama 即可,注意该目录要让容器内的 root 可写。
八、五个常见坑
容器里看不到 GPU。 90% 是没装 NVIDIA Container Toolkit,或者忘了 nvidia-ctk runtime configure。验证方法:docker run --rm --gpus=all nvidia/cuda:12.0-base nvidia-smi,能打印显卡信息才说明 Docker 配好了。
macOS 上跑 Docker 没有 GPU 加速。 官方明确说明:Docker Desktop for macOS 因为缺乏 GPU 直通,不支持 GPU 加速。Mac 上要 GPU 推理,直接用原生应用(见 7.2 Ollama macOS 安装与部署),别绕 Docker。
端口能通但连不上。 容器内 Ollama 需要监听 0.0.0.0 才能接受外部连接。官方镜像已默认如此,但如果你自己挂载配置或改了启动命令,务必确认没被改回 127.0.0.1。
模型下载慢或失败。 容器内的网络走 Docker 的网络配置,代理设置不会自动继承宿主机。需要出网代理时,用 -e HTTPS_PROXY=... 显式传进容器。
容器一直重启。 先看日志定位,别急着重建:
docker logs ollama
显存不足、卷权限错误、GPU 运行时缺失,日志里都有明确提示。
想看各平台的安装差异,回看 7.1 Ollama Linux 安装与部署、7.2 Ollama macOS 安装与部署、7.3 Ollama Windows 安装与部署。

TRAE-AI编程


更多建议: