Published on

Docker Series — Episode 5: Best Practice, Keamanan, dan Optimasi Docker

Authors
  • avatar
    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

FiturVolumeBind 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:

  1. pengenalan konsep Docker
  2. image & container lifecycle
  3. pembuatan image melalui Dockerfile
  4. orkestrasi multi‑service menggunakan Compose
  5. 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.