arrow_backKembali ke catatan lapangan
DEVOPS Dipublikasikan 9 Aug 2026

Apa Itu Docker dan Mengapa Developer Harus Mempelajarinya?

Penjelasan praktis Docker untuk developer: container vs VM, command inti, Dockerfile, dan cara mulai menggunakannya di project nyata.

Docker terus muncul di lowongan kerja dan panduan setup, dan jika Anda belum pernah menggunakan container, rasanya seperti tembok yang harus Anda daki sebelum diizinkan menulis kode sungguhan. Sebenarnya tidak rumit setelah Anda melewati istilah-istilahnya.

Apa itu container sebenarnya

Sebuah container membungkus aplikasi Anda dengan semua yang dibutuhkan untuk menjalankannya: kode, runtime, library sistem, dan file konfigurasi. Ini bukan mesin virtual. VM memvirtualisasi seluruh sistem operasi, termasuk kernel, yang berarti boot bisa memakan waktu satu menit dan menggunakan beberapa gigabyte RAM. Container berbagi kernel mesin host dan hanya mengisolasi proses, jadi ia dimulai dalam waktu kurang dari satu detik dan biasanya menggunakan puluhan megabyte bukannya gigabyte.

Perbedaan ini adalah alasan mengapa Docker menguasai pengembangan lokal dan pipeline CI dengan cepat. Anda bisa menjalankan database Postgres, cache Redis, dan app server di satu laptop tanpa menginstal salah satunya langsung di OS Anda.

Bagian inti yang perlu Anda ketahui

Ada empat istilah yang mencakup sebagian besar apa yang akan Anda tangani sehari-hari:

  • Image: template read-only yang dibangun dari Dockerfile. Pikirkan ini sebagai snapshot filesystem plus metadata tentang cara menjalankannya.
  • Container: instance yang berjalan dari sebuah image. Anda bisa memulai, menghentikan, dan menghapus container tanpa menyentuh image yang mereka berasal darinya.
  • Dockerfile: file teks dengan instruksi untuk membangun image, baris per baris.
  • Registry: tempat image disimpan dan diambil dari sana, paling umum adalah Docker Hub.

Dockerfile minimal untuk aplikasi Node.js terlihat seperti ini:

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

Bangun dengan docker build -t my-app . dan jalankan dengan docker run -p 3000:3000 my-app. Flag -p memetakan port di mesin Anda ke port di dalam container, yang merupakan cara Anda benar-benar mencapai app dari browser.

Command yang akan Anda gunakan terus-menerus

Segelintir command mencakup sebagian besar pekerjaan sehari-hari:

  • docker ps — list container yang berjalan
  • docker ps -a — list semua container, termasuk yang dihentikan
  • docker images — list image di mesin Anda
  • docker logs <container> — cek output dari container yang sedang berjalan atau crash
  • docker exec -it <container> sh — buka shell di dalam container yang berjalan
  • docker rm / docker rmi — bersihkan container dan image yang tidak Anda butuhkan lagi

Pasangan terakhir itu penting lebih dari yang orang harapkan. Docker dengan senang hati akan membiarkan ruang disk hilang ke image lama dan container yang dihentikan. Menjalankan docker system prune sesekali memulihkan jumlah ruang yang mengejutkan.

Mengapa docker-compose mengubah workflow

Sebagian besar project nyata butuh lebih dari satu container: app server, database, mungkin cache. Menulis command docker run untuk masing-masing cepat membosankan. docker-compose.yml memungkinkan Anda mendefinisikan seluruh stack dalam satu file:

services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: devpassword
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

Jalankan docker compose up dan kedua service dimulai bersama, terhubung jaringan sehingga web bisa mencapai db dengan service name. Ini adalah setup yang akan Anda lihat di hampir setiap README repo open-source, dan memahaminya berarti Anda bisa clone project dan menjalankannya dalam hitungan menit bukannya menginstal Postgres, Redis, dan apapun lagi yang dibutuhkan app.

Tempat orang tersesat di awal

Volume membingungkan hampir semua orang pada mulanya. Tanpa volume, apapun yang ditulis di dalam container hilang saat container dihapus, yang merupakan masalah untuk database. Section volumes di file compose di atas memetakan named volume ke path di dalam container sehingga data bertahan setelah restart.

Kesalahan umum lainnya adalah menyalin node_modules atau .git ke dalam image karena tidak ada file .dockerignore. Tambahkan satu seperti .gitignore:

node_modules
.git
.env

Itu membuat build lebih cepat dan image lebih kecil, yang penting setelah Anda push image ke registry atau deploy ke Kubernetes.

Kemana pergi setelah dasar-dasarnya

Setelah membangun dan menjalankan container terasa normal, skill yang berguna selanjutnya adalah multi-stage build untuk image production yang lebih kecil, memahami mode networking Docker, dan membaca output docker inspect saat sesuatu tidak tersambung dengan benar. Tidak ada yang sulit, hanya tidak familiar pertama kali.

Untuk lebih lanjut tentang containerize aplikasi nyata dan menghubungkannya ke pipeline deployment cloud, cek segmen DevOps dan Cloud di Korra Studio.

Ditulis dengan bantuan AI, ditinjau dan dipublikasikan oleh Michal Pilch (CISSP), Korra Studio.

Siap melangkah lebih jauh?

Ini satu catatan dari basis pengetahuan Korra Studio — platform ini memasangkan setiap topik dengan bimbingan privat.

Mulai gratisarrow_forward