Docker Compose срещу Docker Swarm

Docker Compose Vs Docker Swarm



С революцията на контейнерите приложенията се разраснаха много повече от това да бъдат просто база данни и интерфейс. Приложенията са разделени на различни микроуслуги и те обикновено комуникират помежду си чрез REST API (обикновено JSON форматиран полезен товар през HTTP). Docker контейнерите са идеални за този вид архитектура. Можете да опаковате „микросервиза“ на вашия интерфейс в контейнер на Docker, базата данни отива в друг и така нататък и така нататък. Всяка услуга разговаря с друга по предварително зададен REST API, вместо да бъде монолит, написан като единична част от софтуера.

Ако трябва да внедрите нова функционалност или функция, например аналитичен механизъм, можете просто да напишете нова микрослужба за това и тя ще консумира данни чрез REST API, изложен от различните микроуслуги на вашето уеб приложение. И тъй като вашата функционалност нараства с течение на времето, този списък с микроуслуги също ще нараства заедно с него.







Не искате да разгръщате всеки отделен контейнер, да го конфигурирате и след това да конфигурирате всичко останало, за да говорите и с него. Това ще стане досадно дори с три контейнера. Docker-Compose ви позволява да автоматизирате разполагането на множество контейнери.



Docker-Compose е един от най-простите инструменти, който ви помага да трансформирате абстрактната идея за микроуслуги във функционален набор от контейнер на Docker.



Разпределени системи

Сега, когато разделихме уеб приложението на множество контейнери, няма смисъл да ги държим на един сървър (още по -лошо на една виртуална машина!), Където влизат в действие услуги като Docker Swarm и Kubernetes.





Docker Swarm ви позволява да стартирате множество реплики на приложението си на множество сървъри. Ако вашата микрослужба е написана по начин, който може да мащабира „хоризонтално“, тогава можете да използвате Docker Swarm, за да разгърнете уеб приложението си в множество центрове за данни и множество региони. Това предлага устойчивост срещу повреда на един или повече центрове за данни или мрежови връзки. Това обикновено се прави с подкоманда в Docker, тоест Docker Stack.

The Docker Stack подкомандата се държи много повече като командата Docker-Compose и това може да доведе до погрешни схващания за някой, който използва някоя от технологиите.



Източник на объркване

По отношение на използването и работния процес и двете технологии работят много сходни една с друга и това предизвиква объркване. Начинът, по който разгръщате приложението си чрез Docker Swarm или Docker-Compose, е много подобен. Вие дефинирате приложението си в YAML файл, този файл ще съдържа името на изображението, конфигурацията за всяко изображение, както и мащаба (броя на репликите), който всяка микрослужба ще трябва да изпълни при внедряването.

Разликата се крие най-вече в бекенда, където docker-compose разполага контейнер на един хост на Docker, Docker Swarm го разгръща в множество възли. Свободно казано, той все още може да прави повечето неща, които docker-compose може, но го мащабира в множество хостове на Docker.

Прилики

И Docker Swarm, и Docker-Compose имат следните прилики:

  1. И двамата приемат YAML форматирани дефиниции на вашия стек с приложения.
  2. И двете са предназначени за работа с многоконтейнерни приложения (микроуслуги)
  3. И двамата имат параметър за мащабиране, който ви позволява да стартирате множество контейнери с едно и също изображение, което позволява на вашата микрослужба да се мащабира хоризонтално.
  4. И двамата се поддържат от една и съща компания, т.е. Docker, Inc.

Разлики

Няколко разлики между Docker Swarm и Docker-Compose:

  1. Docker Swarm се използва за мащабиране на вашето уеб приложение на един или повече сървъри. Когато Docker-compose просто ще стартира вашето уеб приложение на един хост на Docker.
  2. Мащабирането на вашето уеб приложение Docker Swarm предлага сериозна висока наличност и устойчивост на грешки. Мащабирането на вашето уеб приложение с помощта на Docker-Compose на един хост е полезно само за тестване и разработка.
  3. Docker Swarm и свързаните с него подкоманди като Docker Swarm и Docker Stack са вградени в самия Docker CLI. Всички те са част от двоичния файл на Docker, който се обаждате чрез терминала си. Docker-Compose е самостоятелен двоичен файл сам по себе си.

Пример за използване на Docker-Compose

Както е описано по -горе, и двата са напълно различни инструменти и всеки решава напълно различен проблем, така че не е като единият да е алтернатива за другия. Въпреки това, за да дадем на новодошлите представа за какво говоря, ето един пример за използване на Docker Compose.

Да предположим, че искате сами да хоствате WordPress блог на един сървър. Настройването или поддържането му не е нещо, което искате да направите ръчно, така че това, което бихте направили вместо това, е да инсталирате Docker и Docker-compose на вашия VPS, да създадете прост YAML файл, дефиниращ всички различни аспекти на вашия WordPress стек, както по-долу, :

Забележка: Ако използвате по -долу за разполагане на WordPress сайт, моля, променете всички пароли на нещо сигурно. Още по -добре, използвайте Docker Secrets, за да съхранявате чувствителни данни като пароли, вместо да ги имате в обикновен текстов файл.

версия:'3'

услуги:
db:
изображение: mysql:5.7
обеми:
- db_data:/където/lib/mysql
рестартиране: винаги
заобикаляща среда:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
зависи от:
- db
изображение: wordpress: най -ново
пристанища:
-'8000: 80'
рестартиране: винаги
заобикаляща среда:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpressPassword
WORDPRESS_DB_NAME: wordpress
обеми:
db_data:{}

След като файлът е създаден и Docker и Docker-compose са инсталирани, всичко, което трябва да направите, е да стартирате:

$docker-compose up

И вашият сайт ще работи и работи. Ако има актуализация, стартирайте:

$docker-compose down

След това изхвърлете старите изображения на Docker и изпълнете командата docker -compose up -d и новите изображения автоматично ще бъдат изтеглени. Тъй като имате постоянни данни, съхранявани в том на Docker, съдържанието на уебсайта ви няма да бъде загубено.

Кога да използвате Docker Swarm

Докато Docker-compose е по-скоро инструмент за автоматизация, Docker Swarm е предназначен за по-взискателни приложения. Уеб приложения със стотици или хиляди потребители или натоварване, които трябва да бъдат мащабирани паралелно. Компании с голяма потребителска база и строги изисквания за SLA биха искали да използват разпределена система като Docker Swarm. Ако приложението ви работи на множество сървъри и множество центрове за данни, тогава шансовете за престой поради засегната DC или мрежова връзка се намаляват значително.

Въпреки това се колебая да препоръчам Docker Swarm за производствени случаи, тъй като конкурентните технологии като Kubernetes вероятно са по -подходящи за тази задача. Kubernetes се поддържа първоначално от много доставчици на облаци и работи доста добре с Docker Containers, така че дори не е нужно да възстановявате приложението си, за да се възползвате от Kubernetes.

Заключение

Надявам се, че това разбъркване на Docker и неговите сателитни проекти е било информативно и сте по -подготвени за екосистемата на docker.