Mengenal Docker untuk Pemula: Fungsi, Cara Kerja, dan Contoh Penggunaan

Pendahuluan

Pernahkah Anda mendengar keluhan "di komputer saya jalan, tapi di server malah error"? Itulah masalah yang dicoba dipecahkan oleh Docker. Artikel ini ditujukan bagi Anda yang sama sekali belum tahu Docker. Kita akan membahas fungsinya, cara kerjanya, contoh kode nyata, serta hal-hal penting agar Anda bisa mulai menggunakannya.

Docker Itu Apa?

Docker adalah platform yang memungkinkan Anda menjalankan aplikasi di dalam container — sebuah kemasan berisi kode aplikasi beserta semua kebutuhannya (pustaka, konfigurasi, sistem pendukung) sehingga aplikasi berjalan sama di komputer mana pun.

Singkatnya: Docker membuat aplikasi menjadi "portabel". Apa yang jalan di laptop Anda, akan jalan pula di server, baik itu VPS maupun layanan cloud.

Fungsi Utama Docker

  • Konsistensi lingkungan: aplikasi dan dependensinya dikemas menjadi satu, sehingga tidak ada lagi perbedaan "di saya jalan, di server tidak".
  • Isolasi: tiap container berjalan terpisah, sehingga satu aplikasi tidak mengganggu aplikasi lain.
  • Reproduksibilitas: siapa pun bisa menjalankan container yang sama persis.
  • Skalabilitas: container ringan sehingga mudah dijalankan banyak sekaligus.

Cara Kerja Docker

Docker bekerja dengan tiga konsep utama:

  1. Image — cetak biru (template) berisi aplikasi dan semua kebutuhannya. Image bersifat read-only.
  2. Container — instance yang berjalan dari sebuah image. Bisa dibayangkan image = "class", container = "object".
  3. Docker Engine — perangkat lunak yang menciptakan, menjalankan, dan mengelola container di atas sistem operasi (Linux, Windows, atau macOS).

Berbeda dengan mesin virtual (VM) yang menyertakan sistem operasi tamu lengkap, container berbagi kernel sistem operasi host. Akibatnya container jauh lebih ringan dan cepat dibanding VM.

Alur singkatnya:

  1. Anda menulis Dockerfile yang mendeskripsikan cara membangun image.
  2. Perintah docker build menjadikannya image.
  3. Perintah docker run menyalakan container dari image tersebut.
  4. Aplikasi di dalam container melayani permintaan (misalnya web di port tertentu).

Istilah Penting yang Perlu Diketahui

  • Image: template aplikasi.
  • Container: aplikasi yang sedang berjalan.
  • Dockerfile: resep untuk membangun image.
  • Registry: tempat menyimpan image (Docker Hub adalah yang paling populer).
  • Volume: penyimpanan data agar tidak hilang saat container dihapus.
  • Port: jembatan agar layanan di dalam container bisa diakses dari luar.

File yang Dipersiapkan

Untuk contoh di bawah, Anda butuh:

  • Kode aplikasi (di sini kita pakai Node.js sederhana).
  • Dockerfile — resep image.
  • docker-compose.yml — untuk menjalankan beberapa container sekaligus dengan mudah.
  • package.json — dependensi aplikasi.

Contoh aplikasi sederhana (app.js)

javascript
const http = require('http');
const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Halo dari dalam Docker container!');
});
server.listen(3000, () => console.log('Server di port 3000'));

package.json

json
{
  "name": "app-docker",
  "version": "1.0.0",
  "main": "app.js",
  "scripts": { "start": "node app.js" }
}

Dockerfile

dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

Penjelasan singkat:

  • FROM node:18-alpine → pakai image dasar Node.js versi 18 (variasi ringan Alpine).
  • WORKDIR /app → direktori kerja di dalam container.
  • COPY → menyalin berkas ke dalam image.
  • RUN npm install → memasang dependensi.
  • EXPOSE 3000 → membuka port 3000.
  • CMD → perintah yang dijalankan saat container menyala.

docker-compose.yml

yaml
services:
  web:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app

Perintah Dasar Docker

Bangun image dan jalankan container:

bash
docker build -t app-docker .
docker run -d -p 3000:3000 --name web app-docker

Perintah berguna lainnya:

bash
docker ps            # lihat container yang berjalan
docker images       # lihat daftar image
docker stop web     # hentikan container
docker rm web       # hapus container
docker rmi app-docker  # hapus image

Untuk menjalankan dengan Compose:

bash
docker compose up -d --build
docker compose down

Kelebihan Docker

  • Konsisten di semua lingkungan (laptop, server, cloud).
  • Ringan dan cepat dibanding mesin virtual.
  • Mudah direplikasi dan diskalakan.
  • Komunitas besar dengan ribuan image siap pakai di Docker Hub.

Kekurangan Docker

  • Kurva belajar di awal cukup curam bagi pemula.
  • Tetap butuh pemahaman keamanan (jangan menjalankan image asal dari registry).
  • Boros jika digunakan untuk aplikasi sangat sederhana yang cukup dijalankan langsung.
  • Membutuhkan sedikit overhead sumber daya dibanding menjalankan aplikasi secara native.

Hal Penting Lainnya

  • Volume: selalu gunakan volume untuk data penting (misal database), agar data tidak hilang saat container dihapus.
  • .dockerignore: mirip .gitignore, agar berkas tidak perlu (misal node_modules) tidak ikut masuk ke image.
  • Keamanan: hanya unduh image dari sumber terpercaya, dan jangan menjalankan container dengan hak akses root berlebih bila tidak perlu.
  • Batas sumber daya: batasi memori/CPU container agar tidak memakan seluruh resource host.
  • Untuk memasang Docker sendiri di server, pelajari panduan memasang Docker di Debian 13.

Kesimpulan

Docker adalah alat yang membuat aplikasi menjadi portabel dan konsisten di berbagai lingkungan. Dengan memahami image, container, Dockerfile, dan beberapa perintah dasar di atas, Anda sudah cukup untuk mulai mengemas dan menjalankan aplikasi pertama Anda di dalam container.

Artikel Terkait