Apa itu Docker? #

Dalam dunia pengembangan perangkat lunak modern, konsistensi environment adalah salah satu tantangan terbesar. Aplikasi bisa berjalan dengan baik di laptop developer, tetapi gagal di server staging atau production. Di sinilah Docker hadir sebagai solusi.

Docker memungkinkan kita untuk mengemas aplikasi beserta seluruh dependensinya ke dalam satu unit standar yang disebut container, sehingga aplikasi dapat berjalan konsisten di mana pun: laptop, server, VM, maupun cloud.

+--------------------------------------------------+
|                  HOST OS                         |
|                                                  |
|  +------------+   +------------+   +-----------+ |
|  | Container  |   | Container  |   | Container | |
|  |  App A     |   |  App B     |   |  App C    | |
|  |------------|   |------------|   |-----------| |
|  |  Lib &     |   |  Lib &     |   |  Lib &    | |
|  |  Runtime   |   |  Runtime   |   |  Runtime  | |
|  +------------+   +------------+   +-----------+ |
|           \             |             /          |
|            +--------------------------------+    |
|            |        Docker Engine           |    |
|            +--------------------------------+    |
|                                                  |
|                Hardware / VM                     |
+--------------------------------------------------+

Diagram di atas menunjukkan gambaran umum bagaimana Docker bekerja di level sistem: beberapa container berjalan di atas satu Docker Engine, berbagi kernel dari Host OS, namun tetap terisolasi satu sama lain.

Apa Itu Docker? #

Docker adalah platform containerization yang memungkinkan developer untuk:

  • Membangun aplikasi
  • Mengemas aplikasi dan dependensinya
  • Menjalankan aplikasi secara terisolasi

Semua itu dilakukan menggunakan container, bukan virtual machine.

Secara sederhana:

Docker = cara standar untuk menjalankan aplikasi secara konsisten dan portable


Sejarah Singkat Docker #

Sebelum Docker #

Sebelum Docker populer, deployment aplikasi biasanya menggunakan:

  • Bare metal server
  • Virtual Machine (VM) seperti VMware atau VirtualBox

Masalah utama pendekatan ini:

  • VM berat (butuh OS sendiri)
  • Boot lama
  • Konsumsi resource besar
  • Konfigurasi environment sulit konsisten

Lahirnya Docker #

Docker pertama kali diperkenalkan pada tahun 2013 oleh Solomon Hykes, sebagai bagian dari perusahaan dotCloud.

Docker dibangun di atas teknologi Linux yang sudah ada:

  • cgroups → pembatasan resource (CPU, memory)
  • namespaces → isolasi proses
  • union filesystem → layering filesystem

Docker menyatukan teknologi tersebut menjadi platform yang mudah digunakan oleh developer.

Sejak saat itu, Docker berkembang pesat dan menjadi standar industri.


Docker vs Virtual Machine #

AspekDocker ContainerVirtual Machine
OSShare kernel hostOS sendiri
UkuranSangat kecil (MB)Besar (GB)
StartupDetikMenit
ResourceEfisienBoros
IsolasiProses-levelHardware-level

Docker bukan pengganti VM sepenuhnya, tetapi sangat unggul untuk deployment aplikasi.


Konsep Dasar Docker #

Container #

Container adalah unit runtime Docker.

Karakteristik container:

  • Ringan
  • Terisolasi
  • Immutable (idealnya)
  • Mudah dibuat dan dihancurkan

Satu container biasanya menjalankan satu proses utama (misalnya web server).

Image #

Docker Image adalah blueprint dari container.

Image berisi:

  • Base OS (alpine, ubuntu, distroless, dll)
  • Runtime (Go, Node.js, Java, dll)
  • Library & dependency
  • Source code aplikasi

Image bersifat:

  • Read-only
  • Layered
  • Reusable

Dockerfile #

Dockerfile adalah file teks yang berisi instruksi untuk membangun image.

Contoh sederhana:

FROM nginx:alpine
COPY ./html /usr/share/nginx/html

Dockerfile memastikan proses build repeatable dan konsisten.

Docker Engine #

Docker Engine adalah core runtime Docker.

Terdiri dari:

  • Docker Daemon (dockerd)
  • Docker API
  • Docker CLI

Docker Engine bertugas:

  • Build image
  • Menjalankan container
  • Mengelola network & volume

Docker Registry #

Registry adalah tempat menyimpan Docker Image.

Contoh registry populer:

  • Docker Hub
  • GitHub Container Registry
  • GitLab Container Registry
  • Amazon ECR

Registry memungkinkan image dibagikan dan digunakan ulang.


Cara Kerja Docker #

  1. Developer menulis Dockerfile
  2. Docker membangun image dari Dockerfile
  3. Image disimpan di registry
  4. Image dijalankan menjadi container
  5. Container berjalan di Docker Engine

Semua proses ini dapat diotomasi dalam CI/CD.


Mengapa Docker Sangat Populer? #

Beberapa alasan utama:

  • Konsistensi environment
  • Portability tinggi
  • Cepat dan ringan
  • Cocok untuk microservices
  • Fondasi cloud-native & Kubernetes

Docker telah menjadi de facto standard dalam modern software delivery.


Penutup #

Docker bukan sekadar tool, tetapi fondasi dari ekosistem cloud-native modern. Dengan memahami sejarah dan konsep dasarnya, kita bisa:

  • Mendesain aplikasi yang lebih scalable
  • Membuat deployment lebih stabil
  • Membangun pipeline CI/CD yang solid
About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact