- Docker Swarm membolehkan anda mencipta kelompok nod untuk mengatur perkhidmatan kontena dengan ketersediaan tinggi dan pengimbangan beban bersepadu.
- Konsep rangkaian nod, pengurus, pekerja, perkhidmatan, tugas dan tindanan adalah asas untuk memahami bagaimana Swarm mengurus dan mengedarkan kontena.
- Perintah seperti docker swarm init, docker service create atau docker service scale memudahkan penggunaan, penskalaan dan pengemaskinian aplikasi.
- Swarm sangat sesuai dalam projek kecil dan sederhana, berintegrasi dengan perkhidmatan awan, amalan DevOps, AI dan risikan perniagaan.

Menguruskan berpuluh-puluh atau beratus-ratus kontena yang tersebar merentasi berbilang mesin boleh menjadi satu masalah jika anda hanya bergantung pada Docker yang sedia ada. Apabila anda mula bercakap tentang ketersediaan tinggi, penskalaan automatik atau penggunaan bebas masa henti, anda memerlukan lebih daripada sekadar kontena individu: anda memerlukan orkestrasi kontena . Dan di situlah Docker Swarm memainkan peranan, penyelesaian asli Docker untuk menyelaraskan kontena merentasi kluster.
Jika anda baru sahaja menggunakan Docker Compose pada satu mesin dan mendapati ia tidak mencukupi untuk persekitaran dunia sebenar, Swarm ialah langkah logik seterusnya. Ia membolehkan anda menyediakan kluster nod, mengagihkan perkhidmatan merentasinya, mengimbangkan beban, menggantikan bekas yang rosak dan akhirnya mengubah pelbagai pelayan menjadi platform tunggal yang koheren dan sedia untuk pengeluaran, tanpa perlu terus beralih ke Kubernetes jika anda mendapati ia terlalu rumit atau rumit.
Apakah Docker Swarm dan mengapa ia penting dalam orkestrasi kontena?
Docker Swarm ialah enjin pengelompokan dan orkestrasi yang dibina terus ke dalam Docker. Ia bukan alat luaran, tetapi sebaliknya mod operasi Enjin Docker itu sendiri yang membolehkan anda mengumpulkan berbilang mesin (fizikal atau maya) ke dalam kluster logik, yang dipanggil swarm, di mana anda menggunakan perkhidmatan dan bukannya bekas terpencil.
Keindahan Swarm ialah ia mengabstrakkan keseluruhan set nod dan membolehkan anda berfungsi seolah-olah anda mempunyai satu "pelayan super". Anda menentukan perkhidmatan, bilangan replika, port yang terdedah dan sekatan, dan Swarm memutuskan di mana hendak menjalankan setiap kontena (tugas), cara mengagihkannya semula jika nod gagal dan cara mengimbangi trafik di antara mereka.
Dari segi orkestrasi kontena , Docker Swarm memenuhi keperluan tipikal kebanyakan pasukan DevOps: penskalaan mendatar yang mudah, ketersediaan tinggi asas, pengimbangan beban dalaman, rangkaian berlapis antara nod dan penggunaan terkawal, menjadikannya sesuai untuk seni bina mikroservis . Ia amat menarik untuk projek kecil dan sederhana atau untuk organisasi yang sangat biasa dengan ekosistem Docker yang tidak memerlukan kerumitan penuh Kubernetes.
Swarm sangat sesuai untuk senario yang mengutamakan kesederhanaan : makmal, persekitaran pementasan, kluster di premis dalam PKS atau pengeluaran awan apabila anda tidak mahu mengurus platform yang kompleks. Tambahan pula, ia berintegrasi dengan lancar dengan saluran paip CI/CD dan amalan DevOps yang sudah menggunakan Docker untuk pembungkusan aplikasi.
Konsep utama dalam Docker Swarm: nod, perkhidmatan dan rangkaian
Sebelum anda mula menaip arahan dengan begitu teliti , adalah penting untuk memahami bagaimana Swarm merujuk kepada setiap bahagian teka-teki. Ini adalah konsep yang akan anda lihat sentiasa dalam CLI dan dokumentasi.
Nod ialah sebarang mesin yang merupakan sebahagian daripada kumpulan; ia boleh jadi pelayan fizikal, VM di awan atau komputer riba anda dalam persekitaran ujian. Setiap nod menjalankan Docker Engine dan mendaftar dengan kluster menggunakan peranan tertentu.
Nod Pengurus : Ini adalah otak kluster. Ia bertanggungjawab untuk mengekalkan keadaan yang diingini, menjadualkan tugas dan mengatur operasi. Mungkin terdapat berbilang pengurus untuk memastikan ketersediaan satah kawalan yang tinggi, tetapi salah seorang daripada mereka bertindak sebagai ketua dan menyelaras yang lain.
Nod Pekerja : Ini adalah "pekerja" bagi kumpulan pekerja. Mereka tidak membuat keputusan orkestrasi; mereka hanya melaksanakan tugas (bekas) yang diberikan kepada mereka oleh pengurus. Ini membolehkan kapasiti pengkomputeran diskalakan dengan menambah lebih ramai pekerja mengikut keperluan.
Perkhidmatan ialah unit pelaksanaan dalam Swarm. Ia mentakrifkan imej kontena yang hendak digunakan, bilangan replika, port, pembolehubah persekitaran, konfigurasi, rahsia dan pilihan lain. Tidak seperti menjalankan satu kontena dengan `docker run`, `docker service create` menerangkan perkhidmatan yang dikekalkan oleh Swarm dalam keadaan yang diingini.
Tugasan ialah contoh konkrit bagi bekas yang dikaitkan dengan perkhidmatan dan ditugaskan kepada nod. Jika anda meminta perkhidmatan dengan 3 replika, Swarm akan mencipta 3 tugasan. Jika tugasan gagal, pengurus akan mencipta satu lagi tugasan untuk mengekalkan bilangan replika.
Rangkaian Tindanan : Ini adalah sejenis rangkaian maya teragih yang membolehkan kontena yang terletak pada nod yang berbeza berkomunikasi seolah-olah ia berada pada rangkaian tempatan yang sama. Swarm bergantung pada rangkaian tindanan ini untuk menyambungkan perkhidmatan, menggunakan pengimbangan beban antara replika dan mengasingkan aplikasi antara satu sama lain.
Langkah pertama: memulakan dan menguji kluster Docker Swarm
Menyediakan swarm asas adalah sangat mudah jika anda sudah memasang Docker pada mesin anda. Anda tidak memerlukan sebarang perisian tambahan: hanya aktifkan mod swarm dan sambungkan nod ke kluster.
Langkah 1: Cipta pengurus pertama . Pada mesin yang anda ingin gunakan sebagai nod pengurus awal, jalankan:
kawanan docker init –iklan-addr
Parameter `--advertise-addr` menentukan alamat IP yang akan digunakan oleh nod lain untuk melihat pengurus ini. Selepas menjalankan arahan, Docker akan memaparkan token dan arahan secara automatik yang sedia untuk nod lain menyertai kumpulan sebagai pekerja.
Langkah 2: Sambungkan nod pekerja ke kluster . Pada setiap mesin yang akan bertindak sebagai pekerja, jalankan sesuatu yang serupa dengan:
join kawanan docker –token :2377
Token join dan alamat IP pengurus dikeluarkan daripada arahan `docker swarm init`. Port 2377 digunakan secara lalai untuk komunikasi kawalan. Mulai saat itu, nod akan muncul sebagai sebahagian daripada swarm dan akan bersedia untuk menerima tugasan.
Memeriksa status kluster semudah pergi ke pengurus (ia tidak berfungsi pada pekerja terpencil) dan menjalankan:
nod docker ls
Arahan ini menunjukkan kepada anda semua nod dalam swarm , ID, nama hos, peranan (pengurus atau pekerja) dan status semasa mereka. Dari sini, anda boleh mengesan jika mana-mana nod tergendala, dalam mod saliran atau mengalami masalah sambungan.
Menggunakan perkhidmatan dalam Docker Swarm: dari nginx pertama hingga pengeluaran
Sebaik sahaja kluster anda beroperasi , bahagian yang menarik bermula: menggunakan perkhidmatan. Daripada melancarkan kontena individu dengan `docker run`, anda menentukan perkhidmatan yang Swarm selenggara dan imbangan semula secara automatik.
Mencipta perkhidmatan mudah seperti pelayan web Nginx yang boleh diakses dari luar kluster dilakukan dengan arahan seperti ini:
perkhidmatan docker buat –nama my-nginx -p 80:80 nginx
Ini memulakan perkhidmatan yang dipanggil my-nginx yang mendedahkan port 80 bekas kepada port 80 nod kluster. Swarm mengendalikan penerbitan perkhidmatan dan pengimbangan beban permintaan masuk merentasi replika yang berbeza semasa anda menskalakannya.
Menyenaraikan perkhidmatan yang digunakan membantu anda menjejaki apa yang sedang berjalan dalam kumpulan:
perkhidmatan buruh pelabuhan ls
Di sini anda dapat melihat nama perkhidmatan, modnya dan bilangan replika dalam format semasa/yang diingini. Contohnya, jika anda menunjukkan 3/5, ini bermakna ia masih dalam proses mencipta tugasan untuk mencapai keadaan yang diingini.
Memeriksa butiran dan status tugas untuk perkhidmatan tertentu membolehkan anda mengenal pasti pada nod mana setiap tika sedang dijalankan:
perkhidmatan docker ps my-nginx
Output memaparkan tugasan, nod yang ditugaskan , status (Berjalan, Bersedia, Menutup, dll.), imej yang digunakan dan masa jalan. Ini penting untuk menyahpepijat isu penggunaan atau pengimbangan beban.
Pengurusan kitaran hayat: penskalaan, penaiktarafan dan pemadaman perkhidmatan
Salah satu kelebihan besar orkestrasi ialah keupayaan untuk menskala dan mengemas kini perkhidmatan tanpa perlu pergi ke pelayan demi pelayan. Swarm menjadikannya agak mudah dari baris arahan.
Menskalakan perkhidmatan dalam Docker Swarm bermaksud menentukan jumlah replika perkhidmatan yang anda inginkan. Contohnya, jika anda mencipta my-nginx dengan satu replika dan ingin meningkatkannya kepada tiga:
skala perkhidmatan docker my-nginx=3
Swarm mengendalikan penjadualan tugasan baharu pada nod yang tersedia, dengan menghormati sumber dan keadaan pekerja. Jika anda memerlukan lebih banyak kapasiti kemudian, anda boleh menaik taraf kepada lima replika dengan:
skala perkhidmatan docker my-nginx=5
Mengemas kini imej perkhidmatan merupakan satu lagi perkara penting, terutamanya dalam pengeluaran. Daripada menghentikan dan memadam bekas secara manual, anda boleh melakukan kemas kini terkawal:
kemas kini perkhidmatan docker –imej nginx:my-nginx terkini
Arahan ini mengarahkan Swarm untuk memindahkan tugasan sedia ada secara progresif ke imej baharu, mengikut strategi kemas kini yang ditetapkan (secara lalai, kemas kini bergulir). Ini meminimumkan impak pada pengguna akhir.
Mengalih keluar perkhidmatan apabila anda tidak lagi memerlukannya juga dilakukan pada peringkat kumpulan, bukan pada peringkat kontena individu:
perkhidmatan docker rm my-nginx
Ini menghentikan dan mengalih keluar semua tugasan berkaitan daripada Swarm , membebaskan sumber pada nod. Ia merupakan cara yang bersih untuk menyahtauliah komponen yang tidak lagi masuk akal dalam seni bina anda.
Amalan berpandu: menyediakan kluster anda sendiri dan menggunakan perkhidmatan
Untuk mengukuhkan konsep, tiada yang dapat menandingi latihan kecil yang boleh anda tiru dalam persekitaran makmal, dengan mesin maya tempatan atau contoh awan yang murah.
Latihan 1: Konfigurasikan kluster Docker Swarm . Ideanya adalah untuk mempunyai sekurang-kurangnya tiga nod: satu sebagai pengurus dan dua sebagai pekerja. Pada pengurus, dayakan swarm dengan:
kawanan docker init –iklan-addr
Seterusnya, salin arahan join yang ditunjukkan dalam output dan jalankannya pada setiap pekerja:
join kawanan docker –token :2377
Pastikan semuanya berjalan lancar dengan:
nod docker ls
Anda akan melihat pengurus dalam status Pemimpin dan pekerja sebagai Aktif. Jika ada yang muncul sebagai Tidak Aktif, periksa kesambungan, tembok api dan versi Docker.
Latihan 2: Gunakan dan skalakan perkhidmatan . Dengan kluster sedia, cipta perkhidmatan nginx yang boleh diakses melalui HTTP:
perkhidmatan docker buat –nama my-nginx -p 80:80 nginx
Semak kewujudannya dengan :
perkhidmatan buruh pelabuhan ls
Skalakan perkhidmatan kepada tiga replika menggunakan:
skala perkhidmatan docker my-nginx=3
Semak di mana tugasan telah digunakan dengan:
perkhidmatan docker ps my-nginx
Sebagai penyelesaian asas untuk latihan ini , anda harus melihat tiga tugasan yang diagihkan di antara nod yang berbeza (jika terdapat sumber yang mencukupi), dan apabila membuat permintaan HTTP ke port 80 kluster, Swarm akan menghalakan trafik ke replika yang berbeza mengikut pengimbang beban dalamannya.
Kelebihan Docker Swarm berbanding pengurusan kontena manual
Menggunakan Swarm dan bukannya melancarkan kontena individu menawarkan beberapa faedah yang menjadi jelas dari saat anda memerlukan lebih daripada sekadar persekitaran ujian yang mudah.
Pelaksanaan mudah disepadukan ke dalam Docker CLI : anda tidak perlu mempelajari alat yang baharu sepenuhnya; arahan pengurusan perkhidmatan dan kluster sangat serupa dengan apa yang telah anda lakukan dengan docker run, docker ps atau imej docker.
Pengimbangan beban terbina dalam : Apabila anda mendedahkan perkhidmatan dengan `-p`, Swarm mengiklankan port pada nod yang diperlukan dan mengagihkan trafik antara replika yang tersedia. Anda tidak perlu menambah pengimbang beban luaran asas seperti Traefik untuk mengagihkan permintaan, yang memudahkan seni bina awal.
Ketersediaan dan toleransi kesalahan yang tinggi : Jika kontena ranap atau nod pekerja gagal, Swarm mengesan kehilangan tugasan dan cuba menciptanya semula pada nod lain untuk mengekalkan bilangan replika. Ini menghalang banyak gangguan perkhidmatan disebabkan oleh kegagalan terpencil.
Pengurusan berpusat bagi keadaan yang diingini : anda mengisytiharkan berapa banyak replika yang anda mahukan, imej yang hendak digunakan, port yang hendak dibuka dan sekatan yang hendak dikenakan, dan kluster akan menguruskan penumpuan kepada keadaan tersebut. Perubahan masa hadapan (kemas kini, penskalaan, penyaliran nod) juga diuruskan daripada satah kawalan ini.
Bilakah masa yang sesuai untuk menggunakan Docker Swarm dalam projek anda?
Tidak semua situasi memerlukan Kubernetes atau perkhidmatan mikro yang dipertingkatkan . Docker Swarm sangat sesuai dalam beberapa kes penggunaan di mana keseimbangan antara kesederhanaan dan keupayaan orkestrasi diperlukan.
Kelompok pengeluaran kecil dan sederhana : Jika anda mengurus beberapa aplikasi perniagaan, API atau perkhidmatan dalaman dan infrastruktur anda tidak besar, Swarm menawarkan apa yang anda perlukan tanpa memaksa anda mempelajari ekosistem yang besar.
Pasukan yang sangat bersepadu dengan Docker yang ingin membuat lompatan ke arah orkestrasi tanpa terbeban dengan lengkung pembelajaran Kubernetes. Memandangkan Swarm adalah sebahagian daripada Enjin Docker itu sendiri, peralihan biasanya lebih lancar dan pantas.
Persekitaran awan dan seni bina teragih di mana anda ingin terus menggunakan perkhidmatan terurus daripada pembekal utama (pangkalan data, barisan mesej, storan, dll.) sementara aplikasi anda berjalan dalam bekas yang diatur dengan Swarm. Ia merupakan cara yang bijak untuk menggabungkan kesederhanaan dengan keupayaan awan.
Kes penggunaan DevOps dan automasi di mana anda memerlukan saluran paip yang membina imej, memuat naiknya ke pendaftaran dan menggunakan secara automatik ke kluster. Swarm berintegrasi dengan baik dengan alat CI/CD dan memudahkan kitaran penghantaran berterusan yang pantas.
Apabila anda memerlukan kawalan yang ekstrem, ekosistem yang besar atau integrasi yang kompleks, Kubernetes mungkin lebih masuk akal. Tetapi untuk banyak projek dunia sebenar, Swarm menyediakan orkestrasi yang diperlukan dengan geseran operasi yang kurang.
Panduan praktikal dan pendekatan DevOps: daripada asas kepada penggunaan lanjutan
Jika anda rasa sesat di tengah-tengah tutorial yang berselerak, ralat pengeluaran yang pelik dan dokumentasi yang tidak tersusun tentang Docker Swarm, anda tidak keseorangan. Banyak pasukan pembangunan dan operasi mendapati diri mereka terbeban apabila beralih daripada kontena individu kepada platform yang diatur.
Panduan DevOps komprehensif yang tertumpu pada Swarm biasanya disusun kepada beberapa blok utama. Pertama, ia menetapkan asas-asas Docker: penciptaan imej, pengurusan dan pengoptimuman kontena , penggunaan pendaftaran dan amalan pembungkusan terbaik. Asas kukuh ini penting untuk mengelakkan orkestrasi daripada menjadi mimpi ngeri di kemudian hari.
Seterusnya, kita akan mendalami rangkaian dan kegigihan : jenis rangkaian Docker (bridge, host, overlay, macvlan), pengurusan volum dan kegigihan data, serta menggunakan aplikasi berbilang kontena dengan Docker Compose. Ini memberi anda model yang jelas tentang rupa tindanan anda sebelum menggunakannya ke swarm teragih.
Tahap seterusnya memberi tumpuan kepada pelaksanaan perkhidmatan Swarm , meliputi segala-galanya daripada permulaan kluster kepada ciri lanjutan seperti rahsia, konfigurasi dan tindanan. Di sini anda bekerja dengan definisi perkhidmatan deklaratif, kelayakan yang disulitkan dan konfigurasi kongsi merentasi kontena.
Satu lagi bidang penting ialah pengimbangan beban, pembalakan dan kebolehcerapan : mempelajari cara mendedahkan perkhidmatan dengan betul, menyemak log, mengenal pasti kesesakan dan menggunakan teknik penyelesaian masalah untuk mengekalkan ketersediaan yang tinggi setiap hari. Untuk memantau dan mendiagnosis sistem, panduan pemantauan lanjutan yang merangkumi metrik dan amaran akan sangat berguna.
Akhir sekali, semuanya disepadukan ke dalam saluran paip DevOps dengan latihan pengaturcaraan praktikal: daripada binaan imej automatik kepada penggunaan berterusan merentasi kluster, memastikan setiap perubahan kod yang andal dan berulang akan sampai ke pengeluaran.
Melangkaui asas: Rangkaian Docker dan langkah seterusnya dengan Swarm
Sebaik sahaja anda mahir memulakan kluster dan perkhidmatan pertama , peringkat seterusnya biasanya adalah untuk memahami secara menyeluruh bagaimana kontena anda berkomunikasi antara satu sama lain dan dengan dunia luar.
Jambatan Docker dan rangkaian hos mengawal sebahagian besar komunikasi pada satu mesin, manakala rangkaian tindanan adalah kunci untuk menghubungkan kontena merentasi nod yang berbeza dalam satu kumpulan. Memahami perbezaannya, bila hendak menggunakan setiap satu dan bagaimana ia berinteraksi dengan tembok api luaran dan pengimbang beban adalah penting untuk mengelakkan kejutan dalam pengeluaran.
Rangkaian seperti macvlan membolehkan anda menetapkan alamat IP "sebenar" daripada rangkaian fizikal kepada kontena, yang boleh menjadi sangat berguna dalam persekitaran tertentu di mana anda memerlukan perkhidmatan untuk bertindak seperti hos bebas di peringkat rangkaian, tetapi ia juga menambah kerumitan dan keperluan konfigurasi tambahan.
"Penyelidikan mendalam" ke dalam rangkaian Docker akan membantu anda menyelaraskan reka bentuk perkhidmatan Swarm anda dengan topologi rangkaian organisasi atau penyedia awan anda dengan lebih baik, dengan jelas menentukan perkhidmatan mana yang dalaman, yang terdedah kepada luar, dan cara menyegmentasikan trafik antara persekitaran (pembangunan, pengujian, pengeluaran).
Satu lagi bidang pembangunan yang menarik dalam Swarm ialah penggunaan rahsia dan konfigurasi yang lebih mendalam untuk mengurus kelayakan, sijil dan fail konfigurasi tanpa memasukkannya secara langsung ke dalam imej atau menggunakan pembolehubah persekitaran biasa. Ini meningkatkan keselamatan dan menjadikan pengurusan persekitaran lebih teratur.
Pembangunan tersuai, awan dan perkhidmatan risikan perniagaan yang dibina berdasarkan Docker Swarm
Orkestrasi kontena tidak terasing daripada ekosistem IT yang lain . Syarikat pembangunan yang mengkhusus dalam aplikasi tersuai dan perisian tersuai sering bergantung pada platform kontena seperti Swarm untuk memberikan penyelesaian yang lebih mantap dan boleh diskala.
Mengintegrasikan Swarm dengan perkhidmatan awan AWS dan Azure membolehkan penggunaan kluster fleksibel
dan memanfaatkan komponen awan terurus (pangkalan data, barisan mesej, storan objek), sambil mengekalkan kawalan langsung ke atas lapisan pelaksanaan kontena.
Secara selari, kecerdasan buatan dan AI untuk perniagaan sangat sesuai dengan persekitaran yang dirancang dengan kontena: model AI, perkhidmatan mikro inferens dan ejen AI boleh dijalankan sebagai perkhidmatan Swarm yang diskalakan mengikut beban, menghalang satu mesin daripada menjadi hambatan.
Dalam bidang risikan perniagaan dan Power BI , penggunaan backend pada Docker Swarm memudahkan pengekstrakan data daripada API, perkhidmatan ETL dan saluran pemprosesan dengan mantap. Orkestrasi memastikan perkhidmatan ini sentiasa tersedia untuk memberi makan kepada papan pemuka dan analitik.
Keselamatan siber juga semakin penting dalam konteks ini : kluster yang dikonfigurasikan dengan baik, dengan komunikasi TLS, kemas kini imej terkawal, pengimbasan kerentanan dan pengurusan rahsia berpusat, mengurangkan risiko berbanding penggunaan kontena bebas yang huru-hara. Tambahan pula, amalan pengerasan dan kawalan akses meningkatkan perlindungan alam sekitar secara keseluruhan.
Akhirnya, menggabungkan pembangunan tersuai, perkhidmatan awan, AI dan BI pada platform orkestrasi seperti Docker Swarm membolehkan anda membina penyelesaian moden, boleh diskala dan berdaya tahan tanpa meningkatkan kerumitan teknikal atau kos operasi.
Menguasai Docker Swarm sebagai alat orkestrasi kontena meletakkan anda dalam kedudukan yang sangat berkuasa dalam dunia DevOps: anda beralih daripada bergelut dengan kontena yang berselerak dan penggunaan yang rapuh kepada bekerja dengan kluster yang koheren, boleh diskala dan selamat, yang mampu menyokong segala-galanya daripada aplikasi web mudah kepada seni bina teragih dengan perkhidmatan awan, kecerdasan buatan, automasi dan penyelesaian kecerdasan perniagaan bersepadu.
