Pengenalan Docker
1. Apa itu Docker?
Docker adalah platform open-source yang dirancang untuk mengotomatiskan deployment aplikasi di dalam kontainer (wadah) yang ringan dan portabel. Kontainer adalah unit perangkat lunak yang mengemas kode dan semua dependensinya (library, runtime, variabel lingkungan, dan file konfigurasi) sehingga aplikasi dapat berjalan dengan cepat dan andal di lingkungan komputasi mana pun.
Singkatnya, Docker memungkinkan Anda untuk "build once, run anywhere" (bangun sekali, jalankan di mana saja).
2. Mengapa Docker? (Masalah yang Dipecahkan)
Sebelum Docker, para developer sering menghadapi "works on my machine" syndrome—aplikasi berjalan lancar di komputer pengembang, tetapi bermasalah saat dipindahkan ke server produksi karena perbedaan sistem operasi, versi library, atau konfigurasi.
Docker memecahkan masalah ini dengan:
Konsistensi Lingkungan: Kontainer berisi semua yang dibutuhkan aplikasi, sehingga perilakunya identik dari development hingga production.
Isolasi: Setiap kontainer berjalan terisolasi satu sama lain, sehingga tidak saling mengganggu.
Portabilitas: Kontainer dapat dijalankan di berbagai platform (lokal, cloud, server fisik) tanpa modifikasi.
Efisiensi Sumber Daya: Kontainer lebih ringan daripada mesin virtual (VM) karena berbagi kernel dengan host OS.
3. Docker vs. Mesin Virtual (VM)
| Fitur | Docker (Kontainer) | Mesin Virtual (VM) |
|---|---|---|
| Ukuran | Sangat ringan (MB) | Berat (GB) karena menyertakan OS tamu lengkap |
| Waktu Startup | Hampir instan (detik) | Lebih lambat (menit) |
| Penggunaan Sumber Daya | Minimal (berbagi kernel host) | Boros (setiap VM punya OS sendiri) |
| Isolasi | Isolasi pada level proses | Isolasi penuh (hypervisor) |
| Portabilitas | Sangat portabel (image) | Kurang portabel (tergantung hypervisor) |
4. Konsep Dasar Docker
a. Image
Template read-only yang berisi aplikasi dan semua dependensinya.
Analogi: Blueprint atau snapshot dari kontainer.
Image dapat diunduh dari registry (misal Docker Hub) atau dibuat sendiri dengan
Dockerfile.
b. Container
Instance running dari sebuah image.
Analogi: Rumah yang dibangun dari blueprint (image).
Kontainer dapat di-start, stop, restart, atau dihapus.
c. Dockerfile
File teks berisi instruksi untuk membangun image secara otomatis.
Contoh instruksi:
FROM,RUN,COPY,EXPOSE,CMD.
d. Docker Registry
Tempat penyimpanan dan distribusi image Docker.
Docker Hub adalah registry publik default. Ada juga registry privat (misal AWS ECR, Google Container Registry).
e. Docker Engine
Daemon yang berjalan di background untuk mengelola kontainer, image, network, dan volume.
f. Volume
Mekanisme untuk menyimpan data persisten yang dihasilkan oleh kontainer, sehingga data tidak hilang saat kontainer dihapus.
g. Network
Jaringan virtual yang menghubungkan kontainer agar dapat berkomunikasi satu sama lain atau dengan dunia luar.
5. Alur Kerja Dasar Docker
Tulis Dockerfile: Definisikan lingkungan aplikasi.
Build Image:
docker build -t nama-image .Run Container:
docker run nama-imagePush/Pull: Bagikan image ke registry agar dapat digunakan di mana saja.
6. Keuntungan Menggunakan Docker
| Keuntungan | Deskripsi |
|---|---|
| Portabilitas | Jalankan aplikasi di berbagai OS dan cloud dengan konsisten. |
| Skalabilitas | Mudah menambah atau mengurangi jumlah kontainer sesuai beban. |
| CI/CD | Integrasi dengan pipeline DevOps (Jenkins, GitLab CI, GitHub Actions) untuk otomatisasi build dan deploy. |
| Efisiensi | Menghemat biaya infrastruktur karena penggunaan resource lebih hemat. |
| Rollback | Versi image memudahkan rollback ke versi sebelumnya. |
| Isolasi | Keamanan lebih baik karena kontainer terisolasi. |
7. Contoh Sederhana: Menjalankan Aplikasi Node.js dengan Docker
a. Buat Dockerfile:
# Gunakan image Node.js resmi FROM node:18-alpine # Set direktori kerja di dalam kontainer WORKDIR /app # Salin package.json dan install dependencies COPY package*.json ./ RUN npm install # Salin seluruh kode aplikasi COPY . . # Ekspos port EXPOSE 3000 # Perintah untuk menjalankan aplikasi CMD ["npm", "start"]
b. Build image:
docker build -t node-app .
c. Jalankan kontainer:
docker run -p 3000:3000 node-app
Sekarang aplikasi Node.js Anda berjalan di dalam kontainer dan dapat diakses di http://localhost:3000.
8. Ekosistem Docker (Tools Pendukung)
Docker Compose: Untuk menjalankan multi-kontainer (misal: app + database + redis) dengan satu file YAML.
Docker Swarm / Kubernetes: Untuk orkestrasi kontainer pada skala besar (cluster).
Docker Desktop: GUI untuk mengelola Docker di Windows/macOS.
Portainer: Antarmuka web untuk manajemen Docker.
9. Kesimpulan
Docker telah mengubah paradigma pengembangan perangkat lunak dengan menyediakan lingkungan yang konsisten, ringan, dan portabel. Dengan Docker, tim pengembang dan operasional (DevOps) dapat bekerja lebih sinergis, mempercepat siklus rilis, dan mengurangi masalah lingkungan. Mulailah dengan image dasar, pelajari Dockerfile, dan eksplorasi orkestrasi untuk memaksimalkan potensinya.
"Docker membuat aplikasi Anda menjadi warga dunia—siap berjalan di mana pun, kapan pun."
Semoga pengenalan docker ini bermanfaat!
Post a Comment for "Pengenalan Docker"
Post a Comment