Docker 让 AI 部署变得可复现、可隔离。同一个容器,同样的结果——不管在你的笔记本、测试服务器还是生产环境。
从零开始把 Gemma 4 跑在 Docker 里。
为什么用 Docker
- 可复现:固定 Ollama 版本、模型文件和配置
- 隔离:不会搞乱宿主机的 Python、CUDA 等环境
- 可移植:构建一次,到处部署
- 好清理:
docker compose down干干净净
如果只是自己用 Gemma 4,直接装 Ollama 更简单。Docker 的优势在多环境一致部署,或者要把 Gemma 4 集成到更大的应用栈里。
快速启动
三行命令搞定:
# 用 Docker 跑 Ollama
docker run -d \
--name gemma4 \
-p 11434:11434 \
-v ollama-data:/root/.ollama \
ollama/ollama
# 拉模型并运行
docker exec gemma4 ollama pull gemma4:26b
docker exec -it gemma4 ollama run gemma4:26b-v ollama-data:/root/.ollama 保证容器重启后模型还在。
自定义 Dockerfile
需要更多控制的话,自己构建镜像:
FROM ollama/ollama:latest
ENV OLLAMA_HOST=0.0.0.0
ENV OLLAMA_KEEP_ALIVE=24h
COPY <<'EOF' /start.sh
#!/bin/bash
ollama serve &
sleep 5
# 首次运行时拉模型
if ! ollama list | grep -q "gemma4:26b"; then
echo "正在拉取 Gemma 4 26B..."
ollama pull gemma4:26b
fi
wait
EOF
RUN chmod +x /start.sh
EXPOSE 11434
CMD ["/start.sh"]构建和运行:
docker build -t gemma4-server .
docker run -d --name gemma4 -p 11434:11434 -v ollama-data:/root/.ollama gemma4-serverDocker Compose(推荐)
正经部署用 docker-compose.yml:
version: "3.8"
services:
ollama:
image: ollama/ollama:latest
container_name: gemma4-ollama
ports:
- "11434:11434"
volumes:
- ollama-models:/root/.ollama
environment:
- OLLAMA_HOST=0.0.0.0
- OLLAMA_KEEP_ALIVE=24h
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:11434/api/tags"]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
webui:
image: ghcr.io/open-webui/open-webui:main
container_name: gemma4-webui
ports:
- "3000:8080"
volumes:
- webui-data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
depends_on:
ollama:
condition: service_healthy
restart: unless-stopped
volumes:
ollama-models:
driver: local
webui-data:
driver: localOllama + Open WebUI,一套完整的类 ChatGPT 界面:
# 启动
docker compose up -d
# 拉模型
docker exec gemma4-ollama ollama pull gemma4:26b
# 打开界面
open http://localhost:3000GPU 直通(NVIDIA)
Docker 里要用 GPU,先装 NVIDIA Container Toolkit:
# 安装(Ubuntu/Debian)
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-get update
sudo apt-get install -y nvidia-container-toolkit
# 配置 Docker
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# 验证
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smidocker-compose 里启用 GPU:
services:
ollama:
image: ollama/ollama:latest
ports:
- "11434:11434"
volumes:
- ollama-models:/root/.ollama
environment:
- OLLAMA_HOST=0.0.0.0
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: unless-stopped注意: Mac 上 Docker 跑在 Linux 虚拟机里,无法使用 Metal 加速。Mac 用户直接原生安装 Ollama,自动获得 Metal GPU 加速。详见 Mac 性能实测。
模型持久化存储
模型文件很大,不能每次重启都重新下载。
命名卷(推荐,Docker 自动管理):
volumes:
ollama-models:
driver: local绑定挂载(自己指定路径,方便管理磁盘空间):
volumes:
- /data/ollama-models:/root/.ollama查看模型占用空间:
docker exec gemma4-ollama du -sh /root/.ollama/models| 模型 | 大概大小 (Q4) |
|---|---|
| Gemma 4 E2B | ~1.5 GB |
| Gemma 4 E4B | ~2.5 GB |
| Gemma 4 26B | ~15 GB |
| Gemma 4 31B | ~18 GB |
多模型部署
想同时准备多个模型给不同场景用?
# 拉多个模型
docker exec gemma4-ollama ollama pull gemma4:e4b # 快速简单任务
docker exec gemma4-ollama ollama pull gemma4:26b # 日常任务
docker exec gemma4-ollama ollama pull gemma4:31b # 最高质量
# 查看所有模型
docker exec gemma4-ollama ollama listOllama 按需加载模型,空闲时自动卸载。只有正在用的模型才占显存:
environment:
- OLLAMA_KEEP_ALIVE=5m # 空闲 5 分钟后卸载
- OLLAMA_MAX_LOADED_MODELS=2 # 最多同时加载 2 个模型API 接口
Ollama API 默认在 11434 端口:
# 查看可用模型
curl http://localhost:11434/api/tags
# 生成回复
curl http://localhost:11434/api/chat -d '{
"model": "gemma4:26b",
"messages": [{"role": "user", "content": "你好!"}]
}'
# 也兼容 OpenAI API 格式
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gemma4:26b",
"messages": [{"role": "user", "content": "你好!"}]
}'API 的详细用法看 API 教程。需要更高吞吐的生产级服务看 vLLM + Docker。
常用 Docker 命令
# 看日志
docker compose logs -f ollama
# 查看资源占用
docker stats gemma4-ollama
# 进入容器
docker exec -it gemma4-ollama bash
# 停止
docker compose down
# 停止并删除模型数据
docker compose down -v
# 更新 Ollama 镜像
docker compose pull && docker compose up -d下一步
- 生产部署:vLLM + Docker 指南
- 在应用里调用:API 教程
- 可靠的 JSON 输出:结构化输出指南
- Mac 原生运行:Mac 性能实测



