- Published on
Docker Series — Episode 5: Best Practice, Keamanan, dan Optimasi Docker
- Authors

- Name
- Chalvin Wiradhika
Episode 5 — Best Practice, Keamanan, dan Optimasi Docker 🔧
Episode terakhir ini berfokus pada praktik penggunaan Docker yang lebih matang:
- struktur image yang efisien
- keamanan container
- pengelolaan resource
- pengelolaan environment & konfigurasi
- praktik umum di lingkungan deployment
🔹 Desain Image yang Efisien
Beberapa prinsip umum:
✔ gunakan base image minimal (alpine / distroless bila sesuai)
✔ gunakan multi‑stage build untuk aplikasi compiled
✔ hanya sertakan file yang diperlukan
✔ gunakan .dockerignore untuk menghindari file tidak relevan
Contoh .dockerignore umum:
node_modules
.git
*.log
build
.env
Image yang kecil menghasilkan:
- waktu build lebih cepat
- distribusi lebih ringan
- permukaan serangan lebih kecil
🔹 Keamanan Dasar Docker
Beberapa langkah yang disarankan:
Hindari Menjalankan sebagai Root
Gunakan user non‑root di dalam container:
RUN adduser -D appuser
USER appuser
Batasi Permission File
RUN chmod -R 755 /app
Gunakan Tag Versi Spesifik
Hindari latest pada deployment production.
FROM nginx:1.27-alpine
Update Base Image Secara Berkala
Lakukan rebuild image jika ada security patch.
🔹 Manajemen Resource Container
Docker mendukung pembatasan resource CPU & memory.
Contoh pembatasan memory:
docker run -m 512m myapp
Pembatasan CPU:
docker run --cpus=1.5 myapp
Tujuannya untuk mencegah satu container memonopoli resource host.
🔹 Pengelolaan Log
Melihat log container:
docker logs -f myapp
Sebaiknya aplikasi mencetak log ke stdout/stderr agar dapat:
- dikumpulkan logging agent
- dianalisis secara terpusat
Hindari menyimpan log ke dalam filesystem container.
🔹 Volumes vs Bind Mount
| Fitur | Volume | Bind Mount |
|---|---|---|
| Managed oleh Docker | ✔ | ✖ |
| Cocok untuk production | ✔ | ✖ (lebih cocok dev) |
| Mengarah ke folder host | ✖ | ✔ |
Gunakan volume untuk data persisten seperti:
- database
- cache
- file storage
🔹 Environment & Secrets
Konfigurasi environment sebaiknya:
- tidak disimpan di dalam image
- dipisahkan per‑environment
Gunakan:
- environment variable
- file
.env - secret manager (pada lingkungan production)
Hindari commit credential ke repository.
🔹 Deployment: Compose vs Orchestrator
Docker Compose cocok untuk:
- development
- local testing
- small staging environment
Untuk skala lebih besar biasanya digunakan:
- Kubernetes
- Docker Swarm (kasus tertentu)
Compose tetap relevan untuk workflow lokal dan CI.
🔹 Checklist Singkat Best Practice
✔ gunakan base image minimal
✔ multi‑stage build untuk binary
✔ hindari user root
✔ batasi resource container
✔ simpan konfigurasi di environment
✔ gunakan volume untuk data persisten
✔ gunakan tag versi yang jelas
✔ rutin rebuild & patch image
🎯 Penutup Series Docker
Pada keseluruhan series ini telah dibahas:
- pengenalan konsep Docker
- image & container lifecycle
- pembuatan image melalui Dockerfile
- orkestrasi multi‑service menggunakan Compose
- best practice & keamanan dasar
Series ini dapat dijadikan fondasi untuk melanjutkan pembahasan ke topik lanjutan seperti:
- container registry & CI/CD
- observability & logging stack
- container orchestration (Kubernetes)
Terima kasih sudah mengikuti sampai akhir.