Docker adalah platform open-source yang dirancang untuk mengotomatisasi proses pengembangan, pengujian, dan penerapan aplikasi dalam container. Container adalah unit standar perangkat lunak yang membungkus kode aplikasi beserta semua dependensinya sehingga aplikasi dapat berjalan secara konsisten di berbagai lingkungan.
Mengapa Docker Penting?
- Portabilitas: Container Docker dapat berjalan di mana saja, baik di laptop pengembang, server cloud, maupun mesin fisik.
- Efisiensi: Docker menggunakan sumber daya sistem lebih baik dibandingkan mesin virtual (VM), karena container berbagi kernel sistem operasi.
- Reproduksibilitas: Lingkungan aplikasi yang sama dapat diciptakan kembali kapan saja, membantu meminimalkan masalah “It works on my machine”.
- Skalabilitas: Sangat cocok untuk aplikasi berbasis microservices karena memungkinkan pembagian aplikasi menjadi layanan kecil yang dapat diskalakan secara independen.
Konsep Utama dalam Docker
- Image:
- Template yang digunakan untuk membuat container.
- Mirip dengan snapshot dari aplikasi.
- Dibuat menggunakan Dockerfile.
- Container:
- Instansiasi dari sebuah image.
- Unit yang menjalankan aplikasi.
- Dockerfile:
- File teks yang berisi instruksi untuk membangun image Docker.
- Registry:
- Tempat penyimpanan image Docker.
- Contoh: Docker Hub (default registry Docker).
- Volume:
- Digunakan untuk menyimpan data agar tetap ada meskipun container dihentikan atau dihapus.
Perintah Dasar Docker
docker run -d -p 8080:80 nginx
Menjalankan container Nginx pada port 8080.
docker ps
docker stop [container_id]
docker build -t my-app .
Restart Docker
docker-compose down
docker-compose up -d
Kelebihan Docker
- Cepat: Waktu startup container jauh lebih cepat dibanding VM.
- Ringan: Berbagi kernel dengan host sehingga lebih hemat sumber daya.
- Cross-platform: Aplikasi dapat berjalan di berbagai sistem operasi tanpa modifikasi.
Kekurangan Docker
- Tidak cocok untuk aplikasi yang membutuhkan kernel yang berbeda dari host.
- Kompleksitas meningkat saat menggunakan di lingkungan yang besar.
- Membutuhkan pembelajaran untuk memahami ekosistemnya.