Docker Compose vs Docker Swarm

Docker Compose Vs Docker Swarm



Kapsayıcı 'devrim' ile uygulamalar, yalnızca bir veritabanı ve bir ön uç olmaktan çok daha fazla büyüdü. Uygulamalar çeşitli mikro hizmetlere bölünür ve genellikle birbirleriyle bir REST API (tipik olarak HTTP üzerinden JSON formatlı yükler) aracılığıyla iletişim kurarlar. Docker kapsayıcıları bu tür mimari için idealdir. Ön uç 'mikro hizmetinizi' bir Docker kapsayıcısında paketleyebilirsiniz, veritabanı başka bir kapsayıcıya gider ve bu böyle devam eder. Her hizmet, tek bir yazılım parçası olarak yazılmış monolit olmak yerine, önceden tanımlanmış bir REST API üzerinden bir başkasıyla konuşur.

Yeni bir işlevsellik veya özellik uygulamanız gerekiyorsa, örneğin bir analiz motoru, bunun için yeni bir mikro hizmet yazabilirsiniz ve web uygulamanızın çeşitli mikro hizmetleri tarafından açığa çıkarılan REST API aracılığıyla veri tüketecektir. Ve işlevselliğiniz zamanla büyüdükçe, bu mikro hizmetler listesi de onunla birlikte büyüyecektir.







Her bir kapsayıcıyı dağıtmak, yapılandırmak ve ardından onunla konuşmak için diğer her şeyi yapılandırmak istemezsiniz. Bu, üç konteynırla bile sıkıcı olacaktır. Docker-Compose, birden çok kapsayıcının dağıtımını otomatikleştirmenize olanak tanır.



Docker-Compose, soyut mikro hizmet fikrini işlevsel bir Docker kapsayıcı kümesine dönüştürmenize yardımcı olan en basit araçlardan biridir.



Dağıtık Sistemler

Web uygulamasını birden çok kapsayıcıya ayırdığımıza göre, hepsini tek bir sunucuda tutmak pek mantıklı değil (daha da kötüsü tek bir sanal makinede!), Docker Swarm ve Kubernetes gibi hizmetlerin devreye girdiği yer burasıdır.





Docker Swarm, uygulamanızın birden çok kopyasını birden çok sunucuda çalıştırmanıza olanak tanır. Mikro hizmetiniz 'yatay olarak' ölçeklenebilecek şekilde yazılmışsa, web uygulamanızı birden çok veri merkezine ve birden çok bölgeye dağıtmak için Docker Swarm'ı kullanabilirsiniz. Bu, bir veya daha fazla veri merkezinin veya ağ bağlantısının arızalanmasına karşı esneklik sağlar. Bu genellikle Docker'da bir alt komut kullanılarak yapılır, yani Docker Stack.

NS liman işçisi yığını alt komut daha çok Docker-Compose komutu gibi davranır ve bu, teknolojilerden herhangi birini kullanan birinin yanlış anlamalarına yol açabilir.



Karışıklık Kaynağı

Kullanım ve iş akışı açısından her iki teknoloji de birbirine çok benziyor ve bu da kafa karışıklığına neden oluyor. Docker Swarm veya Docker-Compose kullanarak uygulamanızı dağıtma şekliniz çok benzer. Uygulamanızı bir YAML dosyasında tanımlarsınız, bu dosya görüntü adını, her görüntünün yapılandırmasını ve ayrıca dağıtımda her bir mikro hizmetin karşılaması gereken ölçeği (kopya sayısı) içerir.

Fark çoğunlukla, docker-compose'ın kapsayıcıyı tek bir Docker ana bilgisayarına dağıttığı arka uçta yatmaktadır, Docker Swarm bunu birden çok düğümde dağıtmaktadır. Açıkça söylemek gerekirse, docker-compose'un yapabileceği çoğu şeyi hala yapabilir, ancak bunu birden çok Docker ana bilgisayarında ölçeklendirir.

benzerlikler

Hem Docker Swarm hem de Docker-Compose aşağıdaki benzerliklere sahiptir:

  1. Her ikisi de uygulama yığınınızın YAML biçimli tanımlarını alır.
  2. Her ikisi de çok kapsayıcılı uygulamalarla (mikro hizmetler) ilgilenmek içindir.
  3. Her ikisinin de, aynı görüntünün birden çok kapsayıcısını çalıştırmanıza olanak tanıyan ve mikro hizmetinizin yatay olarak ölçeklenmesine olanak tanıyan bir ölçek parametresi vardır.
  4. Her ikisi de aynı şirket, yani Docker, Inc. tarafından korunur.

farklılıklar

Docker Swarm ve Docker-Compose arasındaki birkaç fark:

  1. Docker Swarm, web uygulamanızı bir veya daha fazla sunucu arasında ölçeklendirmek için kullanılır. Docker-compose, web uygulamanızı tek bir Docker ana bilgisayarında çalıştıracaktır.
  2. Web uygulamanızı ölçeklendirme Docker Swarm, ciddi düzeyde yüksek kullanılabilirlik ve hata toleransı sunar. Web uygulamanızı tek bir ana bilgisayarda Docker-Compose kullanarak ölçeklendirmek yalnızca test ve geliştirme için kullanışlıdır.
  3. Docker Swarm ve Docker Swarm ve Docker Stack gibi ilgili alt komutlar, Docker CLI'nin kendisinde yerleşiktir. Hepsi, terminaliniz aracılığıyla aradığınız Docker ikili dosyasının bir parçasıdır. Docker-Compose, kendi başına bağımsız bir ikili dosyadır.

Docker-Compose İçin Bir Kullanım Örneği

Yukarıda açıklandığı gibi, ikisi de tamamen farklı araçlardır ve her biri tamamen farklı bir sorunu çözer, bu nedenle biri diğerinin alternatifi gibi değildir. Ancak, yeni gelenlere neden bahsettiğim hakkında bir fikir vermek için, işte Docker Compose için bir kullanım örneği.

Tek bir sunucuda bir WordPress Blogunu kendi kendine barındırmak istediğinizi varsayalım. Manuel olarak yapmak istediğiniz bir şeyi kurmak veya sürdürmek değil, bu nedenle yapacağınız şey, VPS'nize Docker ve Docker-compose yüklemek, aşağıdaki gibi WordPress yığınınızın tüm çeşitli yönlerini tanımlayan basit bir YAML dosyası oluşturmak, :

Not: Bir WordPress sitesini dağıtmak için aşağıdakileri kullanıyorsanız, lütfen tüm parolaları güvenli bir parolayla değiştirin. Daha da iyisi, parolalar gibi hassas verileri düz metin dosyasında tutmak yerine depolamak için Docker Sırları'nı kullanın.

sürüm:'3'

Hizmetler:
db:
resim: mysql:5.7
birimler:
- db_data:/nerede/kütüphane/mysql
yeniden başlat: her zaman
Çevre:
MYSQL_ROOT_PASSWORD: bazıwordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
bağımlı_on:
- db
resim: wordpress: en son
bağlantı noktaları:
-'8000: 80'
yeniden başlat: her zaman
Çevre:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpressPassword
WORDPRESS_DB_NAME: wordpress
birimler:
db_data:{}

Dosya oluşturulduktan ve hem Docker hem de Docker-compose yüklendikten sonra tek yapmanız gereken çalıştırmaktır:

$liman işçisi-oluşturmak-NS

Ve siteniz çalışır durumda olacaktır. Bir güncelleme varsa, çalıştırın:

$docker-compose down

Ardından eski Docker görüntülerini atın ve docker-compose up -d komutunu çalıştırın, yeni görüntüler otomatik olarak içeri alınır. Bir Docker Biriminde depolanan kalıcı verilere sahip olduğunuz için web sitenizin içeriği kaybolmaz.

Docker Swarm ne zaman kullanılır?

Docker-compose daha çok bir otomasyon aracı olsa da, Docker Swarm daha zorlu uygulamalar içindir. Paralel olarak ölçeklendirilmesi gereken yüzlerce veya binlerce kullanıcıya veya iş yüküne sahip web uygulamaları. Geniş kullanıcı tabanına ve katı SLA gereksinimlerine sahip şirketler, Docker Swarm gibi dağıtılmış bir sistem kullanmak isteyecektir. Uygulamanız birden çok sunucuda ve birden çok veri merkezinde çalışıyorsa, etkilenen bir DC veya ağ bağlantısı nedeniyle kesinti süresi olasılığı önemli ölçüde azalır.

Bununla birlikte, Kubernetes gibi rakip teknolojiler bu görev için tartışmasız daha uygun olduğundan, üretim kullanım durumları için Docker Swarm'ı önermekten çekiniyorum. Kubernetes, birçok bulut sağlayıcısında yerel olarak desteklenir ve Docker Containers ile oldukça iyi çalışır, böylece Kubernetes'ten yararlanmak için uygulamanızı yeniden oluşturmanız bile gerekmez.

Çözüm

Umarım Docker ve uydu projeleri hakkındaki bu saçma sapan konuşma bilgilendirici olmuştur ve liman işçisi ekosistemi için daha hazırlıklısınızdır.