Docker Swarm: Orkestrasi Container Secara Native

Dalam pengelolaan aplikasi berbasis container, kita membutuhkan orkestrasi untuk menjalankan container dalam skala besar secara terdistribusi, memastikan load balancing, high availability, dan scaling secara otomatis. Salah satu tool orkestrasi yang disediakan native oleh Docker adalah Docker Swarm.
Docker Swarm adalah mode orkestrasi container yang terintegrasi dalam Docker Engine, memungkinkan kamu mengelola cluster host Docker sebagai satu kesatuan sistem untuk menjalankan container dalam skala besar.
Fitur Utama:
✅ Native Docker: Tidak perlu menginstal tool tambahan.
✅ Load Balancing: Secara otomatis mendistribusikan traffic ke container yang aktif.
✅ Scaling: Mudah menambah/mengurangi jumlah container.
✅ High Availability: Jika satu node mati, service tetap berjalan di node lain.
✅ Rolling Update: Update aplikasi secara bertahap tanpa downtime signifikan.
Struktur Docker Swarm
Swarm memiliki dua jenis node:
- Manager Node: Mengatur cluster, melakukan scheduling, dan pengelolaan state.
- Worker Node: Menjalankan container yang dijadwalkan oleh manager.
Membuat Swarm Cluster
1️⃣ Inisialisasi Swarm
Pada node pertama:
docker swarm init --advertise-addr <IP_MANAGER>
Perintah ini akan mengembalikan token untuk menambahkan worker dan manager node ke swarm.
2️⃣ Menambahkan Worker Node
Di server worker, jalankan:
docker swarm join --token <TOKEN_WORKER> <IP_MANAGER>:2377
Untuk menambahkan manager node:
docker swarm join --token <TOKEN_MANAGER> <IP_MANAGER>:2377
3️⃣ Melihat Node Swarm
Di manager node:
docker node ls
Kamu akan melihat semua node yang tergabung dalam cluster swarm.
Membuat dan Mengelola Service di Swarm
Berbeda dengan docker run
, di Swarm kita menggunakan service untuk menjalankan container.
Membuat Service
docker service create --name webserver -p 80:80 nginx
Perintah ini akan membuat service webserver
menggunakan image nginx
, diekspos pada port 80.
Melihat Service
docker service ls
Melihat Detail Task Service
docker service ps webserver
Melakukan Scaling Service
Untuk melakukan horizontal scaling container:
docker service scale webserver=5
Swarm akan secara otomatis mendistribusikan 5 container nginx
ke semua node di cluster.
Update Service Secara Rolling Update
Docker Swarm mendukung rolling update agar update container tidak mematikan semua container sekaligus:
docker service update --image nginx:1.25 webserver
Swarm akan menarik image baru dan memperbarui container satu per satu secara bertahap.
Menghapus Service
Untuk menghentikan dan menghapus service:
docker service rm webserver
Kapan Menggunakan Docker Swarm?
Docker Swarm cocok untuk:
✅ Pengelolaan container dalam skala menengah.
✅ Ingin orkestrasi native Docker tanpa kompleksitas Kubernetes.
✅ Butuh load balancing dan auto-recovery dengan setup yang mudah.
✅ Lab belajar orkestrasi sebelum berpindah ke Kubernetes.
Namun, jika kamu membutuhkan ekosistem ekosistem yang lebih luas (service mesh, custom resource, auto-scaling kompleks), Kubernetes mungkin lebih tepat.