Docker 部署 Gemma 4 完整教程

2026/04/07

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-server

Docker 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: local

Ollama + Open WebUI,一套完整的类 ChatGPT 界面:

# 启动
docker compose up -d

# 拉模型
docker exec gemma4-ollama ollama pull gemma4:26b

# 打开界面
open http://localhost:3000

GPU 直通(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-smi

docker-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 list

Ollama 按需加载模型,空闲时自动卸载。只有正在用的模型才占显存:

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

下一步

Gemma 4 AI

Gemma 4 AI

相关教程