Setiap aplikasi membutuhkan lingkungan yang tepat untuk bisa berjalan: versi bahasa pemrograman yang cocok, kumpulan library (pustaka kode pendukung), sampai konfigurasi sistem operasi tertentu. Selama aplikasi hanya berjalan di satu komputer, semuanya aman. Masalah baru terasa ketika aplikasi harus berpindah mesin — dari laptop developer ke server, atau dari satu server ke server lain.

Di sinilah muncul keluhan klasik di dunia pengembangan software: "di komputer saya berjalan normal, tetapi di server error". Penyebabnya hampir selalu sama. Versi PHP atau Python di server berbeda, ada library yang belum terpasang, atau konfigurasi server tidak identik dengan mesin pengembangan.

Docker adalah teknologi yang lahir untuk menjawab masalah tersebut. Artikel ini membahas pengertian Docker, konsep image dan container, cara kerjanya di level sistem operasi, perbedaannya dengan virtual machine, sampai perintah dasar untuk mulai mencobanya.

Apa Itu Docker?

Docker adalah platform open source untuk mengemas, mendistribusikan, dan menjalankan aplikasi di dalam container. Container adalah paket berisi aplikasi lengkap dengan seluruh dependency-nya — library, runtime, dan konfigurasi yang dibutuhkan — yang berjalan terisolasi dari program lain di mesin yang sama. Karena semua kebutuhan aplikasi ikut dikemas, container yang sama akan berjalan identik di laptop, server kantor, maupun cloud.

Nama Docker diambil dari istilah dock worker, pekerja pelabuhan yang memindahkan peti kemas. Filosofinya serupa: peti kemas membuat barang apa pun bisa diangkut kapal mana pun karena ukurannya standar. Docker melakukan hal yang sama untuk software — apa pun isi aplikasinya, kemasannya seragam, sehingga bisa dijalankan di mesin mana pun yang memiliki Docker.

Docker pertama kali diperkenalkan oleh Solomon Hykes di konferensi PyCon pada Maret 2013. Awalnya ia merupakan proyek internal dotCloud, perusahaan layanan cloud tempat Hykes bekerja. Sambutan komunitas begitu besar sampai perusahaan tersebut berganti nama menjadi Docker Inc. Sejak awal kodenya dirilis sebagai software open source berlisensi Apache 2.0, dan kini komponen intinya dikelola melalui Moby Project.

Lebih dari satu dekade kemudian, Docker praktis menjadi standar industri. Stack Overflow Developer Survey 2025 mencatat 71,1% responden menggunakan Docker — angka tertinggi di kategori tool cloud development, naik 17 poin hanya dalam setahun.

Image, Container, dan Registry: Tiga Istilah yang Sering Tertukar

Sebelum masuk ke cara kerja, ada tiga istilah yang perlu Anda pahami lebih dulu. Ketiganya sering dipakai bergantian, padahal artinya berbeda.

Docker image adalah template read-only (hanya-baca) yang berisi seluruh isi paket aplikasi: kode, runtime, library, dan konfigurasi. Cara paling mudah memahaminya: image seperti file installer aplikasi. Ia tidak berjalan; ia hanya memuat semua yang dibutuhkan. Dari satu file installer, Anda bisa memasang aplikasi yang sama di banyak komputer.

Container adalah instans hidup dari sebuah image — aplikasi yang benar-benar sedang berjalan. Dari satu image, Anda bisa menjalankan satu, lima, atau seratus container sekaligus, dan semuanya identik. Setiap container memiliki area tulisnya sendiri, sehingga perubahan di satu container tidak memengaruhi container lainnya.

Image sendiri dibuat dari Dockerfile — file teks berisi instruksi langkah demi langkah: berangkat dari sistem dasar apa, menyalin kode dari mana, dan menjalankan perintah apa. Menariknya, image dibangun berlapis (layer). Ketika Anda mengubah satu baris kode, hanya lapisan yang berubah yang dibangun ulang — lapisan sistem dasar diambil dari cache.

Terakhir, registry adalah gudang tempat image disimpan dan dibagikan. Registry publik terbesar adalah Docker Hub. Menurut Docker, per akhir 2024 platform ini menampung sekitar 8 juta repositori image dan melayani belasan miliar unduhan setiap bulan. Dari sinilah Anda bisa mengunduh image resmi MySQL, Nginx, WordPress, dan ribuan aplikasi lain tanpa membangunnya sendiri.

Alur lengkapnya membentuk satu siklus:

Diagram alur kerja Dockerfile, image, registry, dan container.Diagram alur kerja Dockerfile, image, registry, dan container.

Anda menulis Dockerfile, membangunnya menjadi image, mengunggah image ke registry, lalu mesin mana pun dapat mengunduhnya dan menjalankannya sebagai container.

Dari Mana Ringannya Container Berasal?

Docker sering disebut "ringan", dan alasannya terletak pada cara container diisolasi. Docker tidak membuat komputer tiruan untuk setiap aplikasi. Ia memanfaatkan fitur-fitur yang sudah tersedia di dalam kernel Linux (inti sistem operasi yang mengatur hardware dan seluruh proses).

Bayangkan sebuah rumah kos. Semua kamar berdiri di atas satu fondasi dan memakai satu instalasi listrik serta air yang sama. Namun setiap penghuni hanya bisa melihat dan mengatur isi kamarnya sendiri, dan pemakaian listriknya dibatasi meteran masing-masing. Kernel Linux adalah fondasi beserta instalasi bersamanya; container adalah kamar-kamarnya. Tiga fitur kernel yang mewujudkan hal ini:

  1. Namespace — sekat pandangan: namespace membatasi apa yang bisa "dilihat" oleh sebuah proses. Proses di dalam container hanya melihat proses, jaringan, dan sistem file miliknya sendiri. Dari dalam, aplikasi merasa memiliki satu komputer utuh — padahal ia hanya menempati satu sekat.
  2. cgroups — jatah resource: control groups (cgroups) membatasi berapa banyak CPU, memori, dan disk I/O yang boleh dipakai setiap container. Tanpa pembatas ini, satu container yang boros bisa menghabiskan resource dan mengganggu seisi server.
  3. Union filesystem — lapisan berkas: fitur ini memungkinkan banyak container berbagi lapisan image yang sama tanpa menggandakan file. Cara kerjanya mirip tumpukan plastik transparansi: lembar-lembar bawah (lapisan image) bersifat hanya-baca dan dipakai bersama, sementara setiap container menulis di lembar teratas miliknya sendiri. Sepuluh container dari image yang sama nyaris tidak menambah pemakaian disk.

Di atas fondasi kernel tersebut, Docker bekerja dengan arsitektur client-server. Saat Anda mengetik perintah docker run, perintah itu tidak dieksekusi langsung oleh terminal. Ia dikirim ke daemon (program yang terus berjalan di latar belakang) bernama dockerd, yang bertugas membangun image, menjalankan container, serta mengatur jaringan dan penyimpanan. Pemisahan ini membuat satu client bisa mengendalikan daemon di mesin lokal maupun di server jarak jauh.

Container atau Virtual Machine: Apa Bedanya?

Sebelum era container, isolasi aplikasi umumnya dilakukan dengan virtual machine (VM) — komputer tiruan yang berjalan di atas komputer fisik. VM diciptakan oleh hypervisor (software yang membagi satu mesin fisik menjadi beberapa mesin virtual), dan setiap VM membawa sistem operasi lengkap dengan kernelnya sendiri.

Perbedaan mendasarnya: VM memvirtualkan hardware, sedangkan container memvirtualkan sistem operasi. Konsekuensinya terasa di hampir semua aspek:

Diagram perbandingan arsitektur virtual machine dan container.Diagram perbandingan arsitektur virtual machine dan container.

AspekContainerVirtual Machine
UkuranPuluhan–ratusan MBBeberapa GB
Waktu startMilidetik–detikPuluhan detik–menit
KernelBerbagi kernel hostKernel sendiri per VM
IsolasiLevel prosesLevel hardware virtual
Kepadatan per serverRatusan containerBelasan VM

Sebagai gambaran, server yang hanya sanggup menampung belasan VM bisa menjalankan ratusan container. Alasannya sederhana: tidak ada sistem operasi tamu yang ikut menyita memori dan disk di setiap container.

Meski begitu, container bukan pengganti total VM. VM tetap lebih tepat ketika Anda membutuhkan sistem operasi yang berbeda dari host, misalnya Windows di atas server Linux. VM juga unggul saat isolasi keamanan menjadi prioritas utama — berbagi kernel berarti berbagi satu titik lemah. Pada praktiknya keduanya justru berjalan berdampingan: VPS yang Anda sewa adalah sebuah VM, dan Docker paling sering dijalankan di dalam VPS tersebut.

Untuk Apa Docker Digunakan?

Fungsi Docker yang paling mendasar adalah memastikan aplikasi berjalan sama persis di mana pun. Namun dalam praktik sehari-hari, kegunaan Docker lebih luas dari itu:

  1. Menyamakan lingkungan development sampai production: aplikasi melewati beberapa tahap sebelum sampai ke pengguna — dikembangkan di laptop, diuji di server staging, lalu dirilis ke production. Dengan Docker, ketiga tahap memakai image yang identik, sehingga bug akibat perbedaan lingkungan nyaris hilang.
  2. Menjalankan banyak aplikasi di satu server tanpa konflik: dua aplikasi yang membutuhkan versi PHP berbeda sulit hidup berdampingan di satu server biasa. Dengan container, masing-masing membawa versinya sendiri dan tidak saling mengganggu.
  3. Mempercepat rilis dan onboarding tim: pipeline CI/CD (otomatisasi build, pengujian, dan rilis software) memakai container agar setiap pengujian berjalan di lingkungan bersih yang seragam. Developer baru juga tidak perlu menghabiskan hari pertamanya memasang dependency satu per satu — cukup satu perintah, seluruh lingkungan kerja siap.
  4. Menjalankan aplikasi siap pakai di server sendiri: ribuan aplikasi populer tersedia sebagai image resmi di Docker Hub, dari WordPress, MySQL, sampai tool otomasi seperti n8n. Anda bisa menjalankannya dalam hitungan menit tanpa proses instalasi manual yang panjang.

Keuntungan Memakai Docker

Dari fungsi-fungsi di atas, keuntungan Docker bisa dirangkum dalam beberapa poin:

  1. Hemat resource: karena tidak membawa sistem operasi tamu, container hanya memakan resource sebesar aplikasinya sendiri. Server dengan RAM 2 GB yang kewalahan menjalankan dua VM masih cukup lega menjalankan belasan container kecil.
  2. Cepat dinyalakan dan dimatikan: container siap bekerja dalam hitungan detik. Ini membuat proses rilis, rollback (kembali ke versi sebelumnya), dan pemulihan dari gangguan jauh lebih singkat.
  3. Konsisten di semua mesin: image yang sama menghasilkan perilaku yang sama, tidak peduli dijalankan di laptop, server fisik, maupun cloud.
  4. Ekosistem image yang matang: image resmi untuk hampir semua software populer tersedia di Docker Hub dan dirawat secara aktif, lengkap dengan dokumentasinya.
  5. Berbasis standar terbuka: image Docker mengikuti standar OCI (Open Container Initiative), sehingga bisa dijalankan juga oleh tool lain seperti Podman, containerd, dan Kubernetes. Anda tidak terkunci pada satu vendor.

Hal yang Perlu Anda Pertimbangkan Sebelum Memakai Docker

Docker bukan solusi tanpa konsekuensi. Beberapa hal berikut perlu Anda timbang sebelum memakainya:

  1. Kurva belajar yang nyata: image, layer, volume, network, dan Dockerfile adalah konsep baru yang harus dipahami sekaligus. Perkirakan beberapa minggu pemakaian rutin sebelum semuanya terasa natural.
  2. Data hilang jika container dihapus: container memang dirancang mudah dibuang dan diganti. File yang ditulis di dalamnya ikut terhapus bersama container-nya. Untuk data penting seperti database, Anda wajib memakai volume (penyimpanan permanen di luar container yang dipasangkan ke dalamnya). Lupa memasang volume adalah kesalahan pemula yang paling umum — sekaligus paling mahal.
  3. Isolasinya tidak sekuat VM: semua container berbagi satu kernel. Celah keamanan di kernel berpotensi berdampak ke seluruh container di host yang sama. Hindari menjalankan image dari sumber yang tidak Anda kenal.
  4. Ada overhead di Mac dan Windows: teknologi container Docker membutuhkan kernel Linux. Di Mac dan Windows, Docker Desktop diam-diam menjalankan VM Linux kecil di belakang layar (di Windows melalui WSL 2). Akibatnya, performa di kedua sistem ini sedikit di bawah Linux asli — terutama untuk operasi baca-tulis file.
  5. Docker Desktop tidak selalu gratis: aplikasi Docker Desktop gratis untuk penggunaan pribadi, pendidikan, dan bisnis kecil. Perusahaan dengan lebih dari 250 karyawan atau pendapatan di atas US$10 juta per tahun wajib berlangganan, mulai sekitar US$9 per pengguna per bulan. Adapun Docker Engine yang berjalan di server tetap open source dan gratis.
  6. Membutuhkan server dengan akses penuh: daemon Docker memerlukan akses root, sehingga tidak bisa dipasang di shared hosting. Jika Anda ingin mencoba Docker untuk aplikasi nyata, VPS Indonesia dengan RAM 2 GB sudah memadai untuk menjalankan beberapa container kecil.

Perintah Dasar Docker untuk Memulai

Setelah Docker terpasang, seluruh interaksi dilakukan lewat terminal. Beberapa perintah inti berikut sudah cukup untuk eksperimen pertama Anda.

Unduh image dari Docker Hub dengan perintah docker pull:

Bash
docker pull nginx

Tanpa menyebut versi, Docker otomatis mengambil tag latest. Untuk versi spesifik, tulis misalnya nginx:1.27.

Jalankan container dari image tersebut:

Bash
docker run -d -p 8080:80 --name webserver nginx

Opsi -d menjalankan container di latar belakang (mode detached), sedangkan -p 8080:80 memetakan port 8080 di mesin Anda ke port 80 di dalam container. Setelah perintah ini, buka http://localhost:8080 di browser — halaman default Nginx langsung muncul.

Pantau container yang sedang berjalan, baca log-nya, atau masuk ke dalamnya:

Bash
docker ps
docker logs webserver
docker exec -it webserver bash

docker ps menampilkan daftar container aktif beserta statusnya. Tambahkan opsi -a untuk melihat juga container yang sudah berhenti.

Terakhir, hentikan dan hapus container yang tidak lagi dibutuhkan:

Bash
docker stop webserver
docker rm webserver

Dokumentasi resmi kini menyebut bentuk pendek seperti docker pull dan docker rm sebagai alias dari bentuk kanonik yang lebih baru: docker image pull dan docker container rm. Keduanya sama-sama berfungsi; bentuk pendek masih yang paling umum dipakai.

Apa Itu Docker Compose?

Aplikasi nyata jarang berdiri sendiri — biasanya ada aplikasi utama ditambah database, cache, dan layanan pendukung lain. Menjalankan semuanya satu per satu dengan docker run cepat terasa merepotkan. Docker Compose adalah tool bawaan Docker untuk mendefinisikan seluruh rangkaian container tersebut dalam satu file YAML bernama compose.yaml.

Contoh sederhana untuk WordPress beserta database-nya:

YAML
services:
  web:
    image: wordpress
    ports:
      - "8080:80"
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rahasia

Seluruh rangkaian kemudian dinyalakan dengan satu perintah:

Bash
docker compose up -d

Perhatikan penulisannya: docker compose tanpa tanda hubung. Ini adalah Compose V2 yang sudah menyatu dengan CLI Docker. Versi lama docker-compose (dengan tanda hubung) tidak lagi didukung sejak pertengahan 2023.

FAQ Seputar Docker

Apakah Docker gratis?

Docker Engine — komponen yang menjalankan container di server — sepenuhnya open source dan gratis. Yang berbayar adalah Docker Desktop untuk perusahaan besar, seperti dijelaskan di bagian pertimbangan di atas.

Kubernetes vs Docker: mana yang lebih baik?

Keduanya tidak saling menggantikan. Docker mengemas dan menjalankan container di satu mesin, sementara Kubernetes adalah orchestrator — sistem yang mengatur ribuan container di banyak server sekaligus, mencakup penjadwalan, scaling, dan pemulihan otomatis. Docker sendiri memiliki orchestrator bawaan bernama Docker Swarm yang lebih sederhana, tetapi di industri Kubernetes jauh lebih dominan. Kubernetes memang berhenti memakai Docker sebagai runtime internalnya sejak 2022. Namun image yang Anda bangun dengan Docker tetap berjalan normal di Kubernetes, karena keduanya memakai format OCI yang sama.

Apakah Docker hanya untuk Linux?

Teknologi container Docker memang berbasis kernel Linux. Namun Docker Desktop membuatnya berjalan mulus di Windows (melalui WSL 2) dan macOS dengan mengelola VM Linux kecil secara otomatis. Anda tidak perlu menyiapkan apa pun secara manual.

Apa bedanya Docker dengan Podman?

Podman adalah alternatif Docker yang dikembangkan Red Hat. Perbedaan utamanya: Podman berjalan tanpa daemon dan mendukung mode rootless (tanpa akses root), sehingga dianggap lebih aman secara bawaan. Perintahnya sengaja dibuat kompatibel dengan Docker, dan keduanya menjalankan image OCI yang sama.

Kesimpulan

Docker adalah platform untuk mengemas aplikasi beserta seluruh dependensinya ke dalam container — unit standar yang berjalan identik di mesin mana pun. Ringannya berasal dari desain yang berbagi kernel host melalui namespace, cgroups, dan union filesystem, bukan dari meniru komputer utuh seperti virtual machine.

Docker layak Anda pelajari jika pekerjaan Anda menyentuh deployment aplikasi, atau jika Anda ingin menjalankan software open source di server sendiri. Sebaliknya, untuk website sederhana yang sudah nyaman berjalan di shared hosting, menambah lapisan Docker justru menambah kerumitan tanpa manfaat yang berarti. Semoga artikel ini membantu.