‫Salah satu janji besar dari wadah adalah bahwa kita dapat dengan mudah menyebarkan aplikasi kita seperti kita adalah layanan platform, Anda
‫tahu, seperti Heroku atau sesuatu. Kita dapat melakukannya pada perangkat keras siapa pun, apakah itu pada
‫perangkat keras kita, itu adalah penyedia cloud, apakah itu virtual atau fisik. Dengan Docker, aplikasi kami dapat menjalankan yang sama
‫apakah itu Amazon, Azure, DigitalOcean, Linode, Rackspace, Google Cloud atau apa pun. Tanpa semua fitur platform itu, bagaimana kita
‫dengan mudah menyebarkan dan memelihara puluhan, atau ratusan, atau bahkan ribuan kontainer di
‫banyak server atau instance? Atau node atau tetesan atau apa pun.
‫Itu membawa beberapa masalah baru yang sebelumnya tidak menjadi masalah bagi organisasi kecil.
‫Kita semua tahu tentang Netflix dan organisasi besar seperti itu yang skala ke ribuan dan ribuan node,
‫dan puluhan ribu node, dan mereka punya banyak insinyur.
‫Tetapi, jika Anda hanya memiliki beberapa orang di tim Anda, atau jika Anda hanya seorang pengembang solo, bagaimana Anda mengambil
‫wadah Anda dan skala mereka dan menangani seluruh siklus hidup mereka? Dari menyebarkan mereka, untuk memulai mereka, untuk memulai
‫kembali mereka, untuk membuat ulang mereka, untuk menghapus mereka dan memperbarui mereka dan semua itu.
‫Kami mulai mengajukan pertanyaan seputar bagaimana tepatnya Docker melakukan itu atau bahkan tidak melakukannya sama sekali?
‫Beberapa pertanyaan yang kita ajukan pada diri sendiri adalah hal-hal seperti, bagaimana kita mengukur? Bagaimana cara meningkatkannya? Bagaimana kami memastikan
‫bahwa kontainer kami memulai kembali jika gagal?
‫Bagaimana kita mengganti wadah itu ketika kita benar-benar memiliki pembaruan untuk mereka? Yang merupakan sesuatu yang disebut penyebaran hijau
‫biru saat ini, yang berarti bahwa Anda tidak memiliki downtime dan Anda mengambil server keluar
‫dari kolam untuk membawa yang baru. Anda berakhir dengan selalu sesuatu yang
‫tersedia sehingga Anda tidak pernah benar-benar kecewa ketika memperbarui. Bagaimana kita tahu jika kita punya puluhan node atau bahkan hanya tiga
‫node di mana kita memulai wadah itu? Di simpul mana kontainer kami berada? Bagaimana kita berbicara di
‫berbagai node atau server dengan jaringan kita di dalam wadah?
‫Ketika datang ke keamanan, bagaimana kita memastikan bahwa kontainer kita hanya berjalan pada mesin
‫yang kita maksudkan untuk dijalankan?
‫Sekarang kita memindahkan berbagai hal dan menyebarkannya secara dinamis, bagaimana kita menyimpan informasi pribadi
‫yang kita butuhkan untuk wadah kita, seperti rahasia atau kata sandi?
‫Jadi ini membawa kita ke evolusi besar dalam lingkup apa yang coba dipecahkan Docker.
‫Ketika orang-orang berbicara kepada saya dan mereka berpikir bahwa Docker hanya runtime kontainer, saat
‫itulah saya sebenarnya hanya menyebutkan Mode Swarm, yang merupakan fitur baru pada tahun 2016 yang menyatukan bertahun-tahun untuk
‫memahami kebutuhan kontainer dan cara menjalankannya secara langsung. dalam produksi.
‫Jadi pada intinya, Swarm sebenarnya adalah solusi pengelompokan server yang menyatukan berbagai sistem operasi atau host,
‫atau node, atau
‫apa pun yang Anda ingin menyebutnya, ke dalam satu unit yang dapat dikelola yang kemudian Anda
‫dapat mengatur siklus hidup wadah Anda. Untuk lebih jelasnya, kita tidak benar-benar berbicara tentang Swarm, yang
‫akan saya sebut Swarm Classic, yang merupakan komponen tambahan untuk Docker sebelum 1. 12 keluar. Itu benar-benar sebuah wadah yang akan berjalan di
‫dalam Docker, yang benar-benar
‫hanya mengambil perintah jalankan Docker Anda dan mengulanginya ke beberapa server.
‫Itu memang memecahkan beberapa masalah, tetapi itu tidak benar-benar pada skala yang kami butuhkan untuk benar-benar menyelesaikan 80% kasus
‫untuk bagaimana Anda akan menjalankan wadah Anda.
‫Pada musim panas
‫2016, di dockercon 2016, sebenarnya Docker mengumumkan Swarm Kit, yang merupakan kumpulan perpustakaan atau tool kit yang terkait
‫dengan sejumlah fitur Swarm baru.
‫Kemudian mereka terjebak tepat di server Docker. Sepanjang kursus ini, Anda sebenarnya memiliki fitur yang
‫tersedia untuk Anda di CLI dan di server Anda.
‫Sekarang kita akhirnya bisa menyelami mereka.
‫Pada bulan Januari 2017, 1. 13 keluar, dan tentu saja karena Mode
‫Swarm baru di 2016, mereka akan terus membuatnya lebih baik di tahun-tahun mendatang.
‫Pada bulan Januari, mereka menambahkan fitur tambahan yang disebut Stacks and Secrets, serta bonus
‫lain yang akan kita bicarakan nanti. Penting untuk dicatat bahwa Swarm sebenarnya tidak diaktifkan di luar kotak.
‫Bahkan, di mesin Anda, Anda tidak bisa menggunakan perintah ini yang tercantum di sini sekarang. Itu sebenarnya akan memberi
‫Anda kesalahan karena Swarm harus diaktifkan.
‫Itu adalah salah satu tujuan desain adalah bahwa tidak ada kode Swarm yang
‫akan mempengaruhi daemon Docker yang ada, dan bahwa semua alat dan sistem di luar sana
‫yang sudah mengandalkan Docker, atau mungkin mereka memiliki orkestrasi sendiri di atas Docker, terus berfungsi dan
‫tidak
‫diganggu oleh Swarm sekarang menjadi bagian dari Docker. Beberapa konsep yang sangat mendasar sebelum kita mulai menyelam, adalah bahwa
‫kotak biru yang Anda lihat di atas adalah apa yang kita sebut Manajer Node, dan mereka benar-benar
‫memiliki database secara lokal yang dikenal sebagai Raft Database.
‫Ini menyimpan konfigurasi mereka dan memberi mereka semua informasi yang mereka butuhkan untuk menjadi otoritas di
‫dalam sebuah kawanan.
‫Jadi yang kita miliki di sini adalah tiga manajer berbeda yang semuanya telah ditambahkan
‫ke dalam kawanan, dan mereka semua menyimpan salinan basis data itu dan mengenkripsi lalu lintas mereka untuk memastikan integritas dan menjamin
‫kepercayaan bahwa mereka dapat mengelola kawanan ini dengan aman .
‫Di bawah ini di hijau, kita benar-benar memiliki catatan pekerja. Sekarang Anda dapat melihat dalam konsep Swarm, kami
‫sekarang memiliki manajer dan pekerja.
‫Masing-masing akan menjadi mesin virtual, atau host fisik, menjalankan beberapa distribusi Linux
‫atau server Windows.
‫Ini menunjukkan bagaimana mereka sebenarnya berkomunikasi tentang apa yang kita sebut Control Plane,
‫yaitu bagaimana pesanan dikirim di sekitar kerumunan, mengambil tindakan. Dalam tampilan yang sedikit lebih rumit, kami memiliki
‫database konsensus Raft yang saya sebutkan, yang direplikasi lagi di antara semua node.
‫Mereka mengeluarkan perintah kepada para pekerja.
‫Para manajer itu sendiri juga bisa menjadi pekerja. Tentu saja, Anda dapat menurunkan dan mempromosikan pekerja
‫dan manajer ke dua peran yang berbeda.
‫Ketika Anda memikirkan seorang manajer, biasanya pikirkan tentang seorang pekerja dengan izin untuk mengendalikan gerombolan itu.
‫Sekali lagi, satu-satunya persyaratan untuk masing-masing server ini adalah mereka menjalankan
‫Docker yang sama yang sudah Anda gunakan sekarang. Dengan konsep segerombolan ini, dan para manajer ini, kami sekarang memiliki konsep baru
‫tentang seperti apa wadah kami.
‫Jadi, dengan menjalankan perintah Docker, kami hanya bisa benar-benar menggunakan satu kontainer.
‫Itu hanya akan membuat wadah.
‫Itu selalu pada mesin apa pun yang Docki CLI bicarakan.
‫Itu biasanya mesin lokal Anda, atau mungkin server tempat mereka masuk. Perintah run Docker itu
‫tidak memiliki konsep seputar cara meningkatkan atau meningkatkan.
‫Jadi kami membutuhkan perintah baru untuk menghadapinya.
‫Di situlah perintah layanan Docker berasal. Dalam segerombolan, itu menggantikan perintah
‫jalankan Docker, dan memungkinkan kami untuk menambahkan fitur tambahan ke wadah kami ketika kami menjalankannya, seperti
‫replika untuk memberi tahu kami berapa banyak yang ingin dijalankan.
‫Itu dikenal sebagai tugas.
‫Sebuah layanan tunggal dapat memiliki banyak tugas, dan masing-masing tugas tersebut akan meluncurkan sebuah wadah.
‫Dalam contoh ini, kami telah membuat layanan menggunakan layanan buruh pelabuhan untuk memutar layanan Nginx menggunakan gambar Nginx seperti
‫yang telah kami lakukan beberapa kali sebelumnya.
‫Tapi kami sudah mengatakan bahwa kami ingin tiga replika.
‫Jadi itu akan menggunakan node manajer untuk memutuskan di mana di kawanan tempat itu Secara default, ia mencoba
‫menyebarkannya.
‫Setiap node akan mendapatkan salinannya sendiri dari wadah Nginx hingga tiga replika yang kami
‫katakan kami butuhkan.
‫Ini adalah pemahaman dasar dan cepat tentang cara kerja manajer dan apa yang mereka lakukan di latar belakang.
‫Semua fitur ini baru.
‫Ini bukan hanya sekedar mengambil perintah Anda dan menjalankannya di API seperti yang akan kami alami dengan
‫perintah jalankan Docker.
‫Sebenarnya ada API Swarm yang sama sekali baru di sini yang memiliki banyak layanan latar belakang, seperti penjadwal, dan
‫pengirim, dan pengalokasi dan orkestra, yang membantu membuat keputusan seputar apa yang harus dijalankan
‫pekerja pada saat tertentu.
‫Jadi pekerja terus-menerus melapor ke manajer dan meminta pekerjaan baru.
‫Para manajer terus-menerus membagikan pekerjaan baru dan mengevaluasi apa yang Anda katakan agar mereka lakukan terhadap apa
‫yang sebenarnya mereka lakukan.
‫Kemudian jika ada rekonsiliasi terjadi, mereka akan membuat perubahan itu, seperti mungkin Anda mengatakannya
‫untuk memunculkan tiga tugas duplikat lagi di layanan itu.
‫Jadi orkestra akan menyadari hal itu dan kemudian mengeluarkan perintah kepada para pekerja dan seterusnya.
‫Dengan Mode Kawanan ini, kami benar-benar mendapatkan seperangkat kemampuan penuh fitur di luar kotak yang memungkinkan kami untuk sudah menggunakan keterampilan Docker yang
‫ada yang kami miliki untuk menyebarkan wadah kami ke Internet dengan cara yang dapat diandalkan, dan
‫menyelesaikan banyak masalah. masalah yang akan kita miliki setelah kita
‫pergi produksi.