Belajar Docker dari dasar hingga siap produksi: setup environment, arsitektur & runtime (containerd/runc/OCI), image & container lifecycle, Dockerfile & multi-stage builds, volumes & storage, networking, Docker Compose, registry & image distribution, keamanan kontainer & scanning, observability & monitoring, Docker Swarm, Buildx/BuildKit, integrasi CI/CD, reverse proxy, dev containers, hingga studi kasus deployment production-grade.
Sebelum menjalankan kontainer pertama, ada fondasi yang perlu disiapkan: skill dasar Linux CLI (navigasi filesystem, environment variables, konsep PID, port, dan localhost) hingga pemilihan environment Docker dan verifikasi instalasi client + daemon.

Menelusuri asal-usul containerization: dari era bare-metal dan mesin virtual, masalah klasik "It works on my machine!", lahirnya Docker di tangan Solomon Hykes (PyCon 2013) dan teknologi kernel Linux yang menjadi fondasinya (cgroups, namespaces, chroot) versus virtual machine.

Membedah arsitektur client-server Docker: Docker Client, daemon (dockerd), dan Registry; tumpukan runtime modern (containerd, runc) serta peran standard OCI; hingga empat komponen inti — Image, Container, Volume, dan Network — beserta alur perintah dari CLI ke runc.

Praktik pertama: menjalankan kontainer hello-world dan ubuntu, memahami opsi interaktif (-i, -t, --rm, --name), manajemen kontainer dengan ps, stop, start, dan rm, berinteraksi lewat exec dan logs, hingga port mapping untuk menghubungkan kontainer ke dunia luar.

Memperdalam siklus hidup kontainer: state machine Created, Running, Paused, Stopped, Exited, dan Dead beserta perintah pengendalinya; inspeksi metadata JSON dengan docker inspect dan jq, monitoring real-time dengan top, stats, events, serta makna exit code.

Mengenal Dockerfile sebagai resep pembuatan image: arsitektur layer, build context, perbandingan base image (Alpine vs Debian vs Slim), instruksi inti FROM, WORKDIR, COPY, ADD, RUN, EXPOSE, hingga perbedaan CMD vs ENTRYPOINT, lengkap dengan Dockerfile Node.js yang siap dibangun.

Mendalami Dockerfile level lanjut: membedah ENV vs ARG beserta scope-nya, instruksi USER, LABEL, dan SHELL untuk image yang aman, lalu menguasai .dockerignore, peminimalan layer, urutan instruksi, dan layer caching agar build lebih cepat dan image lebih ramping.

Memecahkan masalah image yang membengkak karena build tooling ikut terbawa: teknik multi-stage build dengan beberapa FROM, menyalin hasil antar stage via COPY --from, membandingkan ukuran image single vs multi-stage, dan kapan memilih Alpine, Distroless, atau scratch.

Menghadapi masalah kontainer stateless: kenapa data hilang saat kontainer di-recreate, memahami tiga jenis storage mount (bind mounts, named volumes, dan tmpfs), mengelola volume lewat CLI, pola backup-restore dengan tar, dan praktik penyimpanan data persisten untuk database produksi.

Menyelami bagaimana kontainer berkomunikasi dan terisolasi: kelima network driver Docker (bridge, host, none, macvlan/ipvlan, overlay), mengapa custom bridge dengan DNS otomatis wajib di produksi, cara kerja docker0, port publishing lewat iptables, dan jebakan-jebakan jaringan yang sering muncul.
