Menguasai container dari sisi infrastruktur: cara kerja container runtime dan image, operasi Docker sehari-hari, konsep orkestrasi Kubernetes dasar, serta peran infra engineer dalam ekosistem container

Setelah di episode 6 kita virtualisasi hardware menjadi VM, kini kita naik satu abstraksi: container. Container bukan virtualisasi baru — ia cara isolasi yang lebih ringan, memakai kernel host yang sama. Perannya di infrastruktur 2026 sudah fundamental: container adalah unit standar beban kerja, dan Kubernetes menjadi platform tempat mereka hidup.
Mengapa topik ini penting? Karena di 2026, "infrastructure engineer" hampir selalu berarti juga "container infrastructure engineer". Kalian akan menyediakan runtime, merancang node, memantau registry image, dan menyiapkan platform container untuk tim aplikasi. Episode ini membangun fondasi yang akan kita dalami lebih jauh di episode 14.
Container mengisolasi proses, bukan hardware. Tiga mekanisme kernel yang menjadi fondasinya:
VM : kernel sendiri + init + app → isolasi penuh, overhead besar
Container : app saja di kernel host → ringan, tetapi isolasi lebih lemahInilah alasan VM dan container tidak saling menggantikan: VM mengisolasi mesin (aman, berat), container mengisolasi proses (ringan, cepat).
Runtime adalah program yang benar-benar menjalankan container. Standar industri adalah OCI (Open Container Initiative). Contoh runtime: containerd (digunakan Docker dan Kubernetes), CRI-O (runtime K8s berbasis Fedora), runc (runtime low-level OCI).
Image adalah template hanya-baca berisi aplikasi + dependensinya. Dari image, container dibuat. Image disimpan di registry — Docker Hub publik, atau registry privat (Harbor, GHCR) untuk produksi.
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/
EXPOSE 80Dockerfile di atas: mulai dari image nginx ringan (Alpine), salin halaman HTML, dan buka port 80. Bayangkan layer-nya: base layer nginx, lalu layer tambahan berisi index.html. Build hanya mengubah layer terakhir — sisanya di-cache.
Sebagai infra engineer, kalian tidak menulis banyak kode aplikasi — kalian mengoperasikan runtime dan memastikan beban kerja sehat.
docker pull nginx:alpine
docker run -d --name web-01 -p 8080:80 nginx:alpine
docker ps
docker logs web-01
docker exec -it web-01 shDua konsep yang wajib dipahami sebelum produksi:
Warning
Container berjalan sebagai root secara default — itu berbahaya. Praktik produksi mewajibkan menjalankan container dengan user non-root dan memakai rootless container jika memungkinkan. Di episode 11 kita akan mengeraskan container lebih jauh bersama security infrastructure.
Untuk lingkungan kecil atau development, Docker Compose mengatur beberapa container dalam satu file:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
app:
image: myapp:latest
environment:
- DATABASE_URL=postgres://user:pass@db:5432/app
db:
image: postgres:16
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:docker compose up -d
docker compose ps
docker compose logs -f appCompose adalah titik awal yang baik, tetapi ia tidak bisa menyembuhkan node yang mati, melakukan rolling upgrade, atau menyeimbangkan beban — untuk itu kalian butuh orchestrator.
Kubernetes (K8s) mengelola container di banyak node: scheduling, health check, scaling, service discovery, dan rolling update. Konsep dasar yang wajib kalian pahami dari sisi infra:
| Konsep | Fungsi |
|---|---|
| Node | Mesin (VM/bare metal) tempat pod berjalan |
| Pod | Unit paling kecil; 1+ container yang dijadwalkan bersama |
| Deployment | Mengatur replika pod dan rolling update |
| Service | Alamat stabil untuk mengakses pod yang bisa datang-pergi |
| Ingress | Pintu masuk HTTP/HTTPS ke dalam cluster |
| Namespace | Pemisahan logis dalam cluster |
Ini pola standar: user → Ingress → Service → banyak Pod tersebar di beberapa Node. Pod boleh mati dan lahir baru — Service selalu menunjuk ke yang sehat.
Operasi dasar yang akan kalian pakai setiap hari:
kubectl get nodes
kubectl get pods -A
kubectl get deployment web
kubectl scale deployment web --replicas=3
kubectl rollout status deployment/weblatest di produksi: image berubah diam-diam → produksi tidak reproducible. Selalu pin versi hash digest.docker logs per container tidak cukup untuk produksi (episode 9).Pada episode 7 ini kalian telah menguasai dasar container & orkestrasi:
Di episode 8 selanjutnya kita masuk ke jantung efisiensi profesi ini: IaC & automation — Terraform/OpenTofu untuk provisioning dan Ansible untuk configuration management. Sampai jumpa di episode 8!