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)

FiturDocker (Kontainer)Mesin Virtual (VM)
UkuranSangat ringan (MB)Berat (GB) karena menyertakan OS tamu lengkap
Waktu StartupHampir instan (detik)Lebih lambat (menit)
Penggunaan Sumber DayaMinimal (berbagi kernel host)Boros (setiap VM punya OS sendiri)
IsolasiIsolasi pada level prosesIsolasi penuh (hypervisor)
PortabilitasSangat 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


  1. Tulis Dockerfile: Definisikan lingkungan aplikasi.

  2. Build Image: docker build -t nama-image .

  3. Run Container: docker run nama-image

  4. Push/Pull: Bagikan image ke registry agar dapat digunakan di mana saja.


6. Keuntungan Menggunakan Docker

KeuntunganDeskripsi
PortabilitasJalankan aplikasi di berbagai OS dan cloud dengan konsisten.
SkalabilitasMudah menambah atau mengurangi jumlah kontainer sesuai beban.
CI/CDIntegrasi dengan pipeline DevOps (Jenkins, GitLab CI, GitHub Actions) untuk otomatisasi build dan deploy.
EfisiensiMenghemat biaya infrastruktur karena penggunaan resource lebih hemat.
RollbackVersi image memudahkan rollback ke versi sebelumnya.
IsolasiKeamanan lebih baik karena kontainer terisolasi.

7. Contoh Sederhana: Menjalankan Aplikasi Node.js dengan Docker

a. Buat Dockerfile:

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:

bash
docker build -t node-app .

c. Jalankan kontainer:

bash
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"