0% read

如何在 Docker 中執行 Gemma 4(完整容器指南)

Apr 7, 2026

Docker 提供可重現、隔離的 AI 部署。同樣的容器,同樣的結果——無論是在你的筆電、測試伺服器或正式環境。不再有「在我機器上能跑」的問題。

讓我們從頭開始在 Docker 中設定 Gemma 4。

為什麼用 Docker 部署 AI?

  • 可重現:鎖定你的 Ollama 版本、模型檔案和設定
  • 隔離:不會搞亂你主機系統的 Python、CUDA 或其他東西
  • 可攜:建構一次,到處部署
  • 輕鬆清理docker compose down 就沒了

如果你只是個人使用 Gemma 4,直接用 Ollama 更簡單。當你需要跨環境一致的部署或想將 Gemma 4 打包進更大的應用程式堆疊時,Docker 才能發光。

用 Docker Run 快速開始

在 Docker 中讓 Gemma 4 執行起來最快的方式:

# 在 Docker 中執行 Ollama
docker run -d \
  --name gemma4 \
  -p 11434:11434 \
  -v ollama-data:/root/.ollama \
  ollama/ollama

# 下載並執行 Gemma 4
docker exec gemma4 ollama pull gemma4:26b
docker exec -it gemma4 ollama run gemma4:26b

就這樣——三個指令。-v ollama-data:/root/.ollama 確保你的模型在容器重啟時持久化。

使用 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 "Pulling 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——一個完整的 Gemma 4 類 ChatGPT 介面:

# 啟動全部
docker compose up -d

# 下載 Gemma 4
docker exec gemma4-ollama ollama pull gemma4:26b

# 打開網頁介面
open http://localhost:3000

GPU 直通(NVIDIA)

要在 Docker 內使用 GPU,你需要 NVIDIA Container Toolkit:

# 安裝 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 使用 NVIDIA runtime
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.yml 以使用 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

注意: 在 Apple Silicon 的 Mac 上,Docker 在 Linux 虛擬機中執行,無法存取 Metal 加速。在 Mac 上,請改為原生執行 Ollama——你會自動得到 Metal GPU 加速。查看我們的 Mac 效能指南 了解詳情。

持久化模型儲存

模型是大檔案。你不會想在每次容器重啟時重新下載它們。

Named volume(推薦——Docker 管理儲存):

volumes:
  ollama-models:
    driver: local

Bind mount(你選擇路徑——適合管理硬碟空間):

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

多模型設定

想為不同的使用場景執行多個 Gemma 4 大小?簡單:

# 下載多個模型
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 按需載入模型並卸載閒置的模型。只有活躍模型會使用 VRAM。你可以設定模型保持載入的時間:

environment:
  - OLLAMA_KEEP_ALIVE=5m     # 閒置 5 分鐘後卸載
  - OLLAMA_MAX_LOADED_MODELS=2  # 保持最多 2 個模型載入

公開 API

Ollama API 預設在 port 11434 上執行。容器執行後:

# 列出可用模型
curl http://localhost:11434/api/tags

# 生成回應
curl http://localhost:11434/api/chat -d '{
  "model": "gemma4:26b",
  "messages": [{"role": "user", "content": "Hello!"}]
}'

# API 也相容 OpenAI
curl http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemma4:26b",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

詳細的 API 用法請看我們的 API 教學。對於更高吞吐量的正式環境服務,考慮 Docker 中的 vLLM

實用的 Docker 指令

# 查看 log
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

下一步

gemma4 — interact

Stop reading. Start building.

~/gemma4 $ Get hands-on with the models discussed in this guide. No deployment, no friction, 100% free playground.

Launch Playground />
Gemma 4 AI

Gemma 4 AI

Related Guides

如何在 Docker 中執行 Gemma 4(完整容器指南) | 部落格