Docker memberimu deployment AI yang reproducible dan terisolasi. Container yang sama, hasil yang sama — entah di laptop, server staging, atau produksi. Tidak ada lagi "ini berfungsi di mesin saya."
Mari kita set up Gemma 4 di Docker dari awal.
Mengapa Docker untuk AI?
- Reproducible: Pin versi Ollama, file model, dan config
- Terisolasi: Tidak akan mengacaukan Python, CUDA, atau apa pun di sistem host
- Portabel: Build sekali, deploy di mana saja
- Mudah dibersihkan:
docker compose downdan selesai
Jika kamu hanya menjalankan Gemma 4 untuk penggunaan pribadi, Ollama langsung lebih sederhana. Docker bersinar saat kamu butuh deployment konsisten di berbagai lingkungan atau ingin membundel Gemma 4 ke stack aplikasi yang lebih besar.
Quick Start dengan Docker Run
Cara tercepat menjalankan Gemma 4 di Docker:
# Jalankan Ollama di Docker
docker run -d \
--name gemma4 \
-p 11434:11434 \
-v ollama-data:/root/.ollama \
ollama/ollama
# Pull dan jalankan Gemma 4
docker exec gemma4 ollama pull gemma4:26b
docker exec -it gemma4 ollama run gemma4:26bSelesai — tiga perintah. -v ollama-data:/root/.ollama memastikan modelmu persist saat container restart.
Dockerfile dengan Ollama
Untuk kontrol lebih, build image kustom:
FROM ollama/ollama:latest
# Set environment
ENV OLLAMA_HOST=0.0.0.0
ENV OLLAMA_KEEP_ALIVE=24h
# Buat startup script yang pull model saat pertama run
COPY <<'EOF' /start.sh
#!/bin/bash
ollama serve &
sleep 5
# Pull model jika belum ada
if ! ollama list | grep -q "gemma4:26b"; then
echo "Pulling Gemma 4 26B..."
ollama pull gemma4:26b
fi
# Keep container running
wait
EOF
RUN chmod +x /start.sh
EXPOSE 11434
CMD ["/start.sh"]Build dan jalankan:
docker build -t gemma4-server .
docker run -d --name gemma4 -p 11434:11434 -v ollama-data:/root/.ollama gemma4-serverDocker Compose (Direkomendasikan)
Untuk setup yang proper, gunakan 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: localIni memberimu Ollama + Open WebUI — antarmuka lengkap seperti ChatGPT untuk Gemma 4:
# Start semuanya
docker compose up -d
# Pull Gemma 4
docker exec gemma4-ollama ollama pull gemma4:26b
# Buka web UI
open http://localhost:3000GPU Passthrough (NVIDIA)
Untuk menggunakan GPU-mu di dalam Docker, kamu butuh NVIDIA Container Toolkit:
# Instal 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
# Konfigurasi Docker menggunakan NVIDIA runtime
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# Verifikasi
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smiUpdate docker-compose.yml-mu untuk menggunakan 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-stoppedCatatan: Di Mac dengan Apple Silicon, Docker berjalan di VM Linux dan tidak bisa mengakses akselerasi Metal. Untuk Mac, jalankan Ollama secara native saja — kamu akan otomatis mendapat akselerasi GPU Metal. Lihat panduan performa Mac kami untuk detail.
Penyimpanan Model Persisten
Model adalah file besar. Kamu tidak ingin mengunduhnya ulang setiap kali container restart.
Named volume (direkomendasikan — Docker mengelola penyimpanan):
volumes:
ollama-models:
driver: localBind mount (kamu pilih path — bagus untuk mengelola ruang disk):
volumes:
- /data/ollama-models:/root/.ollamaCek ukuran penyimpanan model:
docker exec gemma4-ollama du -sh /root/.ollama/models| Model | Perkiraan Ukuran (Q4) |
|---|---|
| Gemma 4 E2B | ~1.5 GB |
| Gemma 4 E4B | ~2.5 GB |
| Gemma 4 26B | ~15 GB |
| Gemma 4 31B | ~18 GB |
Setup Multi-Model
Ingin menjalankan berbagai ukuran Gemma 4 untuk kasus penggunaan berbeda? Mudah:
# Pull berbagai model
docker exec gemma4-ollama ollama pull gemma4:e4b # Cepat, tugas simpel
docker exec gemma4-ollama ollama pull gemma4:26b # Kebanyakan tugas
docker exec gemma4-ollama ollama pull gemma4:31b # Kualitas maksimal
# List semua model
docker exec gemma4-ollama ollama listOllama memuat model sesuai permintaan dan melepas yang idle. Hanya model aktif yang menggunakan VRAM. Kamu bisa mengonfigurasi berapa lama model tetap dimuat:
environment:
- OLLAMA_KEEP_ALIVE=5m # Unload setelah 5 menit idle
- OLLAMA_MAX_LOADED_MODELS=2 # Keep hingga 2 model loadedMengekspos API
API Ollama berjalan di port 11434 secara default. Setelah container-mu berjalan:
# List model yang tersedia
curl http://localhost:11434/api/tags
# Generate respons
curl http://localhost:11434/api/chat -d '{
"model": "gemma4:26b",
"messages": [{"role": "user", "content": "Halo!"}]
}'
# API juga kompatibel dengan OpenAI
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gemma4:26b",
"messages": [{"role": "user", "content": "Halo!"}]
}'Untuk penggunaan API detail, lihat tutorial API kami. Untuk serving grade produksi dengan throughput lebih tinggi, pertimbangkan vLLM di Docker.
Perintah Docker yang Berguna
# Lihat logs
docker compose logs -f ollama
# Cek penggunaan resource
docker stats gemma4-ollama
# Masuk ke container
docker exec -it gemma4-ollama bash
# Stop semuanya
docker compose down
# Stop dan hapus data model
docker compose down -v
# Update Ollama image
docker compose pull && docker compose up -dLangkah Selanjutnya
- Deploy untuk produksi: panduan vLLM + Docker
- Gunakan API di aplikasimu: tutorial API
- Dapatkan JSON reliable dari Gemma 4: panduan structured output
- Jalankan secara native di Mac: panduan performa 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 />


