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:
- Image — cetak biru (template) berisi aplikasi dan semua kebutuhannya. Image bersifat read-only.
- Container — instance yang berjalan dari sebuah image. Bisa dibayangkan image = "class", container = "object".
- 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:
- Anda menulis
Dockerfileyang mendeskripsikan cara membangun image. - Perintah
docker buildmenjadikannya image. - Perintah
docker runmenyalakan container dari image tersebut. - 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)
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
{
"name": "app-docker",
"version": "1.0.0",
"main": "app.js",
"scripts": { "start": "node app.js" }
}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
services:
web:
build: .
ports:
- "3000:3000"
volumes:
- .:/appPerintah Dasar Docker
Bangun image dan jalankan container:
docker build -t app-docker .
docker run -d -p 3000:3000 --name web app-dockerPerintah berguna lainnya:
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 imageUntuk menjalankan dengan Compose:
docker compose up -d --build
docker compose downKelebihan 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 (misalnode_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.