Docker Adalah: Pengertian, Cara Kerja, dan 8 Perintah Dasar

Docker adalah platform yang membantu developer membungkus aplikasi beserta semua kebutuhannya ke dalam satu paket bernama container, sehingga aplikasi bisa jalan dengan cara yang sama di mana pun. Kamu pasti pernah mengalami situasi ini: kodenya mulus di laptopmu, tapi begitu dikirim ke teman atau di-deploy ke server, tiba-tiba muncul error versi Node.js, library hilang, atau konfigurasi tidak cocok.

Di artikel ini kita bahas docker adalah apa, kenapa hampir semua tim developer memakainya, bagaimana cara kerjanya, sampai 8 perintah dasar yang bisa langsung kamu praktikkan. Santai saja, tidak perlu pengalaman DevOps sebelumnya.

[Sisipkan thumbnail di sini. Alt text: Docker adalah platform container untuk developer. Hapus baris ini setelah gambar dipasang.]

Docker Adalah: Pengertian Singkat

Secara sederhana, docker adalah tools open source untuk membuat, menjalankan, dan membagikan aplikasi di dalam container. Container adalah lingkungan terisolasi yang berisi kode aplikasi, runtime (misalnya Node.js atau Python), library, dan pengaturan yang dibutuhkan.

Bayangkan container seperti kotak bekal. Isinya lengkap: nasi, lauk, dan sendok. Mau dibawa ke kantor, kampus, atau taman, kamu tinggal buka dan makan tanpa perlu mencari piring lagi. Begitu juga aplikasi di dalam container: tinggal dijalankan, tanpa repot menyiapkan lingkungannya dari nol.

Kenapa Developer Butuh Docker?

Docker adalah jawaban untuk masalah klasik “di komputer saya jalan kok”. Berikut alasan utama kenapa developer memakainya:

  • Lingkungan konsisten. Aplikasi berjalan sama di laptop, server tim, maupun production.
  • Setup project jadi cepat. Anggota tim baru tidak perlu menginstal database dan tools satu per satu. Cukup jalankan beberapa perintah.
  • Aplikasi terisolasi. Proyek A yang butuh Node.js 16 dan proyek B yang butuh Node.js 20 bisa berjalan berdampingan tanpa bentrok.
  • Deploy lebih mudah. Satu paket yang sama dari tahap development sampai production.
  • Ringan dibanding virtual machine. Container memakai kernel sistem operasi host, jadi startnya lebih cepat dan hemat sumber daya.

Cara Kerja Docker

Untuk memahami docker adalah apa dalam praktiknya, kamu perlu mengenal empat komponen utama berikut.

1. Dockerfile

Dockerfile adalah file teks berisi resep untuk membuat image. Di dalamnya kamu menulis langkah seperti memakai base image tertentu, menyalin kode, menginstal dependency, dan menentukan perintah untuk menjalankan aplikasi.

2. Image

Image adalah template read-only hasil build dari Dockerfile. Anggap saja image sebagai cetakan kue, sedangkan container adalah kuenya. Dari satu image, kamu bisa membuat banyak container.

3. Container

Container adalah instance dari image yang sedang berjalan. Kamu bisa menjalankan, menghentikan, dan menghapus container kapan saja tanpa merusak image aslinya.

4. Registry

Registry adalah tempat menyimpan dan membagikan image. Yang paling terkenal adalah Docker Hub. Saat kamu menjalankan docker pull nginx, Docker mengunduh image nginx dari registry tersebut.

Perbedaan Docker dan Virtual Machine

Sekilas keduanya mirip karena sama-sama mengisolasi aplikasi. Bedanya ada di cara kerjanya:

  • Virtual machine menjalankan sistem operasi lengkap di atas hypervisor. Ukurannya besar dan butuh waktu lama untuk menyala.
  • Docker hanya membungkus aplikasi dan dependency-nya, lalu berbagi kernel dengan sistem operasi host. Ukurannya kecil dan bisa menyala dalam hitungan detik.

Jadi, docker adalah pilihan yang lebih ringan untuk menjalankan banyak aplikasi sekaligus di satu mesin.

Cara Install Docker

Cara termudah bagi pemula adalah memasang Docker Desktop di Windows atau macOS. Unduh installer dari situs resmi, jalankan, lalu ikuti petunjuknya. Pengguna Linux bisa memasang Docker Engine lewat package manager distro masing-masing. Panduan lengkapnya ada di dokumentasi resmi Docker.

Setelah selesai, cek apakah instalasi berhasil:

docker --version

Jika muncul nomor versi, Docker sudah siap dipakai.

8 Perintah Dasar Docker untuk Pemula

Ini perintah yang paling sering kamu pakai sehari-hari.

  1. docker pull nginx mengunduh image nginx dari Docker Hub.
  2. docker images menampilkan daftar image yang ada di komputermu.
  3. docker run -d -p 8080:80 --name web nginx membuat dan menjalankan container di background. Opsi -p 8080:80 menghubungkan port 8080 di komputermu ke port 80 di dalam container, jadi kamu bisa membuka localhost:8080 di browser.
  4. docker ps menampilkan container yang sedang berjalan. Tambahkan -a untuk melihat semuanya, termasuk yang sudah berhenti.
  5. docker logs web menampilkan log dari container bernama web. Sangat berguna saat mencari penyebab error.
  6. docker stop web menghentikan container.
  7. docker rm web menghapus container yang sudah berhenti. Untuk menghapus image, gunakan docker rmi nginx.
  8. docker build -t myapp . membuat image baru dari Dockerfile di folder saat ini dan memberinya nama myapp.

Contoh Dockerfile Sederhana untuk Aplikasi Node.js

Berikut contoh Dockerfile untuk aplikasi Node.js dengan file utama index.js:

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

Penjelasan singkatnya:

  • FROM menentukan base image, yaitu Node.js 20 versi alpine yang ukurannya kecil.
  • WORKDIR menentukan folder kerja di dalam container.
  • COPY package*.json ./ lalu RUN npm install menginstal dependency lebih dulu agar hasil build bisa di-cache dan proses berikutnya lebih cepat.
  • COPY . . menyalin seluruh kode ke container.
  • EXPOSE 3000 mencatat bahwa aplikasi memakai port 3000.
  • CMD adalah perintah yang dijalankan saat container menyala.

Bangun image dan jalankan:

docker build -t myapp .
docker run -p 3000:3000 myapp

Untuk menyimpan konfigurasi seperti kunci API atau port, jangan tulis langsung di kode. Gunakan environment variable, misalnya lewat docker run -e PORT=3000 myapp. Cara pemakaiannya sudah kami bahas di Environment Variable: Cara Pakai .env di Node.js.

Docker Volume: Cara Menyimpan Data Agar Tidak Hilang

Salah satu hal yang sering mengejutkan pemula: saat container dihapus, semua data di dalamnya ikut hilang. Padahal untuk database, kamu jelas butuh data yang bertahan. Di sinilah docker adalah solusi yang menyediakan fitur volume, yaitu penyimpanan terpisah yang dikelola Docker dan tetap ada walaupun container dihapus.

Contoh menjalankan PostgreSQL dengan volume:

docker volume create dbdata
docker run -d --name db -e POSTGRES_PASSWORD=rahasia -v dbdata:/var/lib/postgresql/data postgres:16

Opsi -v dbdata:/var/lib/postgresql/data menghubungkan volume dbdata ke folder tempat PostgreSQL menyimpan datanya. Kamu bisa menghapus container db lalu membuatnya lagi, dan datanya tetap utuh. Gunakan docker volume ls untuk melihat semua volume yang ada.

Docker Compose: Menjalankan Beberapa Container Sekaligus

Aplikasi nyata jarang berdiri sendiri. Biasanya ada backend, database, dan kadang cache. Menjalankan semuanya dengan docker run satu per satu cepat merepotkan. Docker Compose menyelesaikannya: kamu menulis semua layanan dalam satu file docker-compose.yml, lalu menjalankannya dengan satu perintah.

services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DB_HOST=db
      - DB_USER=postgres
      - DB_PASSWORD=rahasia
    depends_on:
      - db
  db:
    image: postgres:16
    environment:
      - POSTGRES_PASSWORD=rahasia
    volumes:
      - dbdata:/var/lib/postgresql/data
volumes:
  dbdata:

Jalankan semuanya dengan docker compose up -d, dan hentikan dengan docker compose down. Di dalam jaringan Compose, service app bisa memanggil database cukup dengan nama db sebagai host. Itu sebabnya nilai DB_HOST di atas adalah db.

Password di contoh ini hanya untuk belajar. Di project sungguhan, simpan kredensial di file .env dan jangan masukkan ke repositori Git.

Jika frontend dan backend kamu berjalan di container terpisah, error CORS hampir pasti akan muncul. Pelajari penyebab dan solusinya di CORS Error: Penyebab dan 5 Cara Mengatasinya di Express.

Alur Kerja Docker di Project Nyata

Supaya gambaran besarnya jelas, berikut alur kerja yang umum dipakai tim developer. Di sini terlihat kenapa docker adalah bagian penting dari proses deployment modern.

  1. Tulis aplikasi dan Dockerfile, lalu simpan di repositori Git.
  2. Build image dengan docker build -t username/myapp:1.0 ..
  3. Uji container di komputer lokal dengan docker run.
  4. Kirim image ke registry dengan docker push username/myapp:1.0.
  5. Di server, unduh image dengan docker pull, lalu jalankan sebagai container.
  6. Untuk update, ulangi build dengan nomor versi baru dan jalankan container versi terbaru.

Banyak tim mengotomatiskan langkah 2 sampai 4 lewat pipeline CI/CD, sehingga setiap perubahan kode langsung menghasilkan image baru yang siap di-deploy.

Docker vs Kubernetes: Apa Bedanya?

Pemula sering mengira keduanya bersaing, padahal fungsinya berbeda. Docker membungkus dan menjalankan container. Kubernetes adalah orkestrator yang mengatur banyak container di banyak server: menjaga jumlah replika, memulihkan container yang mati, dan membagi beban lalu lintas.

Untuk proyek pribadi atau aplikasi skala kecil, Docker dan Docker Compose sudah lebih dari cukup. Kubernetes baru terasa manfaatnya saat aplikasimu besar dan butuh skala otomatis. Jadi, docker adalah fondasi yang sebaiknya kamu kuasai sebelum melangkah ke Kubernetes.

6 Kesalahan Umum Pemula Saat Memakai Docker

  • Tidak memakai .dockerignore. Akibatnya folder node_modules dan file rahasia ikut masuk ke image.
  • Selalu memakai tag latest. Versi bisa berubah diam-diam dan merusak aplikasimu. Tentukan versi spesifik.
  • Menyimpan data penting tanpa volume. Data hilang begitu container dihapus.
  • Menulis password langsung di Dockerfile. Isi Dockerfile tersimpan di image dan bisa dibaca orang lain. Pakai environment variable.
  • Menjalankan semua layanan dalam satu container. Pisahkan aplikasi, database, dan cache ke container masing-masing.
  • Lupa membersihkan. Container dan image lama menumpuk dan memakan disk. Perintah docker system prune bisa membantu, tapi baca dulu peringatannya karena perintah ini menghapus container yang berhenti, network yang tidak terpakai, dan image tanpa tag.

Kelebihan dan Kekurangan Docker

Kelebihan:

  • Lingkungan development dan production konsisten.
  • Setup project baru jadi cepat.
  • Hemat sumber daya dibanding virtual machine.
  • Cocok dipadukan dengan CI/CD dan deployment modern.

Kekurangan:

  • Ada kurva belajar, apalagi untuk konsep jaringan dan volume.
  • Di Windows dan macOS, Docker Desktop cukup memakan RAM.
  • Container tidak menyimpan data secara permanen kecuali kamu memakai volume.

Tips Belajar Docker untuk Pemula

  • Mulai dari satu project kecil. Bungkus aplikasi Node.js atau Python sederhanamu ke dalam container dulu.
  • Pakai image resmi dan versi spesifik. Hindari tag latest di production agar hasilnya bisa diprediksi.
  • Gunakan file .dockerignore. Abaikan folder node_modules dan file rahasia supaya image lebih kecil dan aman.
  • Pelajari volume. Ini penting bila kamu menjalankan database di dalam container.
  • Kuasai Git lebih dulu. Jika belum nyaman, baca Git Adalah: Pengertian, Cara Kerja, dan 10 Perintah Dasar.

Setelah itu, kamu bisa lanjut mempelajari REST API vs GraphQL untuk membangun backend yang nanti dijalankan di dalam container, atau Server-Side Rendering vs Client-Side Rendering bila kamu fokus ke frontend.

Pertanyaan yang Sering Diajukan (FAQ)

Docker adalah software berbayar?

Docker Engine dan tools dasarnya gratis dan open source. Docker Desktop punya ketentuan lisensi tersendiri yang bisa berbayar untuk perusahaan berukuran tertentu. Untuk belajar dan proyek pribadi, kamu bisa memakainya dengan tenang. Cek syarat terbaru di situs resmi Docker.

Apakah Docker sama dengan virtual machine?

Bukan. Virtual machine membawa sistem operasi lengkap, sedangkan container berbagi kernel dengan sistem operasi host. Karena itu container lebih ringan dan lebih cepat dijalankan.

Apakah belajar Docker harus paham Linux?

Tidak wajib, tapi paham perintah dasar terminal akan sangat membantu. Banyak image Docker berbasis Linux, jadi lama-lama kamu akan terbiasa.

Apa bedanya image dan container?

Image adalah template read-only, sedangkan container adalah hasil menjalankan image tersebut. Satu image bisa menghasilkan banyak container.

Apa bedanya Docker dan Docker Compose?

Docker menjalankan container lewat perintah satu per satu, sedangkan Docker Compose mengatur banyak container sekaligus lewat satu file YAML. Compose bukan pengganti Docker. Compose memakai Docker di belakangnya.

Apakah data hilang saat container dihapus?

Ya, jika data disimpan di dalam container tanpa volume. Gunakan volume agar data tetap ada walaupun container dihapus atau dibuat ulang.

Kesimpulan

Docker adalah tools yang membuat aplikasi berjalan konsisten di mana saja dengan membungkusnya ke dalam container. Kamu sudah mengenal pengertian Docker, cara kerja Dockerfile, image, container, dan registry, serta 8 perintah dasar untuk memulai.

Langkah selanjutnya sederhana: pasang Docker Desktop, bungkus satu project kecilmu, lalu jalankan dengan docker run. Makin sering dipraktikkan, makin terasa kenapa docker adalah skill yang hampir wajib dimiliki developer modern. Kalau ada yang masih membingungkan, tulis di kolom komentar ya.

Leave a Reply

Your email address will not be published. Required fields are marked *