Belajar Docker #

Docker adalah salah satu teknologi paling berpengaruh di dunia software engineering modern. Hampir semua engineer backend, DevOps, dan cloud engineer bekerja dengan Docker setiap hari — entah sebagai alat lokal untuk development, fondasi microservice, atau target deployment di Kubernetes. Website ini adalah dokumentasi lengkap Docker dalam bahasa Indonesia yang disusun sebagai referensi jangka panjang, bukan kumpulan perintah yang harus dihafal.

Fokus pembahasan di sini bukan cara menjalankan perintah Docker, tapi mengapa Docker bekerja seperti sekarang, kapan harus menggunakan fitur tertentu, dan apa jebakan umum yang harus dihindari. Kamu akan menemukan diagram Mermaid untuk memvisualisasikan konsep, pasangan kode anti-pattern dan solusi untuk setiap topik, serta tabel perbandingan ketika ada lebih dari satu pilihan yang masuk akal. Setelah membaca website ini, kamu tidak hanya bisa menjalankan Docker — kamu juga bisa mendesain, men-debug, dan mengoptimalkannya dengan percaya diri.

Untuk Siapa Website Ini? #

Website ini disusun untuk berbagai level dan peran. Tentukan posisi kamu, lalu mulai dari section yang sesuai.

Peran Tingkat Pengalaman Mulai Dari
Developer Pemula Baru pertama kali mendengar Docker Basic
Backend Developer Sudah pakai Docker sehari-hari, ingin paham mendalam Architecture + Storage + Network
Frontend Developer Ingin setup local dev yang konsisten lintas anggota tim Local Development
DevOps / SRE Bertanggung jawab atas deployment dan operasional Architecture + Dockerfile + Docker Compose
Cloud Engineer Mendesain infrastruktur container di cloud Architecture + Dockerfile + Best Practice
Tech Lead / Arsitek Membuat keputusan standar dan tooling untuk tim Best Practice di setiap section
Mahasiswa / Pelajar Belajar Docker untuk tugas kuliah atau sertifikasi Basic → Architecture → Dockerfile

Kalau peran kamu tidak ada di daftar, jangan khawatir — semua section ditulis dengan bahasa yang sama, dari yang paling dasar ke yang palingadvanced. Kamu bisa mulai dari Basic dan berhenti di section yang sesuai dengan kebutuhan kamu.

Apa yang Akan Kamu Pelajari? #

Website ini mencakup Docker secara menyeluruh, dari konsep paling dasar hingga praktik containerization modern. Berikut adalah ringkasan outcomes yang akan kamu capai:

  • Memahami konsep inti containerization — apa bedanya dengan VM, bagaimana namespace dan cgroups bekerja, dan mengapa container jauh lebih ringan dari virtual machine.
  • Menguasai arsitektur Docker — Docker Engine, daemon, CLI, registry, dan cara Docker berinteraksi dengan kernel Linux di balik layar.
  • Menulis Dockerfile yang reproducible — multi-stage build, optimasi layer, cache strategy, dan security best practice.
  • Mengelola storage dan data — perbedaan volume dan bind mount, lifecycle, backup, dan strategi data persistence untuk container production.
  • Mendesain network untuk container — bridge, host, overlay, DNS internal, dan service discovery untuk arsitektur multi-container.
  • Mengorkestrasikan multi-service dengan Docker Compose — dependency management, healthcheck, environment variable, dan workflow local development.
  • Membangun local development stack untuk 22 framework — Spring Boot, Quarkus, Micronaut, Gin, Fiber, Django, Rails, Express, Nest, Fastify, React, Vue, Angular, dan lainnya.

Setiap topik dibahas dengan kedalaman yang konsisten — bukan permukaan, tapi juga tidak bertele-tele ke teori yang tidak relevan. Targetnya: setelah membaca satu section, kamu bisa langsung mengaplikasikan di proyek nyata.

Peta Materi — Learning Path #

Tujuh section di website ini disusun berurutan. Tiap section membangun fondasi untuk section berikutnya. Diagram berikut menunjukkan alur belajar yang direkomendasikan:

flowchart TD
    Start([Kamu mulai di sini]) --> A[1. Basic]
    A --> B[2. Architecture]
    B --> C[3. Storage]
    B --> D[4. Network]
    C --> E[5. Dockerfile]
    D --> E
    E --> F[6. Docker Compose]
    F --> G[7. Local Development]
    G --> End([Siap deploy ke production])

    style Start fill:#e3f2fd,stroke:#1976d2
    style End fill:#c8e6c9,stroke:#388e3c
    style A fill:#fff3e0,stroke:#f57c00
    style B fill:#fff3e0,stroke:#f57c00
    style C fill:#fff3e0,stroke:#f57c00
    style D fill:#fff3e0,stroke:#f57c00
    style E fill:#fff3e0,stroke:#f57c00
    style F fill:#fff3e0,stroke:#f57c00
    style G fill:#fff3e0,stroke:#f57c00

Kalau kamu sudah familiar dengan salah satu section (misalnya sudah pernah pakai Docker Compose di production), kamu bisa langsung loncat ke section yang lebih advanced. Tapi untuk pertama kali, sangat disarankan mengikuti urutan dari Basic ke Local Development.

Tujuh Section dalam Website Ini #

Setiap section memiliki bobot (weight) yang menentukan urutannya di sidebar Hugo Book. Tabel berikut merangkum ketujuh section:

No Section Topik Utama Jumlah Artikel
1 Basic Apa itu Docker, container vs VM, deployment tradisional, use case 4
2 Architecture Docker Engine, daemon, CLI, image, container, registry, lifecycle 10
3 Storage Layered filesystem, volume, bind mount, backup, sharing data 10
4 Network Default network, bridge, host, port mapping, DNS, user-defined 10
5 Dockerfile Sintaks, instruction, multi-stage, optimasi, security 12
6 Docker Compose Struktur, multi-container, env, volume, network, healthcheck, local dev 9
7 Local Development Setup stack untuk 22 framework (backend, frontend, JVM) + best practice 23

Total ada 78 artikel di seluruh website. Setiap artikel ditulis dengan target minimal 15.000 karakter untuk memastikan pembahasan cukup mendalam dan aplikatif.

Cara section bekerja di Hugo Book

Tiap section punya file _index.md (sangat pendek, hanya konfigurasi) yang menentukan judul dan urutan. Artikel-artikel di dalam section diakses lewat sidebar. Kamu tidak perlu membuka _index.md secara manual — klik judul section di sidebar untuk navigasi.

Cara Membaca Website Ini #

Ada beberapa cara membaca website ini, tergantung tujuan kamu:

  1. Linear (urut dari awal sampai akhir) — cocok untuk pemula atau siapapun yang ingin pemahaman menyeluruh. Mulai dari Basic dan baca semua artikel di setiap section secara berurutan. Estimasi waktu: 2-3 minggu dengan节奏 belajar 1-2 jam per hari.

  2. Targeted (loncat ke section tertentu) — cocok untuk yang sudah familiar dengan Docker dan ingin memperdalam topik spesifik. Misalnya, langsung ke Dockerfile untuk belajar optimasi image, atau ke Local Development untuk setup stack framework tertentu.

  3. Referensi (buka sesuai kebutuhan) — cocok untuk yang sudah pernah baca dan butuh mengingat sintaks atau pattern. Gunakan sidebar atau kolom pencarian untuk navigasi cepat ke artikel yang relevan.

  4. Pair programming (baca sambil praktik) — cara paling efektif. Buka artikel di satu jendela, terminal di jendela lain, dan praktikkan setiap contoh kode secara real-time. Setiap artikel di website ini ditulis untuk pendekatan ini — semua kode bisa langsung di-copy dan dijalankan.

Rekomendasi pribadi untuk pemula

Jangan coba baca semuanya sekaligus. Pilih satu section, baca artikel pertama (biasanya Overview), praktekan contoh-contohnya, baru pindah ke artikel berikutnya. Setelah selesai satu section, ulangi pola yang sama untuk section berikutnya. Ritme ini akan memberikan pemahaman yang lebih melekat dibanding membaca 10 artikel dalam satu hari tanpa praktik.

Kebutuhan Sebelum Mulai #

Sebelum menyelami pembahasan Docker, pastikan kamu sudah memiliki beberapa kebutuhan dasar. Tidak perlu menguasai semuanya — yang penting paham konsep umumnya.

Kebutuhan WAJIB:
  ✓ Terminal dasar (cd, ls, cat, echo, pipe)
  ✓ Editor teks (VS Code, Vim, Nano, atau lainnya)
  ✓ Koneksi internet untuk pull image dari registry

Sangat DISARANKAN:
  ✓ Familiar dengan Linux command line dasar
  ✓ Pemahaman tentang proses dan file system
  ✓ Pengalaman dengan salah satu bahasa pemrograman
  ✓ Install Docker Desktop atau Docker Engine di mesin kamu

Opsional (berguna tapi tidak wajib):
  ✓ Pengalaman dengan Git
  ✓ Pemahaman dasar tentang jaringan (IP, port, DNS)
  ✓ Pemahaman tentang YAML syntax

Kebutuhan WAJIB bisa kamu pelajari sambil membaca. Yang paling penting adalah niat untuk praktik — Docker adalah teknologi yang harus dipraktikkan, bukan hanya dibaca. Setiap artikel di website ini mengasumsikan kamu sudah menginstall Docker di mesin lokal dan siap menjalankan perintah yang dicontohkan.

Cara Install Docker #

Docker tersedia untuk semua platform utama. Pilih cara install yang sesuai dengan sistem operasi kamu:

# macOS (Homebrew)
brew install --cask docker

# Ubuntu / Debian
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Windows (PowerShell, dengan WSL2)
winget install Docker.DockerDesktop

# Arch Linux / Manjaro
sudo pacman -S docker docker-compose

Untuk production server (misalnya VPS atau dedicated server), install Docker Engine tanpa Docker Desktop. Untuk laptop development, Docker Desktop memberikan GUI yang nyaman dan integrasi dengan filesystem sharing. Keduanya compatible dengan semua perintah yang dibahas di website ini.


Verifikasi Environment #

Setelah install, pastikan Docker berjalan dengan benar. Jalankan tiga perintah ini secara berurutan:

# 1. Cek versi Docker
docker --version
# Output yang diharapkan: Docker version 24.0+ (atau lebih baru)

# 2. Cek status Docker daemon
docker info
# Output: informasi lengkap tentang server, storage driver, registry, dll

# 3. Jalankan container pertama
docker run hello-world
# Output: pesan "Hello from Docker!" jika semua bekerja

Kalau docker run hello-world menampilkan pesan “Hello from Docker!” dan exit dengan status 0, environment kamu sudah siap. Dari titik ini, kamu bisa mengikuti semua contoh di website ini tanpa setup tambahan.

Kalau ada error, beberapa penyebab umum dan solusinya:

  • “Cannot connect to the Docker daemon” — daemon belum jalan. Jalankan sudo systemctl start docker (Linux) atau buka Docker Desktop (macOS/Windows).
  • “Permission denied” saat docker tanpa sudo — tambahkan user ke group docker: sudo usermod -aG docker $USER, lalu logout dan login ulang.
  • “Image not found” untuk image lokal — pastikan kamu menjalankan perintah dari direktori yang berisi Dockerfile, atau gunakan image dari registry publik.

Biasakan untuk menjalankan setiap contoh perintah di website ini langsung di terminal kamu. Kalau ada error, baca pesan error dengan teliti — Docker memberikan pesan yang informatif dan jarang misleading. Setiap error yang kamu temui dan pecahkan adalah pengalaman nyata yang tidak akan kamu dapat hanya dengan membaca. Pertahankan rasa ingin tahu ini sampai kamu menyelesaikan section Local Development.

Prinsip Penulisan Konten #

Website ini ditulis dengan beberapa prinsip yang konsisten di seluruh artikel. Memahami prinsip ini akan membantumu mendapatkan value maksimal dari setiap bacaan.

Mengapa sebelum Bagaimana. Setiap artikel dimulai dengan penjelasan mengapa sebuah fitur atau konsep ada, sebelum masuk ke bagaimana cara menggunakannya. Kalau kamu sudah paham konteks dan motivasi di balik sebuah teknologi, detail teknis akan lebih mudah diingat dan lebih intuitif saat diterapkan.

Anti-pattern selalu disandingkan dengan solusi. Mayoritas artikel di website ini menampilkan dua blok kode berdampingan — satu dengan komentar // ANTI-PATTERN: dan satu lagi dengan // BENAR:. Pendekatan ini terbukti lebih efektif daripada hanya menampilkan solusi, karena pembaca langsung mengenali kesalahan umum yang mungkin mereka lakukan tanpa sadar.

Visualisasi melalui Mermaid. Setiap konsep yang bersifat struktural atau prosedural divisualisasikan dengan diagram Mermaid — flowchart untuk alur, sequence diagram untuk interaksi, state diagram untuk lifecycle, dan timeline untuk evolusi. Diagram membantu memahami big picture dengan cepat. ASCII art tidak pernah digunakan untuk diagram (hanya untuk struktur direktori).

Konsistensi terminologi. Istilah teknikal bahasa Inggris (seperti container, image, registry, layer, overlay network) dibiarkan apa adanya. Istilah yang punya padanan umum di bahasa Indonesia (seperti volume, jaringan, lapisan) baru diterjemahkan. Ini menjaga konsistensi dengan dokumentasi resmi Docker dan ecosystem tooling di sekitarnya.

Konten yang bisa langsung dipraktekan. Semua blok kode di website ini adalah kode yang bisa di-copy dan dijalankan langsung di terminal. Tidak ada pseudocode, placeholder yang tidak jelas, atau contoh yang disederhanakan sampai失去 nilai edukatifnya. Kalau ada penyederhanaan, akan diberi catatan eksplisit di komentar kode.

Disclaimer

Website ini adalah dokumentasi edukatif, bukan pengganti dokumentasi resmi Docker di docs.docker.com. Selalu rujuk ke dokumentasi resmi untuk informasi paling akurat, terutama untuk fitur-fitur baru yang mungkin belum dibahas di sini. Website ini juga bukan afiliasi resmi Docker, Inc. — semua pendapat dan contoh adalah hasil pengalaman praktis penulis dan kontributor.

Ringkasan #

  • Tujuh section disusun berurutan dari Basic (apa itu Docker) ke Local Development (setup stack untuk 22 framework), dengan total 78 artikel dan target 15.000+ karakter per artikel.
  • Filosofi penulisan mengutamakan konteks dan motivasi sebelum detail teknis, dengan pasangan anti-pattern dan solusi di setiap topik yang relevan.
  • Visualisasi Mermaid (flowchart, sequence, state, timeline) digunakan untuk semua diagram — ASCII art hanya untuk struktur direktori dan checklist.
  • Audience utama adalah developer, DevOps, cloud engineer, dan tech lead — dari pemula hingga yang sudah berpengalaman — dengan entry point berbeda untuk tiap peran.
  • Cara membaca yang paling efektif adalah linear dengan praktik langsung: buka artikel di satu jendela, terminal di jendela lain, dan eksekusi setiap contoh kode secara real-time.
  • Kebutuhan minimum adalah terminal dasar dan Docker terinstall di mesin lokal — semua contoh kode dirancang untuk bisa dijalankan langsung tanpa setup tambahan.
  • Terminologi teknikal bahasa Inggris dibiarkan apa adanya untuk konsistensi dengan dokumentasi resmi dan ecosystem Docker; padanan Indonesia hanya digunakan untuk istilah yang punya padanan umum.
  • Disclaimer: website ini adalah dokumentasi edukatif, bukan pengganti docs.docker.com. Selalu rujuk dokumentasi resmi untuk informasi paling akurat dan terkini.

Mulai dari Basic: Apa itu Docker? →
About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact