Docker Compose vs Docker Swarm

Docker Compose Vs Docker Swarm



Dengan wadah, aplikasi 'revolusi' telah berkembang lebih dari sekadar basis data dan antarmuka. Aplikasi dibagi menjadi berbagai layanan mikro dan biasanya berkomunikasi satu sama lain melalui REST API (biasanya muatan berformat JSON melalui HTTP). Kontainer Docker sangat ideal untuk jenis arsitektur ini. Anda dapat mengemas 'layanan mikro' frontend Anda ke dalam wadah Docker, database masuk ke yang lain, dan seterusnya dan seterusnya. Setiap layanan berbicara dengan yang lain melalui REST API yang telah ditentukan alih-alih menjadi monolit yang ditulis sebagai satu bagian dari perangkat lunak.

Jika Anda perlu menerapkan fungsi atau fitur baru, misalnya mesin analitik, Anda cukup menulis layanan mikro baru untuk itu dan itu akan menggunakan data melalui REST API yang diekspos oleh berbagai layanan mikro aplikasi web Anda. Dan seiring dengan bertambahnya fungsionalitas Anda dari waktu ke waktu, daftar layanan mikro ini juga akan bertambah.







Anda tidak ingin men-deploy masing-masing container, mengonfigurasinya, lalu mengonfigurasi semua hal lain untuk berbicara dengannya juga. Itu akan membosankan bahkan dengan tiga kontainer. Docker-Compose memungkinkan Anda mengotomatiskan penerapan beberapa kontainer.



Docker-Compose adalah salah satu alat paling sederhana yang membantu Anda mengubah ide abstrak layanan mikro menjadi seperangkat wadah Docker yang fungsional.



Sistem Terdistribusi

Sekarang kami telah membagi aplikasi web menjadi beberapa wadah, tidak masuk akal untuk menyimpan semuanya di satu server (lebih buruk lagi di satu mesin virtual!) Di situlah layanan seperti Docker Swarm dan Kubernetes ikut bermain.





Docker Swarm memungkinkan Anda untuk menjalankan beberapa replika aplikasi Anda di beberapa server. Jika layanan mikro Anda ditulis sedemikian rupa sehingga dapat diskalakan secara 'horizontal', maka Anda dapat menggunakan Docker Swarm untuk menerapkan aplikasi web Anda di beberapa pusat data dan beberapa wilayah. Ini menawarkan ketahanan terhadap kegagalan satu atau lebih pusat data atau tautan jaringan. Ini biasanya dilakukan dengan menggunakan subperintah di Docker, yaitu, Docker Stack.

NS Tumpukan buruh pelabuhan subcommand berperilaku lebih seperti perintah Docker-Compose dan itu dapat menyebabkan kesalahpahaman bagi seseorang yang menggunakan salah satu teknologi.



Sumber Kebingungan

Dalam hal penggunaan dan alur kerja, kedua teknologi ini bekerja sangat mirip satu sama lain, dan ini menyebabkan kebingungan. Cara Anda menerapkan aplikasi menggunakan Docker Swarm atau Docker-Compose sangat mirip. Anda mendefinisikan aplikasi Anda dalam file YAML, file ini akan berisi nama gambar, konfigurasi untuk setiap gambar dan juga skala (jumlah replika) yang harus dipenuhi oleh setiap layanan mikro dalam penerapan.

Perbedaannya sebagian besar terletak pada backend, di mana docker-compose menyebarkan wadah pada satu host Docker, Docker Swarm menyebarkannya di beberapa node. Secara longgar, ia masih dapat melakukan sebagian besar hal yang dapat dilakukan oleh docker-compose tetapi menskalakannya di beberapa host Docker.

Kesamaan

Baik Docker Swarm dan Docker-Compose memiliki kesamaan sebagai berikut:

  1. Keduanya mengambil definisi berformat YAML dari tumpukan aplikasi Anda.
  2. Keduanya dimaksudkan untuk menangani aplikasi multi-kontainer (layanan mikro)
  3. Keduanya memiliki parameter skala yang memungkinkan Anda menjalankan beberapa wadah dari gambar yang sama yang memungkinkan layanan mikro Anda untuk menskalakan secara horizontal.
  4. Keduanya dikelola oleh perusahaan yang sama, yaitu Docker, Inc.

Perbedaan

Beberapa perbedaan antara Docker Swarm dan Docker-Compose:

  1. Docker Swarm digunakan untuk menskalakan aplikasi web Anda di satu atau beberapa server. Sedangkan Docker-compose hanya akan menjalankan aplikasi web Anda pada satu host Docker.
  2. Menskalakan aplikasi web Anda Docker Swarm menawarkan ketersediaan tinggi yang serius dan toleransi kesalahan. Menskalakan aplikasi web Anda menggunakan Docker-Compose pada satu host hanya berguna untuk pengujian dan pengembangan.
  3. Docker Swarm dan sub-perintah terkait seperti Docker Swarm dan Docker Stack dibangun ke dalam Docker CLI itu sendiri. Mereka semua adalah bagian dari biner Docker yang Anda panggil melalui terminal Anda. Docker-Compose adalah biner mandiri.

Kasus Penggunaan untuk Docker-Compose

Seperti dijelaskan di atas, keduanya adalah alat yang sama sekali berbeda dan masing-masing memecahkan masalah yang sama sekali berbeda sehingga tidak seperti yang satu merupakan alternatif bagi yang lain. Namun, untuk memberi pengertian kepada pendatang baru tentang apa yang saya bicarakan, berikut adalah kasus penggunaan untuk Docker Compose.

Misalkan Anda ingin menghosting sendiri Blog WordPress di satu server. Menyiapkan atau memeliharanya bukan sesuatu yang ingin Anda lakukan, secara manual, jadi yang akan Anda lakukan adalah menginstal Docker dan Docker-compose di VPS Anda, buat file YAML sederhana yang mendefinisikan semua berbagai aspek tumpukan WordPress Anda, seperti di bawah ini, :

Catatan: Jika Anda menggunakan di bawah ini untuk menyebarkan situs WordPress, harap ubah semua kata sandi menjadi sesuatu yang aman. Lebih baik lagi, gunakan Rahasia Docker untuk menyimpan data sensitif seperti kata sandi, daripada menyimpannya dalam file teks biasa.

Versi: kapan:'3'

jasa:
db:
gambar: mysql:5.7
volume:
- db_data:/di mana/lib/mysql
mulai ulang: selalu
lingkungan:
MYSQL_ROOT_PASSWORD: beberapa wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
tergantung pada:
- db
gambar: wordpress: terbaru
port:
-'8000: 80'
mulai ulang: selalu
lingkungan:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpressPassword
WORDPRESS_DB_NAME: wordpress
volume:
db_data:{}

Setelah file dibuat dan keduanya Docker dan Docker-compose diinstal, yang harus Anda lakukan adalah menjalankan:

$docker-compose up-D

Dan situs Anda akan aktif dan berjalan. Jika ada pembaruan, jalankan:

$docker-compose down

Kemudian buang gambar Docker lama dan jalankan perintah docker-compose up -d dan gambar baru akan secara otomatis ditarik. Karena Anda memiliki data persisten yang disimpan dalam Volume Docker, konten situs web Anda tidak akan hilang.

Kapan menggunakan Docker Swarm

Sementara Docker-compose lebih merupakan alat otomatisasi, Docker Swarm dimaksudkan untuk aplikasi yang lebih menuntut. Aplikasi web dengan ratusan atau ribuan pengguna atau beban kerja yang perlu diskalakan secara paralel. Perusahaan dengan basis pengguna yang besar dan persyaratan SLA yang ketat ingin menggunakan sistem terdistribusi seperti Docker Swarm. Jika aplikasi Anda berjalan di beberapa server dan beberapa pusat data, kemungkinan waktu henti karena DC atau tautan jaringan yang terpengaruh akan berkurang secara signifikan.

Meskipun demikian, saya ragu untuk merekomendasikan Docker Swarm untuk kasus penggunaan produksi karena teknologi pesaing seperti Kubernetes bisa dibilang lebih cocok untuk tugas ini. Kubernetes didukung secara native di banyak penyedia cloud dan bekerja cukup baik dengan Docker Containers sehingga Anda bahkan tidak perlu membangun kembali aplikasi Anda untuk memanfaatkan Kubernetes.

Kesimpulan

Saya harap ocehan tentang Docker dan proyek satelitnya ini informatif dan Anda lebih siap untuk ekosistem buruh pelabuhan.