Docker Swarm: orkestrasi kontainer untuk lingkungan dunia nyata

Pembaharuan Terakhir: 28 March 2026
  • Docker Swarm memungkinkan Anda membuat klaster node untuk mengatur layanan berbasis kontainer dengan ketersediaan tinggi dan penyeimbangan beban terintegrasi.
  • Konsep node, manager, worker, service, task, dan overlay network merupakan dasar untuk memahami bagaimana Swarm mengelola dan mendistribusikan container.
  • Perintah seperti docker swarm init, docker service create, atau docker service scale memudahkan untuk menyebarkan, menskalakan, dan memperbarui aplikasi.
  • Swarm sangat cocok untuk proyek-proyek kecil dan menengah, terintegrasi dengan layanan cloud, praktik DevOps, AI, dan business intelligence.

Orkestrasi kontainer Docker Swarm

Mengelola puluhan atau ratusan kontainer yang tersebar di beberapa mesin dapat menjadi masalah besar jika Anda hanya mengandalkan Docker versi dasar. Ketika Anda mulai berbicara tentang ketersediaan tinggi, penskalaan otomatis, atau penerapan tanpa waktu henti, Anda membutuhkan lebih dari sekadar kontainer individual: Anda membutuhkan orkestrasi kontainer . Dan di situlah Docker Swarm berperan, solusi asli Docker untuk mengoordinasikan kontainer di seluruh klaster.

Jika Anda sebelumnya menggunakan Docker Compose pada satu mesin dan merasa itu tidak memadai untuk lingkungan dunia nyata, Swarm adalah langkah logis selanjutnya. Swarm memungkinkan Anda untuk menyiapkan klaster node, mendistribusikan layanan di antara node tersebut, melakukan load balancing, mengganti kontainer yang mengalami crash, dan pada akhirnya mengubah banyak server menjadi satu platform yang koheren dan siap produksi, tanpa harus langsung beralih ke Kubernetes jika Anda merasa terlalu rumit atau kompleks.

Apa itu Docker Swarm dan mengapa hal itu penting dalam orkestrasi kontainer?

Docker Swarm adalah mesin pengelompokan dan orkestrasi yang terintegrasi langsung ke dalam Docker. Ini bukan alat eksternal, melainkan mode operasi dari Docker Engine itu sendiri yang memungkinkan Anda untuk mengelompokkan beberapa mesin (fisik atau virtual) ke dalam klaster logis, yang disebut swarm, tempat Anda menyebarkan layanan alih-alih kontainer yang terisolasi.

Keunggulan Swarm adalah kemampuannya untuk mengabstraksi seluruh rangkaian node dan memungkinkan Anda bekerja seolah-olah Anda memiliki satu "super server" tunggal. Anda mendefinisikan layanan, jumlah replikanya, port yang diekspos, dan pembatasannya, dan Swarm akan memutuskan di mana setiap kontainer (tugas) akan dijalankan, bagaimana mendistribusikannya jika sebuah node gagal, dan bagaimana menyeimbangkan lalu lintas di antara mereka.

Dalam hal orkestrasi kontainer , Docker Swarm mencakup kebutuhan umum banyak tim DevOps: penskalaan horizontal yang mudah, ketersediaan tinggi dasar, penyeimbangan beban internal, jaringan berlapis antar node, dan penyebaran terkontrol, sehingga cocok untuk arsitektur layanan mikro . Ini sangat menarik untuk proyek-proyek kecil dan menengah, atau untuk organisasi yang sangat familiar dengan ekosistem Docker yang tidak memerlukan kompleksitas penuh Kubernetes.

Swarm sangat cocok untuk skenario di mana kesederhanaan adalah kunci : laboratorium, lingkungan staging, klaster on-premises di dalam UKM, atau bahkan produksi cloud ketika Anda tidak ingin mengelola platform yang kompleks. Selain itu, Swarm terintegrasi dengan mulus dengan pipeline CI/CD dan praktik DevOps yang sudah menggunakan Docker untuk pengemasan aplikasi.

Klaster Docker Swarm untuk kontainer

Konsep-konsep kunci dalam Docker Swarm: node, layanan, dan jaringan.

Sebelum Anda mulai mengetik perintah sembarangan , penting untuk memahami bagaimana Swarm merujuk pada setiap bagian dari teka-teki tersebut. Ini adalah konsep-konsep yang akan sering Anda lihat di CLI dan dokumentasi.

Node adalah mesin apa pun yang merupakan bagian dari swarm; bisa berupa server fisik, VM di cloud, atau bahkan laptop Anda di lingkungan pengujian. Setiap node menjalankan Docker Engine dan mendaftar ke cluster menggunakan peran tertentu.

Node Manajer : Ini adalah otak dari klaster. Node ini bertanggung jawab untuk mempertahankan status yang diinginkan, menjadwalkan tugas, dan mengatur operasi. Dapat terdapat beberapa manajer untuk memastikan ketersediaan bidang kontrol yang tinggi, tetapi salah satunya bertindak sebagai pemimpin dan mengkoordinasikan yang lainnya.

Node Pekerja : Ini adalah "pekerja" dari swarm. Mereka tidak membuat keputusan orkestrasi; mereka hanya menjalankan tugas (kontainer) yang ditugaskan kepada mereka oleh manajer. Hal ini memungkinkan kapasitas komputasi untuk ditingkatkan dengan menambahkan lebih banyak pekerja sesuai kebutuhan.

Service adalah unit penyebaran di Swarm. Service mendefinisikan citra kontainer yang akan digunakan, jumlah replika, port, variabel lingkungan, konfigurasi, rahasia, dan opsi lainnya. Tidak seperti menjalankan satu kontainer dengan `docker run`, `docker service create` mendeskripsikan sebuah service yang dipelihara Swarm dalam keadaan yang diinginkan.

Sebuah tugas adalah contoh konkret dari sebuah kontainer yang terkait dengan sebuah layanan dan ditugaskan ke sebuah node. Jika Anda meminta layanan dengan 3 replika, Swarm akan membuat 3 tugas. Jika sebuah tugas gagal, manajer akan membuat tugas lain untuk mempertahankan jumlah replika.

Overlay Network : Ini adalah jenis jaringan virtual terdistribusi yang memungkinkan kontainer yang terletak di node berbeda untuk berkomunikasi seolah-olah mereka berada di jaringan lokal yang sama. Swarm mengandalkan jaringan overlay ini untuk menghubungkan layanan, menerapkan penyeimbangan beban antar replika, dan mengisolasi aplikasi satu sama lain.

Langkah pertama: menginisialisasi dan menguji klaster Docker Swarm.

Menyiapkan swarm dasar ternyata sangat mudah jika Anda sudah menginstal Docker di mesin Anda. Anda tidak memerlukan perangkat lunak tambahan apa pun: cukup aktifkan mode swarm dan gabungkan node ke dalam cluster.

  Server DNS: Panduan Lengkap untuk Memanfaatkannya Secara Maksimal

Langkah 1: Buat manajer pertama . Pada mesin yang ingin Anda gunakan sebagai node manajer awal, jalankan:

docker swarm init –advertise-addr

Parameter `--advertise-addr` menentukan alamat IP yang akan digunakan node lain untuk melihat manajer ini. Setelah menjalankan perintah, Docker akan secara otomatis menampilkan token dan perintah yang siap digunakan node lain untuk bergabung dengan swarm sebagai pekerja.

Langkah 2: Gabungkan node pekerja ke klaster . Pada setiap mesin yang akan bertindak sebagai pekerja, jalankan perintah yang mirip dengan:

docker swarm join –token :2377

Token gabung dan alamat IP manajer dihasilkan dari perintah `docker swarm init`. Port 2377 digunakan secara default untuk komunikasi kontrol. Mulai saat itu, node akan muncul sebagai bagian dari swarm dan siap menerima tugas.

Memeriksa status klaster semudah pergi ke manajer (tidak berfungsi pada pekerja terisolasi) dan menjalankan perintah berikut:

docker node ls

Perintah ini menampilkan semua node dalam swarm , ID, nama host, peran (manajer atau pekerja), dan status saat ini. Dari sini, Anda dapat mendeteksi apakah ada node yang mati, dalam mode pengurasan, atau mengalami masalah koneksi.

Menerapkan layanan di Docker Swarm: dari nginx pertama hingga produksi.

Setelah klaster berjalan dengan baik , bagian yang menarik dimulai: menyebarkan layanan. Alih-alih meluncurkan kontainer individual dengan `docker run`, Anda mendefinisikan layanan yang akan dikelola dan diseimbangkan ulang secara otomatis oleh Swarm.

Membuat layanan sederhana seperti server web Nginx yang dapat diakses dari luar klaster dilakukan dengan perintah seperti ini:

docker service create –name my-nginx -p 80:80 nginx

Ini memulai layanan bernama my-nginx yang mengekspos port 80 dari kontainer ke port 80 dari node klaster. Swarm menangani penerbitan layanan dan penyeimbangan beban permintaan masuk di berbagai replika saat Anda melakukan penskalaan.

Mencantumkan layanan yang diimplementasikan membantu Anda melacak apa saja yang berjalan di dalam swarm:

layanan buruh pelabuhan ls

Di sini Anda melihat nama layanan, modenya, dan jumlah replika dalam format saat ini/yang diinginkan. Misalnya, jika Anda melihat 3/5, itu berarti masih dalam proses pembuatan tugas untuk mencapai kondisi yang diinginkan.

Memeriksa detail dan status tugas untuk layanan tertentu memungkinkan Anda untuk mengidentifikasi di node mana setiap instance berjalan:

docker service ps my-nginx

Output tersebut menampilkan tugas, node yang ditugaskan , status (Berjalan, Mempersiapkan, Mematikan, dll.), image yang digunakan, dan waktu berjalan. Ini sangat penting untuk mendebug masalah deployment atau load balancing.

Manajemen siklus hidup: penskalaan, peningkatan, dan penghapusan layanan

Salah satu keunggulan utama orkestrasi adalah kemampuan untuk menskalakan dan memperbarui layanan tanpa harus melakukannya satu per satu pada setiap server. Swarm mempermudah hal ini melalui baris perintah.

Menskalakan layanan di Docker Swarm berarti menentukan berapa banyak replika layanan yang Anda inginkan secara total. Misalnya, jika Anda membuat my-nginx dengan satu replika dan ingin meningkatkannya menjadi tiga:

docker service scale my-nginx=3

Swarm menangani penjadwalan tugas baru pada node yang tersedia, dengan memperhatikan sumber daya dan status pekerja. Jika Anda membutuhkan kapasitas lebih di kemudian hari, Anda dapat meningkatkan ke lima replika dengan:

docker service scale my-nginx=5

Memperbarui citra layanan adalah poin penting lainnya, terutama di lingkungan produksi. Alih-alih menghentikan dan menghapus kontainer secara manual, Anda dapat melakukan pembaruan terkontrol:

docker service update –image nginx:latest my-nginx

Perintah ini menginstruksikan Swarm untuk secara bertahap memigrasikan tugas-tugas yang ada ke citra baru, mengikuti strategi pembaruan yang telah ditentukan (secara default, pembaruan bergulir). Hal ini meminimalkan dampak pada pengguna akhir.

Menghapus layanan ketika Anda tidak lagi membutuhkannya juga dilakukan di tingkat swarm, bukan di tingkat kontainer individual:

docker service rm my-nginx

Ini menghentikan dan menghapus semua tugas terkait dari Swarm , membebaskan sumber daya pada node. Ini adalah cara yang bersih untuk menonaktifkan komponen yang tidak lagi relevan dalam arsitektur Anda.

Praktik terbimbing: menyiapkan klaster Anda sendiri dan menerapkan layanan

Untuk memperkuat pemahaman konsep, tidak ada yang lebih baik daripada latihan kecil yang dapat Anda ulangi di lingkungan laboratorium, dengan mesin virtual lokal atau instance cloud yang murah.

Latihan 1: Konfigurasi klaster Docker Swarm . Idenya adalah memiliki setidaknya tiga node: satu sebagai manajer dan dua sebagai pekerja. Pada manajer, aktifkan swarm dengan:

docker swarm init –advertise-addr

Selanjutnya, salin perintah gabung yang ditampilkan dalam output dan jalankan pada setiap pekerja:

docker swarm join –token :2377

Pastikan semuanya berjalan lancar dengan:

  Hard Drive NAS vs. Hard Drive Eksternal: Panduan Lengkap untuk Memilih Penyimpanan Anda

docker node ls

Anda akan melihat manajer dalam status Pemimpin dan pekerja sebagai Aktif. Jika ada yang muncul sebagai Tidak Aktif, periksa konektivitas, firewall, dan versi Docker.

Latihan 2: Menerapkan dan menskalakan layanan . Setelah klaster siap, buat layanan nginx yang dapat diakses melalui HTTP:

docker service create –name my-nginx -p 80:80 nginx

Periksa keberadaannya dengan :

layanan buruh pelabuhan ls

Tingkatkan skala layanan menjadi tiga replika menggunakan:

docker service scale my-nginx=3

Periksa di mana tugas-tugas tersebut telah diimplementasikan dengan:

docker service ps my-nginx

Sebagai solusi dasar untuk latihan ini , Anda seharusnya melihat ketiga tugas tersebut didistribusikan di antara node yang berbeda (jika ada sumber daya yang cukup), dan ketika melakukan permintaan HTTP ke port 80 dari cluster, Swarm akan mengarahkan lalu lintas ke replika yang berbeda sesuai dengan load balancer internalnya.

Keunggulan Docker Swarm dibandingkan manajemen kontainer manual

Menggunakan Swarm sebagai pengganti peluncuran kontainer individual menawarkan sejumlah manfaat yang akan terlihat jelas sejak Anda membutuhkan lebih dari sekadar lingkungan pengujian sederhana.

Penyebaran sederhana yang terintegrasi ke dalam Docker CLI : Anda tidak perlu mempelajari alat yang sepenuhnya baru; perintah manajemen layanan dan klaster sangat mirip dengan apa yang sudah Anda lakukan dengan docker run, docker ps, atau docker images.

Penyeimbangan beban bawaan : Saat Anda mengekspos layanan dengan `-p`, Swarm akan mengiklankan port pada node yang diperlukan dan mendistribusikan lalu lintas di antara replika yang tersedia. Anda tidak perlu menambahkan penyeimbang beban eksternal dasar seperti Traefik untuk mendistribusikan permintaan, yang menyederhanakan arsitektur awal.

Ketersediaan tinggi dan toleransi kesalahan : Jika sebuah kontainer mengalami kerusakan atau node pekerja gagal, Swarm mendeteksi hilangnya tugas dan mencoba membuatnya kembali pada node lain untuk mempertahankan jumlah replika. Hal ini mencegah banyak gangguan layanan akibat kegagalan yang terisolasi.

Manajemen terpusat dari keadaan yang diinginkan : Anda menentukan berapa banyak replika yang Anda inginkan, citra mana yang akan digunakan, port mana yang akan dibuka, dan batasan mana yang akan diterapkan, dan klaster akan mengurus konvergensi ke keadaan tersebut. Perubahan di masa mendatang (pembaruan, penskalaan, pengurasan node) juga dikelola dari bidang kontrol ini.

Kapan sebaiknya menggunakan Docker Swarm dalam proyek Anda?

Tidak semua situasi membutuhkan Kubernetes atau layanan mikro yang canggih . Docker Swarm sangat cocok untuk sejumlah kasus penggunaan di mana keseimbangan antara kesederhanaan dan kemampuan orkestrasi diinginkan.

Klaster produksi skala kecil dan menengah : Jika Anda mengelola beberapa aplikasi bisnis, API, atau layanan internal dan infrastruktur Anda tidak besar, Swarm menawarkan apa yang Anda butuhkan tanpa memaksa Anda untuk mempelajari ekosistem yang sangat besar.

Tim yang sangat terintegrasi dengan Docker dan ingin beralih ke orkestrasi tanpa terjebak dalam kurva pembelajaran Kubernetes. Karena Swarm merupakan bagian dari Docker Engine itu sendiri, transisi biasanya lebih lancar dan cepat.

Lingkungan cloud dan arsitektur terdistribusi di mana Anda ingin terus menggunakan layanan terkelola dari penyedia utama (basis data, antrian pesan, penyimpanan, dll.) sementara aplikasi Anda berjalan dalam kontainer yang diatur dengan Swarm. Ini adalah cara yang masuk akal untuk menggabungkan kesederhanaan dengan kemampuan cloud.

Kasus penggunaan DevOps dan otomatisasi di mana Anda membutuhkan pipeline yang membangun image, mengunggahnya ke registry, dan secara otomatis menyebarkannya ke cluster. Swarm terintegrasi dengan baik dengan alat CI/CD dan memfasilitasi siklus continuous delivery yang cepat.

Jika Anda membutuhkan kontrol ekstrem, ekosistem besar, atau integrasi kompleks, Kubernetes mungkin lebih masuk akal. Namun untuk banyak proyek di dunia nyata, Swarm menyediakan orkestrasi yang diperlukan dengan gesekan operasional yang lebih sedikit.

Panduan praktis dan pendekatan DevOps: dari dasar-dasar hingga penerapan tingkat lanjut

Jika Anda merasa bingung di tengah tutorial yang tersebar, kesalahan produksi yang aneh, dan dokumentasi yang tidak terstruktur tentang Docker Swarm, Anda tidak sendirian. Banyak tim pengembangan dan operasional merasa kewalahan saat beralih dari kontainer individual ke platform yang terorkestrasi.

Panduan DevOps komprehensif yang berfokus pada Swarm biasanya disusun menjadi beberapa blok utama. Pertama, panduan ini menetapkan dasar-dasar Docker: pembuatan image, manajemen dan optimasi kontainer , penggunaan registry, dan praktik pengemasan terbaik. Fondasi yang kokoh ini sangat penting untuk mencegah orkestrasi menjadi mimpi buruk di kemudian hari.

Selanjutnya, kita akan membahas lebih dalam tentang jaringan dan persistensi : tipe jaringan Docker (bridge, host, overlay, macvlan), manajemen volume dan persistensi data, serta penyebaran aplikasi multi-kontainer dengan Docker Compose. Ini akan memberikan Anda model yang jelas tentang seperti apa tumpukan Anda seharusnya sebelum menyebarkannya ke swarm terdistribusi.

Level selanjutnya berfokus pada implementasi layanan Swarm , mencakup segala hal mulai dari inisialisasi klaster hingga fitur-fitur canggih seperti rahasia, konfigurasi, dan tumpukan. Di sini Anda akan bekerja dengan definisi layanan deklaratif, kredensial terenkripsi, dan konfigurasi bersama di seluruh kontainer.

Area penting lainnya adalah penyeimbangan beban, pencatatan log, dan pengamatan : mempelajari cara mengekspos layanan dengan benar, meninjau log, mengidentifikasi hambatan, dan menerapkan teknik pemecahan masalah untuk mempertahankan ketersediaan tinggi setiap hari. Untuk memantau dan mendiagnosis sistem, panduan pemantauan tingkat lanjut yang mencakup metrik dan peringatan akan sangat bermanfaat.

  Apa itu mode UEFI dan apa perbedaannya dengan BIOS?

Terakhir, semuanya terintegrasi ke dalam pipeline DevOps dengan latihan pemrograman praktis: mulai dari pembuatan image otomatis hingga deployment berkelanjutan di seluruh cluster, memastikan bahwa setiap perubahan kode dapat diterapkan ke produksi secara andal dan berulang.

Lebih dari sekadar dasar-dasar: Jaringan Docker dan langkah selanjutnya dengan Swarm

Setelah Anda menguasai cara memulai klaster dan layanan pertama , langkah selanjutnya biasanya adalah memahami secara menyeluruh bagaimana kontainer Anda berkomunikasi satu sama lain dan dengan dunia luar.

Jaringan bridge dan host Docker mengatur sebagian besar komunikasi pada satu mesin, sementara jaringan overlay sangat penting untuk menghubungkan kontainer di berbagai node dalam sebuah swarm. Memahami perbedaan di antara keduanya, kapan harus menggunakan masing-masing, dan bagaimana interaksinya dengan firewall eksternal dan load balancer sangat penting untuk menghindari masalah di lingkungan produksi.

Jaringan seperti macvlan memungkinkan Anda untuk menetapkan alamat IP "nyata" dari jaringan fisik ke kontainer, yang dapat sangat berguna di lingkungan tertentu di mana Anda membutuhkan layanan untuk berperilaku seperti host independen di tingkat jaringan, tetapi juga menambah kompleksitas dan persyaratan konfigurasi tambahan.

Mempelajari jaringan Docker secara mendalam akan membantu Anda menyelaraskan desain layanan Swarm dengan topologi jaringan organisasi atau penyedia cloud Anda, dengan jelas mendefinisikan layanan mana yang internal, mana yang terekspos ke luar, dan bagaimana cara membagi lalu lintas antar lingkungan (pengembangan, pengujian, produksi).

Area pengembangan menarik lainnya di Swarm adalah penggunaan rahasia dan konfigurasi yang lebih mendalam untuk mengelola kredensial, sertifikat, dan file konfigurasi tanpa menyematkannya langsung ke dalam image atau menggunakan variabel lingkungan biasa. Hal ini meningkatkan keamanan dan membuat manajemen lingkungan jauh lebih terorganisir.

Layanan pengembangan kustom, komputasi awan, dan intelijen bisnis yang dibangun di sekitar Docker Swarm.

Orkestrasi kontainer tidak terisolasi dari ekosistem TI lainnya . Perusahaan pengembang yang mengkhususkan diri dalam aplikasi kustom dan perangkat lunak kustom sering mengandalkan platform kontainer seperti Swarm untuk menghadirkan solusi yang lebih tangguh dan skalabel.

Mengintegrasikan Swarm dengan layanan cloud AWS dan Azure memungkinkan penerapan klaster yang fleksibel.

serta memanfaatkan komponen cloud terkelola (basis data, antrian pesan, penyimpanan objek), sambil mempertahankan kendali langsung atas lapisan eksekusi kontainer.

Secara paralel, kecerdasan buatan dan AI untuk bisnis sangat cocok dengan lingkungan terkoordinasi menggunakan kontainer: model AI, layanan mikro inferensi, dan agen AI dapat berjalan sebagai layanan Swarm yang skalanya sesuai dengan beban, mencegah satu mesin menjadi hambatan.

Dalam ranah business intelligence dan Power BI , memiliki backend yang diimplementasikan di Docker Swarm memudahkan ekstraksi data secara andal dari API, layanan ETL, dan pipeline pemrosesan. Orkestrasi memastikan bahwa layanan-layanan ini selalu tersedia untuk memasok data ke dashboard dan analitik.

Keamanan siber juga semakin penting dalam konteks ini : klaster yang dikonfigurasi dengan baik, dengan komunikasi TLS, pembaruan citra yang terkontrol, pemindaian kerentanan, dan manajemen rahasia terpusat, mengurangi risiko dibandingkan dengan penyebaran kontainer independen yang kacau. Selain itu, praktik pengerasan dan kontrol akses meningkatkan perlindungan lingkungan secara keseluruhan.

Pada akhirnya, menggabungkan pengembangan kustom, layanan cloud, AI, dan BI pada platform orkestrasi seperti Docker Swarm memungkinkan Anda membangun solusi modern, terukur, dan tangguh tanpa meningkatkan kompleksitas teknis atau biaya operasional.

Menguasai Docker Swarm sebagai alat orkestrasi kontainer menempatkan Anda pada posisi yang sangat kuat di dunia DevOps: Anda beralih dari berjuang dengan kontainer yang tersebar dan penerapan yang rapuh menjadi bekerja dengan klaster yang koheren, terukur, dan aman, yang mampu mendukung segala hal mulai dari aplikasi web sederhana hingga arsitektur terdistribusi dengan layanan cloud, kecerdasan buatan, otomatisasi, dan solusi intelijen bisnis terintegrasi.

Docker Swarm edge
Artikel terkait:
Docker Swarm dan Portainer Edge untuk penerapan di lingkungan edge.