Apa Itu Docker?
Kalau kamu sering berkutat dengan dunia programming, web development, atau server, kemungkinan besar kamu pernah mendengar istilah Docker.
Docker adalah sebuah platform yang memungkinkan kita menjalankan aplikasi di dalam lingkungan yang disebut container.
Sederhananya, Docker membantu kita mengemas aplikasi beserta semua kebutuhan di dalamnya, seperti library, dependency, konfigurasi, hingga versi runtime tertentu.
Jadi ketika aplikasi tersebut dipindahkan dari laptop developer ke server, kemungkinan muncul masalah seperti:
"Di laptop saya jalan, kok di server error?"
bisa jauh berkurang.
Docker membuat lingkungan aplikasi menjadi lebih konsisten.
Apa Itu Container?
Container bisa dibayangkan seperti sebuah kotak khusus untuk aplikasi.
Di dalam kotak tersebut terdapat aplikasi beserta semua hal yang dibutuhkan supaya aplikasi bisa berjalan.
Misalnya kita memiliki aplikasi Laravel yang membutuhkan:
- PHP 8.3
- MySQL
- Redis
- Nginx
- Composer
Daripada menginstal semuanya satu per satu di komputer, kita bisa menggunakan Docker untuk menjalankan semua kebutuhan tersebut dalam container masing-masing.
Kurang lebih strukturnya bisa seperti ini:
Laravel Application
โ
โโโ PHP Container
โโโ Nginx Container
โโโ MySQL Container
โโโ Redis Container
Semua container tersebut bisa saling terhubung dan bekerja seperti satu sistem.
Docker Bukan Virtual Machine
Docker sering dianggap sama seperti Virtual Machine atau VM.
Padahal keduanya berbeda.
Virtual Machine biasanya menjalankan satu sistem operasi lengkap di dalam komputer.
Misalnya kita menggunakan Windows, kemudian menjalankan Ubuntu melalui VirtualBox.
VM membutuhkan resource yang cukup besar karena harus menjalankan sistem operasi lengkap.
Docker lebih ringan karena container menggunakan kernel dari sistem operasi utama.
Gambaran sederhananya seperti ini:
Virtual Machine
Hardware
โ
Operating System
โ
Virtual Machine
โ
Guest Operating System
โ
Application
Docker
Hardware
โ
Operating System
โ
Docker
โ
Container
โ
Application
Karena itu Docker biasanya lebih cepat dibuat, dijalankan, dihentikan, dan dihapus dibandingkan Virtual Machine.
Kenapa Docker Banyak Digunakan?
Ada beberapa alasan kenapa Docker sekarang sangat populer di kalangan developer.
1. Environment Lebih Konsisten
Salah satu masalah klasik dalam development adalah perbedaan environment.
Misalnya developer pertama menggunakan:
PHP 8.2
Developer kedua menggunakan:
PHP 8.3
Sedangkan server production menggunakan:
PHP 8.1
Perbedaan kecil seperti ini terkadang bisa menyebabkan aplikasi error.
Dengan Docker, versi environment bisa ditentukan dari awal.
Contohnya:
FROM php:8.3-fpm
Dengan begitu semua developer bisa menjalankan aplikasi menggunakan versi PHP yang sama.
2. Setup Project Jadi Lebih Mudah
Bayangkan kamu baru bergabung dengan sebuah project.
Biasanya kamu mungkin harus menginstal:
PHP
Composer
MySQL
Node.js
Redis
Nginx
Belum lagi harus memastikan versinya sesuai.
Dengan Docker, biasanya kamu hanya perlu menjalankan perintah seperti:
docker compose up -d
Docker kemudian akan menjalankan service yang sudah didefinisikan oleh project.
Setup development jadi jauh lebih praktis.
3. Mengurangi Masalah "Works on My Machine"
Developer pasti pernah mengalami situasi seperti ini:
Developer A:
"Aplikasinya jalan di laptop saya."
Developer B:
"Di laptop saya error."
Server:
"Di sini malah tidak bisa jalan sama sekali."
Masalah tersebut biasanya muncul karena perbedaan environment.
Docker membantu memastikan aplikasi berjalan di environment yang hampir sama, baik di:
- laptop developer,
- komputer developer lainnya,
- staging server,
- production server.
4. Mudah Menjalankan Banyak Service
Aplikasi modern biasanya tidak hanya membutuhkan satu service.
Misalnya sebuah aplikasi membutuhkan:
Backend โ Laravel
Database โ MySQL
Cache โ Redis
Web Server โ Nginx
Queue โ Laravel Queue Worker
Dengan Docker Compose, semua service tersebut bisa dikonfigurasi dalam satu file.
Contohnya:
services:
app:
build: .
mysql:
image: mysql:8
redis:
image: redis:latest
nginx:
image: nginx:latest
Setelah itu cukup menjalankan:
docker compose up -d
Docker akan menjalankan semua service tersebut. Untuk daftar perintah lengkap lainnya, Anda bisa membaca panduan melihat log docker container yang telah kami rangkum.
Kesimpulan
Docker adalah platform yang memungkinkan kita menjalankan aplikasi di dalam container dengan environment yang lebih konsisten.
Daripada menginstal PHP, MySQL, Redis, Nginx, dan berbagai dependency secara manual, kita bisa mendefinisikan semuanya menggunakan Docker.
Keuntungan terbesarnya adalah environment development menjadi lebih mudah dipindahkan, dibagikan, dan dijalankan di perangkat lain.
Konsep utama yang perlu dipahami ketika mulai belajar Docker adalah:
- Docker Image sebagai template.
- Container sebagai aplikasi yang sedang berjalan.
- Dockerfile sebagai instruksi pembuatan image.
- Docker Compose untuk mengatur banyak container.
- Volume untuk menyimpan data.
- Network untuk komunikasi antar-container.
Kalau kamu sering mengembangkan aplikasi yang membutuhkan banyak service atau bekerja bersama tim developer, Docker adalah salah satu tools yang sangat layak untuk dipelajari
Ditulis oleh
Wilan
Kontributor tetap Bali Island Tekno yang aktif berbagi pengetahuan seputar teknologi, pemrograman, dan dunia rekayasa perangkat lunak.