Masdika Loading..
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portfolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Panduan Lengkap Install K3s di Ubuntu dan Konfigurasi Remote Kubectl dari Windows PC/Laptop
  • Deploy Next.js di Kubernetes dengan Ingress + SSL Let’s Encrypt
  • Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager
  • Panduan Lengkap Deploy WordPress + Redis + MySQL di Kubernetes dengan SSL Cloudflare
  • Panduan Lengkap Install & Konfigurasi Ceph 3 Node dengan RGW (S3 Compatible)

Recent Comments

  1. Masdika.ID on Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager
  2. Sahrull on Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager
  3. Masdika.ID on Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager
  4. Sahrull on Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager
  5. Riyan on Cara Kirim Notifikasi Otomatis SSL Expired via Email (Lengkap + Bash Script)

Categories

  • Tutorial

Masddika.BIZ.ID

  • About
  • Terms & Conditions
  • Privacy Policy
BLOG POST

Hardening Docker Container: Panduan Lengkap & Mudah untuk Pemula

August 4, 2025 Tutorial by Masdika.ID
Hardening Docker Container: Panduan Lengkap & Mudah untuk Pemula

Apa Itu Hardening Docker?

Hardening Docker artinya memperkuat keamanan container agar tidak mudah diretas atau disalahgunakan. Docker sangat membantu dalam deploy aplikasi, tapi kalau tidak diamankan, bisa jadi celah bagi attacker.

Panduan ini akan menjelaskan praktik-praktik terbaik hardening Docker dengan bahasa sederhana, cocok untuk pemula DevOps atau siapa pun yang baru belajar Docker.

1. Pakai Base Image yang Kecil dan Aman 🏗️

Gunakan image seperti alpine, ubuntu-minimal, atau distroless. Semakin kecil image, semakin sedikit celah keamanannya.

Contoh Dockerfile:

FROM alpine:latest

Kenapa penting? Karena image besar sering bawa banyak paket yang tidak dipakai tapi bisa jadi lubang keamanan.

2. Jangan Jalankan Sebagai Root 🙅‍♂️

Secara default, container pakai user root. Bahaya kalau container diretas.

Solusi: Tambahkan user non-root di Dockerfile.

RUN addgroup -S app && adduser -S app -G app
USER app

3. Scan Image dari Celah Keamanan 🔍

Gunakan tools seperti Trivy untuk mendeteksi celah (vulnerabilities).

Cara pakai Trivy:

trivy image nama-image-kamu

4. Jangan Pakai Tag latest 📌

Tag latest bisa berubah-ubah, bikin build tidak konsisten.

Contoh salah:

FROM node:latest

Contoh benar:

FROM node:18.16.0

5. Batasi Resource Container 📉

Biar satu container tidak menghabiskan semua RAM/CPU server.

Contoh:

docker run --memory="256m" --cpus="0.5" app

6. Buat Filesystem Jadi Read-Only 🔒

Supaya container tidak bisa nulis ke sistem file (kecuali memang perlu).

Contoh:

docker run --read-only app

7. Buang File/Library yang Tidak Dipakai ✂️

Pakai multi-stage build, jadi cuma bawa hasil akhir ke image production.

Contoh:

FROM golang:alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o app

FROM alpine:latest
COPY --from=builder /app/app /app
ENTRYPOINT ["/app"]

8. Rutin Update Image 🔄

Update image atau rebuild secara berkala supaya dapat patch keamanan terbaru.

Tips: Pakai CI/CD pipeline yang build ulang otomatis misalnya tiap minggu.

9. Simpan Password Secara Aman 🔐

Jangan hardcode password di Dockerfile atau .env. Pakai secret manager!

Contoh:

  • Docker Swarm: docker secret
  • Kubernetes: pakai Secret object
  • Vault, AWS Secrets Manager, dsb

10. Monitor Aktivitas Container 📊

Gunakan tools seperti:

  • Falco: deteksi aktivitas mencurigakan
  • Promtail + Grafana Loki: pantau log container

11. Jangan Pakai Mode Jaringan host 🌐

Mode ini membuat container share IP dengan host, bisa jadi bahaya.

Solusi:
Gunakan bridge network (default Docker) atau overlay jika pakai Swarm/K8s.

12. Kurangi Hak Istimewa Container ⚙️

Jangan kasih semua kemampuan Linux ke container.

Contoh:

docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE app

13. Gunakan Profil Keamanan Linux (seccomp, AppArmor) 🧱

Docker punya profil seccomp default untuk batasi syscall berbahaya.

Contoh:

docker run --security-opt seccomp=default.json app

14. Matikan Fitur Tidak Penting ❌

Kalau tidak butuh fitur seperti Content Trust, matikan aja.

Contoh:

DOCKER_CONTENT_TRUST=0 docker pull app

15. Gunakan Registry Pribadi 🗂️

Upload image ke registry sendiri seperti:

  • GitHub Container Registry
  • AWS ECR
  • Docker Registry lokal

Ini lebih aman dan kamu bisa kontrol aksesnya.

Kesimpulan

Docker itu powerful, tapi juga rawan kalau Tidak dijaga keamanannya. Praktik-praktik di atas adalah langkah awal yang sangat penting buat DevOps dan engineer pemula supaya deployment makin aman.

Share:
Tags: containerdevopsdockerdockerfilehardening
Related Posts
Deploy Next.js di Kubernetes dengan Ingress + SSL Let’s Encrypt

Buat kamu yang lagi Deploy aplikasi dengan Next.js dan pengen jalan di Kubernetes dengan domain custom + SSL otomatis, artikel…

Deploy Next.js di Docker (Frontend Only) dengan pnpm

🌟 Apa itu Next.js ? Next.js adalah framework React yang populer untuk membangun aplikasi web modern. Dengan fitur SSR (Server…

Post navigation

Prev
Next
1 Comment
  • Dany 7:29 pm August 4, 2025 Reply

    Thanks mas

Write a comment Cancel Reply


© 2025 www.masdika.id — Semua hak cipta dilindungi