Instalasi Docker

Instalasi Docker

Bitnesia • Sep 3, 2026 60 •EN

Sebelum bisa membuat image atau menjalankan container pertama, Docker harus terpasang dengan benar di mesin yang kita pakai, baik itu laptop Developer untuk kebutuhan development sehari-hari maupun server yang dikelola Sysadmin/DevOps Engineer di production. Cara memasang Docker berbeda-beda tergantung sistem operasi: Linux memasang Docker Engine secara langsung karena kernel-nya sudah native mendukung fitur container, sementara macOS dan Windows memerlukan Docker Desktop karena kedua sistem operasi tersebut tidak menjalankan kernel Linux secara native. Bab ini membahas langkah instalasi Docker di ketiga platform tersebut, cara memverifikasi bahwa instalasi berhasil, gambaran umum Docker Desktop, serta konfigurasi dasar yang lazim disentuh begitu Docker baru saja terpasang.

2.1 Instalasi Docker di Linux, macOS, dan Windows

Instalasi Docker tidak satu ukuran untuk semua platform. Karena arsitektur container bergantung pada fitur kernel Linux (namespaces dan cgroups), Linux bisa langsung menjalankan Docker Engine di atas kernel yang sudah ada. macOS dan Windows tidak punya kernel Linux, sehingga Docker Desktop di kedua platform tersebut menjalankan sebuah virtual machine ringan di belakang layar untuk menyediakan kernel Linux tempat container benar-benar berjalan. Perbedaan pendekatan ini penting dipahami karena langkah instalasi, kebutuhan resource, dan cara troubleshooting-nya juga ikut berbeda per platform.

2.1.1 Instalasi Docker Engine di Linux

Di Linux, Sysadmin/DevOps Engineer umumnya memasang Docker Engine langsung tanpa GUI, karena inilah cara yang dipakai di server production. Docker menyediakan dua jalur instalasi resmi: repository package manager (apt untuk distro berbasis Debian/Ubuntu, dnf untuk distro berbasis Fedora/RHEL/CentOS) dan convenience script. Repository package manager adalah cara yang direkomendasikan karena memudahkan proses update di kemudian hari. Convenience script (get.docker.com) memang lebih singkat, tapi menurut dokumentasi resmi Docker hanya ditujukan untuk environment testing dan development, bukan untuk production. Untuk jalur apt, Docker Engine resmi mendukung Ubuntu 22.04, 24.04, dan 26.04 LTS versi 64-bit; pastikan distro yang dipakai sesuai daftar tersebut sebelum melanjutkan.

Berikut langkah instalasi Docker Engine di distro berbasis Debian/Ubuntu lewat apt repository. Jalankan perintah berikut secara berurutan.

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Tiga baris pertama menyiapkan direktori penyimpanan GPG key, lalu mengunduh public key resmi Docker untuk memverifikasi keaslian paket yang akan diunduh. Selanjutnya, daftarkan repository Docker ke sumber apt lewat file docker.sources, format deb822 yang kini dipakai sebagai standar oleh dokumentasi resmi Docker, menggantikan format satu baris .list yang lebih lama.

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update

Setelah repository terdaftar, install Docker Engine beserta plugin resminya.

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

docker-ce adalah daemon Docker Engine, yaitu proses background bernama dockerd yang benar-benar mengelola image, container, network, dan volume di balik layar. docker-ce-cli adalah command line interface yang kita ketik sehari-hari untuk mengirim perintah ke daemon tersebut, containerd.io adalah container runtime yang dipakai Docker Engine di baliknya, sedangkan docker-buildx-plugin dan docker-compose-plugin menambahkan perintah docker buildx dan docker compose sebagai plugin bawaan CLI.

Untuk distro berbasis Fedora, RHEL, atau CentOS, jalur instalasinya memakai dnf.

sudo dnf config-manager addrepo --from-repofile https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker

Setelah paket terpasang di distro mana pun, secara default hanya user root atau user dengan akses sudo yang bisa menjalankan perintah docker. Supaya Developer atau Sysadmin/DevOps Engineer tidak perlu mengetik sudo di setiap perintah Docker, tambahkan user ke group docker.

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

Perintah newgrp docker mengaktifkan keanggotaan group tanpa perlu logout, tapi cara paling aman tetap logout lalu login ulang supaya perubahan group benar-benar diterapkan di seluruh sesi. Perlu diketahui, menambahkan user ke group docker pada praktiknya setara dengan memberi akses root ke user tersebut, karena siapa pun yang bisa mengontrol daemon Docker bisa memasang bind mount ke direktori sistem mana pun. Jangan menambahkan user yang tidak tepercaya ke group ini, khususnya di server production.

Langkah terakhir, pastikan Docker menyala otomatis setiap kali server boot ulang, sesuatu yang penting bagi Sysadmin/DevOps Engineer supaya service container tidak mati begitu saja setelah maintenance atau reboot tak terduga.

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

2.1.2 Instalasi Docker Desktop di macOS

Di macOS, Developer memasang Docker lewat Docker Desktop, aplikasi GUI yang di dalamnya sudah membundel Docker Engine, CLI, dan tools pendukung lain. Sebelum mengunduh, pastikan spesifikasi macOS memenuhi syarat: Docker Desktop mendukung tiga versi major macOS terbaru (versi yang sedang berjalan dan dua versi sebelumnya), tersedia untuk chip Apple Silicon maupun Intel, dan minimal butuh 4 GB RAM.

  1. Unduh installer dari halaman resmi Docker, pilih versi yang sesuai dengan chip Mac (Apple Silicon atau Intel).
  2. Buka file Docker.dmg yang sudah diunduh, lalu drag ikon Docker ke folder Applications.
  3. Buka Docker.app dari folder Applications untuk menjalankan Docker Desktop pertama kali.
  4. Baca dan setujui Docker Subscription Service Agreement saat diminta.
  5. Pilih pengaturan yang direkomendasikan (recommended settings) untuk konfigurasi otomatis, atau advanced settings jika ingin mengatur sendiri.
  6. Klik Finish, masukkan password macOS bila diminta untuk konfirmasi.

Sebagai alternatif, Developer yang sudah terbiasa memakai Homebrew bisa memasang Docker Desktop lewat satu perintah di terminal.

brew install --cask docker

Setelah proses lewat Homebrew selesai, tetap buka aplikasi Docker dari Applications atau Spotlight untuk menjalankan proses instalasi awal dan menyetujui subscription agreement seperti langkah sebelumnya.

2.1.3 Instalasi Docker Desktop di Windows (WSL2)

Di Windows, Docker Desktop merekomendasikan backend WSL 2 (Windows Subsystem for Linux versi 2) dibanding backend Hyper-V, karena WSL 2 tidak mensyaratkan hak akses administrator untuk dipakai sehari-hari dan integrasinya dengan filesystem Linux lebih ringan. Syarat minimalnya adalah Windows 10 64-bit versi 22H2 (build 19045) atau Windows 11 versi 23H2 (build 22631) ke atas, prosesor 64-bit yang mendukung Second Level Address Translation (SLAT), RAM 8 GB, dan virtualisasi hardware yang sudah aktif di BIOS/UEFI.

Aktifkan WSL 2 terlebih dahulu lewat PowerShell atau Command Prompt dengan hak administrator.

wsl --install
wsl --update

Perintah wsl --install memasang WSL beserta distro Linux default jika belum ada, sedangkan wsl --update memastikan komponen WSL berada di versi terbaru. Docker Desktop mensyaratkan WSL versi 2.1.5 atau lebih baru, jadi cek versi yang terpasang dengan perintah berikut.

wsl --version

Setelah WSL 2 siap, lanjutkan proses instalasi Docker Desktop.

  1. Unduh Docker Desktop Installer.exe dari halaman resmi Docker.
  2. Jalankan file installer tersebut.
  3. Pilih mode instalasi per-user (direkomendasikan, tidak butuh hak administrator setiap kali Docker Desktop dijalankan).
  4. Pastikan backend WSL 2 terpilih saat diminta (ini adalah pilihan default pada versi Docker Desktop terbaru).
  5. Setelah instalasi selesai, cari "Docker Desktop" lewat Start Menu untuk menjalankannya, lalu setujui subscription agreement.

Sysadmin/DevOps Engineer yang mengelola Windows Server atau environment dengan kebijakan yang mewajibkan Hyper-V juga bisa memilih backend Hyper-V sebagai alternatif, meski instalasinya butuh mode all-users dan hak administrator. Perlu diperhatikan juga, virtualisasi hardware di BIOS/UEFI tetap harus aktif untuk kedua backend tersebut, bukan hanya untuk Hyper-V.

2.2 Verifikasi Instalasi

Setelah proses instalasi selesai di platform mana pun, langkah berikutnya adalah memastikan Docker benar-benar berjalan dengan baik sebelum dipakai untuk pekerjaan sehari-hari. Ada beberapa perintah verifikasi yang berlaku sama persis baik di Linux, macOS, maupun Windows, karena semuanya memakai Docker CLI yang sama.

Khusus pengguna Docker Desktop di macOS dan Windows, cek dulu ikon paus di menu bar (macOS) atau system tray (Windows) sebelum membuka terminal. Selama Desktop masih menyalakan VM di baliknya, ikon ini biasanya masih beranimasi; begitu berhenti dan menunjukkan status siap, barulah perintah CLI di bawah ini bisa dijalankan tanpa error koneksi ke daemon.

Perintah paling dasar adalah memeriksa versi Docker yang terpasang.

docker --version

Perintah ini hanya menampilkan versi Docker CLI di sisi client. Untuk melihat versi client sekaligus versi Docker Engine (daemon) di sisi server, pakai perintah berikut.

docker version

Jika bagian "Server" pada output ini gagal muncul atau menampilkan error seperti "Cannot connect to the Docker daemon", artinya CLI sudah terpasang tapi daemon-nya belum menyala. Ini sinyal awal yang berguna untuk membedakan masalah instalasi CLI dengan masalah daemon yang belum jalan.

Perintah docker info memberi gambaran lebih lengkap soal kondisi sistem Docker yang sedang berjalan, seperti jumlah container dan image yang ada, storage driver yang dipakai, hingga versi kernel.

docker info

Verifikasi yang paling meyakinkan adalah benar-benar menjalankan sebuah container.

docker run hello-world

Saat perintah ini dijalankan, Docker CLI mengirim request ke daemon untuk mencari image hello-world di penyimpanan lokal. Karena image ini biasanya belum ada di mesin yang baru saja dipasang, daemon akan menariknya (pull) dari Docker Hub, membuat container baru dari image tersebut, menjalankannya, lalu container itu mencetak pesan konfirmasi ke terminal dan langsung berhenti. Container yang sudah berhenti ini tetap tercatat dan bisa dilihat lewat docker ps -a. Kalau pesan "Hello from Docker!" muncul di terminal, instalasi Docker sudah bisa dipastikan berjalan dengan benar dari ujung ke ujung: CLI, daemon, sampai koneksi ke registry.

Terakhir, cek juga apakah plugin Compose V2 sudah ikut terpasang, karena hampir semua workflow modern memakai docker compose alih-alih docker-compose versi lama.

docker compose version

Beberapa kendala yang lazim ditemui di tahap verifikasi ini beserta solusinya:

  • "permission denied while trying to connect to the Docker daemon socket" di Linux. User yang menjalankan perintah belum menjadi anggota group docker atau belum re-login setelah ditambahkan. Jalankan ulang sudo usermod -aG docker $USER lalu logout dan login kembali.
  • Docker Desktop macet di status "Starting..." di Windows. Penyebab paling umum adalah virtualisasi hardware belum aktif di BIOS/UEFI, atau versi WSL 2 sudah usang. Jalankan wsl --update lewat terminal lalu restart Docker Desktop.
  • Docker daemon tidak jalan lagi setelah server Linux reboot. Cek statusnya dengan sudo systemctl status docker. Jika muncul status inactive, service belum di-enable untuk start otomatis; jalankan sudo systemctl enable --now docker.
  • Perintah docker tidak dikenali padahal Docker Desktop sudah terpasang. Biasanya terjadi karena Docker Desktop belum selesai proses startup, atau terminal yang dipakai perlu dibuka ulang supaya PATH ikut ter-update.

2.3 Docker Desktop Overview

Docker Desktop adalah aplikasi dengan instalasi satu langkah yang menyediakan environment lengkap untuk membangun, membagikan, dan menjalankan aplikasi container di Mac, Linux, maupun Windows. Berbeda dari Docker Engine yang hanya berupa daemon dan CLI, Docker Desktop membundel beberapa tool sekaligus dalam satu paket instalasi: Docker Engine, Docker CLI, Docker Compose, Docker Build (Buildx), Docker Scout untuk pemindaian dasar kerentanan image, dashboard GUI untuk mengelola container/image/volume secara visual, serta opsi Kubernetes single-node yang bisa diaktifkan untuk kebutuhan eksperimen orchestration.

Karena macOS dan Windows tidak memiliki kernel Linux, Docker Desktop di kedua platform ini menjalankan sebuah virtual machine Linux ringan di belakang layar. Semua container yang kita jalankan lewat Docker Desktop sebenarnya berjalan di dalam VM tersebut, bukan langsung di atas kernel macOS atau Windows. Inilah alasan kenapa Docker Desktop di Windows dan macOS punya pengaturan alokasi resource (CPU, memori, disk) tersendiri, sesuatu yang tidak diperlukan di Linux karena Docker Engine di sana berjalan langsung memakai kernel host tanpa lapisan VM tambahan.

Docker Desktop juga tersedia untuk Linux, tapi di lapangan Sysadmin/DevOps Engineer yang mengelola server production umumnya cukup memasang Docker Engine tanpa GUI, karena kernel Linux sudah native mendukung container dan server jarang punya kebutuhan tampilan visual. Docker Desktop di Linux lebih relevan untuk Developer yang ingin pengalaman GUI yang konsisten dengan rekan satu tim yang memakai Mac atau Windows.

Untuk melihat langsung isi bundel ini, klik ikon paus Docker Desktop lalu pilih Dashboard. Tab Containers menampilkan seluruh container yang pernah dijalankan lengkap dengan status dan tombol start/stop/hapus, tab Images menampilkan seluruh image yang tersimpan lokal beserta ukurannya, dan tab Volumes menampilkan volume yang dipakai container untuk menyimpan data. Ketiga tab ini pada dasarnya menampilkan hal yang sama dengan perintah docker ps, docker images, dan docker volume ls di CLI, hanya saja disajikan secara visual sehingga lebih mudah dipelajari saat masih baru mengenal Docker.

Satu hal yang perlu diperhatikan sebelum memasang Docker Desktop di lingkungan kerja: menurut Docker Subscription Service Agreement, Docker Desktop gratis dipakai untuk keperluan personal, edukasi, proyek open source non-komersial, dan bisnis kecil yang memenuhi dua syarat sekaligus, yaitu kurang dari 250 karyawan dan pendapatan tahunan di bawah 10 juta dolar AS. Organisasi yang melewati salah satu dari dua ambang batas tersebut wajib berlangganan paket berbayar (Pro, Team, atau Business). Sysadmin/DevOps Engineer yang bertanggung jawab atas compliance software di kantornya perlu memastikan status lisensi ini sebelum menyebarkan Docker Desktop secara massal ke seluruh tim.

2.4 Konfigurasi Dasar

Docker sudah bisa langsung dipakai begitu instalasi selesai, tapi ada beberapa konfigurasi dasar yang baik diketahui sejak awal, terutama karena beberapa nilai default Docker ternyata tidak selalu cocok untuk kebutuhan jangka panjang.

Di Linux, konfigurasi daemon Docker Engine disimpan dalam file /etc/docker/daemon.json, berformat JSON, dan biasanya belum ada sampai kita membuatnya sendiri. Salah satu konfigurasi yang paling penting ditambahkan sejak awal adalah pembatasan ukuran log container, karena secara default logging driver json-file tidak melakukan rotasi log sama sekali. Di lapangan, ini jadi salah satu pitfall paling sering menimpa Sysadmin/DevOps Engineer: container yang mencetak log terus-menerus dalam waktu lama bisa memenuhi seluruh disk host tanpa peringatan awal apa pun.

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

Konfigurasi di atas membatasi setiap file log container maksimal 10 MB, dengan maksimal 3 file rotasi yang disimpan sebelum yang paling lama dihapus otomatis. Konfigurasi umum lain yang sering dipakai adalah data-root, untuk memindahkan lokasi penyimpanan image dan container Docker dari lokasi default (/var/lib/docker) ke partisi disk lain yang kapasitasnya lebih besar.

{
  "data-root": "/mnt/docker-data"
}

Sebelum menerapkan perubahan apa pun ke daemon.json, validasi dulu sintaksnya, karena file JSON yang tidak valid akan membuat Docker daemon gagal menyala sama sekali, dan seluruh container di host tersebut ikut terdampak.

sudo dockerd --validate --config-file=/etc/docker/daemon.json

Jika hasil validasi menunjukkan konfigurasi valid, terapkan perubahan dengan me-restart daemon.

sudo systemctl restart docker

Restart daemon bisa berdampak sesaat pada ketersediaan container yang sedang berjalan, tergantung versi Docker Engine dan apakah opsi live-restore sudah diaktifkan. Di server production, jadwalkan restart daemon di luar jam sibuk atau pastikan dulu opsi live-restore menyala supaya container tetap berjalan normal selama proses restart daemon berlangsung.

Di Docker Desktop (macOS dan Windows), konfigurasi setara daemon.json bisa diatur lewat menu Settings, tab Docker Engine, yang menampilkan editor JSON dengan isi yang sama persis fungsinya dengan file daemon.json di Linux. Karena Docker Desktop menjalankan VM di baliknya, ada satu pengaturan tambahan yang tidak ada di Docker Engine native, yaitu tab Resources, tempat kita mengatur alokasi CPU, memori, swap, dan ukuran disk yang diberikan ke VM tersebut. Alokasi resource ini penting diperhatikan terutama untuk Developer yang menjalankan banyak container database atau service berat secara bersamaan, karena batas resource VM ini terpisah dari total resource fisik laptop.

Konfigurasi dasar lain yang berguna diketahui adalah context Docker, yaitu kumpulan pengaturan endpoint yang menentukan daemon mana yang sedang diajak berkomunikasi oleh CLI.

docker context ls

Secara default, context bernama default mengarah ke daemon lokal lewat Unix socket /var/run/docker.sock di Linux dan macOS, atau lewat named pipe di Windows. Fitur context ini akan lebih terasa manfaatnya ketika Sysadmin/DevOps Engineer mulai mengelola lebih dari satu Docker host dari satu mesin yang sama, karena context memungkinkan perpindahan target daemon tanpa perlu mengubah perintah docker yang biasa dipakai sehari-hari.