Dockerは再現可能で分離されたAIデプロイを提供します。同じコンテナ、同じ結果 — ノートPC、ステージングサーバー、本番環境問わず。「僕のマシンでは動く」はもう終わり。
ゼロからDockerでGemma 4をセットアップしましょう。
なぜAIにDocker?
- 再現可能:Ollamaのバージョン、モデルファイル、設定をピン留め
- 分離:ホストシステムのPython、CUDAなどに影響を与えない
- ポータブル:一度ビルドすればどこでもデプロイ可能
- 簡単なクリーンアップ:
docker compose downで消える
個人用にGemma 4を動かすだけなら、Ollamaを直接使う方がシンプルです。Dockerは、環境間で一貫したデプロイが必要な場合や、Gemma 4をより大きなアプリケーションスタックにバンドルしたい場合に真価を発揮します。
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これだけ — 3つのコマンド。-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-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: localこれでOllama + Open WebUIが動きます — Gemma 4用のChatGPTライクな完全インターフェース:
# すべて起動
docker compose up -d
# Gemma 4をプル
docker exec gemma4-ollama ollama pull gemma4:26b
# Web UIを開く
open http://localhost:3000GPUパススルー(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ランタイムを使うよう設定
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# 確認
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smidocker-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 VM内で実行され、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 |
マルチモデル構成
異なるユースケース向けに複数の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 listOllamaは必要に応じてモデルをロードし、アイドル状態のモデルをアンロードします。アクティブなモデルだけがVRAMを使用します。モデルがロードされ続ける時間を設定できます:
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": "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コマンド
# ログを表示
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を使用:APIチュートリアル
- Gemma 4から信頼できるJSONを取得:構造化出力ガイド
- Macでネイティブに実行:Macパフォーマンスガイド
Stop reading. Start building.
~/gemma4 $ Get hands-on with the models discussed in this guide. No deployment, no friction, 100% free playground.
Launch Playground />


