Wraz z aplikacjami „Revolution” kontenerów wzrosły znacznie więcej niż bycie tylko bazą danych i frontendą. Aplikacje są podzielone na różne mikrousługę i zwykle komunikują się ze sobą za pośrednictwem API REST (zwykle sformatowane ładunki JSON przez HTTP). Kontenery Docker są idealne do tego rodzaju architektury. Możesz spakować swój frontend „MicroService” w kontener Docker, baza danych przechodzi do innej i tak dalej. Każda usługa rozmawia z inną w stosunku do predefiniowanego interfejsu API REST, zamiast być monolitem napisanym jako pojedynczy fragment oprogramowania.
Jeśli chcesz zaimplementować nową funkcjonalność lub funkcję, e.G, silnik analityczny, możesz po prostu napisać do tego nową mikrousługę i zużywałby dane za pośrednictwem interfejsu API REST ujawnionego przez różne mikrousługi Twojej aplikacji internetowej. W miarę wzrostu funkcjonalności ta lista mikrousług będzie również rosła.
Nie chcesz wdrażać każdego pojedynczego kontenera, skonfigurować go, a następnie skonfigurować wszystko inne, aby z nim rozmawiać. To będzie żmudne z nawet trzema pojemnikami. Docker-Compose pozwala zautomatyzować wdrażanie wielu kontenerów.
Docker-Compose jest jednym z najprostszych narzędzi, które pomagają przekształcić abstrakcyjne ideę mikrousług w funkcjonalny zestaw kontenera Docker.
Systemy rozproszone
Teraz, gdy podzieliliśmy aplikację internetową na wiele kontenerów, nie jest sensowne, aby utrzymać je wszystkie na jednym serwerze (jeszcze gorsza na jednej maszynie wirtualnej!) W tym miejscu wchodzą w grę usługi takie jak Docker Swarm i Kubernetes.
Docker Swarm pozwala uruchomić wiele replików aplikacji na wielu serwerach. Jeśli mikrousługę jest napisana w sposób, w jaki może skalować „poziomo”, możesz użyć Docker Swarm, aby wdrożyć aplikację internetową w wielu centrach danych i wielu regionach. Zapewnia to odporność na niepowodzenie jednego lub więcej centrów danych lub linków sieciowych. Zwykle odbywa się to za pomocą podkomenda w Docker, to znaczy stosu dokera.
Stack Docker Podkomenda zachowuje się bardziej jak polecenie dokera-kompozycji, co może prowadzić do nieporozumień dla kogoś, kto korzysta z jednej z technologii.
Źródło zamieszania
Jeśli chodzi o wykorzystanie i przepływ pracy, obie technologie działają bardzo do siebie, a to powoduje zamieszanie. Sposób wdrażania aplikacji za pomocą Docker Swarm lub Docker-Compose jest bardzo podobny. Zdefiniujesz swoją aplikację w pliku YAML, ten plik będzie zawierał nazwę obrazu, konfigurację dla każdego obrazu, a także skalę (liczbę replik), że każda mikrousługę będzie wymagana do spełnienia wdrażania.
Różnica polega głównie na backendzie, w którym Docker-Compose wdraża kontener na jednym hoście Docker, Docker Swarm wdraża go na wielu węzłach. Mówiąc luźno, nadal może robić większość rzeczy, które może być kompozycją dokera.
Podobieństwa
Zarówno Docker Swarm, jak i Docker-Compose mają następujące podobieństwa:
Różnice
Kilka różnic między Docker Swarm a kompozycją Docker:
Sprawa użycia dla kompozycji dokera
Jak opisano powyżej, są to oba zupełnie inne narzędzia, a każde rozwiązuje zupełnie inny problem, więc nie jest tak, że jeden jest alternatywą dla drugiego. Jednak, aby dać nowym przybyszom poczucie tego, o czym mówię, oto przypadek użycia dla Docker Compose.
Załóżmy, że chcesz samodzielnie hostować blog WordPress na jednym serwerze. Konfigurowanie go lub utrzymanie, a nie coś, co chcesz zrobić, ręcznie, więc zamiast tego byłbyś zainstaluj Docker i Docker-Compose na VPS, utwórz prosty plik YAML określający wszystkie różne aspekty stosu WordPress, jak poniżej, :
Uwaga: Jeśli używasz poniższego do wdrożenia witryny WordPress, zmień wszystkie hasła na coś bezpiecznego. Jeszcze lepiej, użyj tajemnic Docker do przechowywania poufnych danych, takich jak hasła, zamiast mieć je w zwykłym pliku tekstowym.
Wersja: „3”
Usługi:
DB:
Zdjęcie: Mysql: 5.7
wolumeny:
- db_data:/var/lib/mysql
Uruchom ponownie: Zawsze
środowisko:
MySQL_ROOT_PASSWORD: Some WordPress
MySQL_DATABase: WordPress
Mysql_user: WordPress
Mysql_Password: WordPress
WordPress:
zależy od:
- db
Zdjęcie: WordPress: najnowszy
Porty:
- „8000: 80”
Uruchom ponownie: Zawsze
środowisko:
WordPress_db_host: DB: 3306
WordPress_db_user: WordPress
WordPress_DB_Password: WordPressPassword
WordPress_db_name: WordPress
wolumeny:
db_data:
Po utworzeniu pliku i zainstalowaniu Docker i Docker-Compose, wszystko, co musisz zrobić, to uruchomić:
$ Docker -Compose Up -d
A Twoja strona będzie działać. Jeśli jest aktualizacja, uruchom:
$ Docker-Compose Down
Następnie wyrzuć stare obrazy Docker i uruchom polecenie Docker -Compose -Up -D, a nowe obrazy zostaną automatycznie wciągane. Ponieważ masz trwałe dane przechowywane w tomie Docker, treść Twojej witryny nie zostanie utracona.
Kiedy korzystać z Docker Swarm
Podczas gdy Docker-Compose jest bardziej narzędziem automatyzacji, Docker Swarm jest przeznaczony do bardziej wymagających aplikacji. Aplikacje internetowe z setkami lub tysiącami użytkowników lub obciążeniem, które należy skalować równoległe. Firmy o dużej bazie użytkowników i rygorystyczne wymagania SLA chciałyby użyć systemu rozproszonego, takiego jak Docker Swarm. Jeśli Twoja aplikacja działa na wielu serwerach i wielu centrach danych, szanse na przestoje z powodu dotkniętego DC lub łącza sieciowego są znacznie zmniejszone.
To powiedziawszy, waham się polecić Docker Swarm w przypadku przypadków użycia produkcji, ponieważ konkurencyjne technologie, takie jak Kubernetes, są prawdopodobnie bardziej odpowiednie dla tego zadania. Kubernetes jest obsługiwany natywnie u wielu dostawców chmury i działa całkiem dobrze z kontenerami Docker, więc nie musisz nawet odbudowywać aplikacji, aby skorzystać z Kubernetes.
Mam nadzieję, że to wędrowanie na Docker i jego projektach satelitarnych było pouczające i jesteś bardziej przygotowany na ekosystem Docker.