{"id":96793,"date":"2022-11-29T16:07:20","date_gmt":"2022-11-29T15:07:20","guid":{"rendered":"https:\/\/fotc.com\/?p=96793"},"modified":"2023-11-27T10:29:28","modified_gmt":"2023-11-27T09:29:28","slug":"docker-swarm-co-to-jest","status":"publish","type":"post","link":"https:\/\/fotc.com\/pl\/blog\/docker-swarm-co-to-jest\/","title":{"rendered":"Docker Swarm \u2013 co to jest?"},"content":{"rendered":"\n
Czy zdarzy\u0142o Ci si\u0119, tworz\u0105c aplikacj\u0119 przechodzi\u0107 przez piek\u0142o b\u0142\u0119d\u00f3w, kt\u00f3re pojawi\u0142y si\u0119 dopiero po wdro\u017ceniu na serwerze, i musia\u0142e\u015b powstrzymywa\u0107 si\u0119 przed wypowiedzeniem magicznego has\u0142a \u201ea u mnie dzia\u0142a\u0142o\u201d? Czy te\u017c wdra\u017caj\u0105c poprawk\u0119, musia\u0142e\u015b na chwil\u0119 wy\u0142\u0105czy\u0107 us\u0142ug\u0119, co niezbyt spodoba\u0142o si\u0119 u\u017cytkownikom? By\u0107 mo\u017ce kilka os\u00f3b w firmie poprosi\u0142o Ci\u0119 o instalacje niekompatybilnych ze sob\u0105 aplikacji na serwerze, kt\u00f3re nagle zacz\u0119\u0142y si\u0119 kanibalizowa\u0107? Szukaj\u0105c rozwi\u0105zania mog\u0142e\u015b skorzysta\u0107 z maszyn wirtualnych, odseparowuj\u0105cych poszczeg\u00f3lne aplikacje od siebie, ale by\u0107 mo\u017ce wybra\u0142e\u015b inn\u0105 opcj\u0119 – kontenery. To im przyjrzymy si\u0119 dok\u0142adniej.<\/p>\n\n\n\n
Kontener to inaczej wirtualny zasobnik, dzi\u0119ki kt\u00f3remu mo\u017cemy w prosty i szybki spos\u00f3b wdra\u017ca\u0107, przenosi\u0107 i powiela\u0107 aplikacje w r\u00f3\u017cnych \u015brodowiskach. Innymi s\u0142owy, jest to paczka z oprogramowaniem. Uruchamianie i tworzenie kontener\u00f3w sta\u0142o si\u0119 wygodne dzi\u0119ki powstaniu platformy uruchomieniowej, jak\u0105 jest Docker.<\/p>\n\n\n\n
Jej popularno\u015b\u0107 jest na tyle du\u017ca, \u017ce niekt\u00f3rzy u\u017cywaj\u0105 terminu \u201eDocker\u201d zamiennie z konteneryzacj\u0105, co nie jest do ko\u0144ca poprawne. Konteneryzacja<\/a> jest poj\u0119ciem o wiele szerszym, znanym jeszcze przed Dockerem, ale skoro przyj\u0119\u0142o si\u0119, na cz\u0119\u015b\u0107 but\u00f3w sportowych m\u00f3wi\u0107 \u201eadidasy\u201d to mo\u017cna wybaczy\u0107 ten brak programistycznego puryzmu w nazewnictwie.<\/p>\n\n\n\n Faktem jest, \u017ce Docker przys\u0142u\u017cy\u0142 si\u0119, rozpowszechniaj\u0105c konteneryzacj\u0119. Dzi\u0119ki niemu mo\u017cemy pobra\u0107 obraz kontenera z rejestru<\/a>, jak r\u00f3wnie\u017c samodzielnie tworzy\u0107 kontenery, kt\u00f3re, co wa\u017cne, s\u0105 odizolowane od siebie, a wi\u0119c zmiana jednego, nie wp\u0142ywa na zmian\u0119 drugiego i kolejnego kontenera. Je\u017celi nie mamy potrzeby instalowania r\u00f3\u017cnych system\u00f3w operacyjnych to skorzystanie z Dockera mo\u017ce by\u0107 lepszym rozwi\u0105zaniem ni\u017c korzystanie z maszyn wirtualnych. Zyskamy mniejsze u\u017cycie procesora i pami\u0119ci dyskowej.<\/p>\n\n\n\n Jednak sam Docker, zainstalowany na pojedynczym urz\u0105dzeniu nie sprawdzi si\u0119, kiedy kluczem jest zapewnienie nieprzerwanej dost\u0119pno\u015bci. W przypadku awarii urz\u0105dzenia, a nawet podczas aktualizacji kontenera, nie b\u0119dzie on dzia\u0142a\u0107. Kolejnym wyzwaniem jest kwestia skalowalno\u015bci. Aby r\u00f3wnowa\u017cy\u0107 obci\u0105\u017cenia, konieczne jest uruchamianie repliki kontenera na drugim lub kolejnym urz\u0105dzeniu. Tutaj wkraczamy w rewir Docker Swarm.<\/p>\n\n\n\n Docker Swarm pe\u0142ni rol\u0119 klastra konteneryzacji, kt\u00f3ry pozwala u\u017cytkownikom na tworzenie i zarz\u0105dzanie rojem (swarm) w\u0119z\u0142\u00f3w i kontener\u00f3w. Ka\u017cdy z w\u0119z\u0142\u00f3w w ramach Docker Swarm, oddzia\u0142uje na inne przy pomocy API Dockera. Jego zalet\u0105 jest m.in. mo\u017cliwo\u015b\u0107 rolowanych aktualizacji. Kiedy potrzebujemy zaktualizowa\u0107 jeden z kontener\u00f3w lub gdy przestanie on dzia\u0142a\u0107, Docker Swarm pozwoli uruchomi\u0107 go w innym w\u0119\u017ale, a w tym czasie dokona\u0107 aktualizacji lub naprawy. W mi\u0119dzyczasie mamy zapewniony pe\u0142ny backup oraz redundancj\u0119, a ca\u0142o\u015b\u0107 dzia\u0142a\u0144 przeprowadzimy poprzez CLI (command-line interface)<\/p>\n\n\n\n Docker Swarm jest w ca\u0142o\u015bci zdecentralizowany, co znacznie u\u0142atwia dost\u0119p dla r\u00f3\u017cnych zespo\u0142\u00f3w zarz\u0105dzaj\u0105cych \u015brodowiskiem. Sama komunikacja zapewnia wysoki poziom bezpiecze\u0144stwa, a wbudowane automatyczne r\u00f3wnowa\u017cenie obci\u0105\u017cenia (auto load balancing), sprawia, \u017ce \u0142atwo skalowa\u0107 infrastruktur\u0119, jak r\u00f3wnie\u017c stosowa\u0107 rollback, aby bezproblemowo wr\u00f3ci\u0107 do wcze\u015bniejszej wersji \u015brodowiska.<\/p>\n\n\n\n Kontenery s\u0105 wypychane i kontrolowane poprzez us\u0142ugi, kt\u00f3re mo\u017cna zdefiniowa\u0107 jako grup\u0119 kontener\u00f3w zawieraj\u0105cych ten sam obraz. Us\u0142ugi pozwalaj\u0105 na skalowanie, a do ich wdro\u017cenia, potrzebny jest minimum jeden w\u0119ze\u0142. W Docker Swarm mamy do dyspozycji dwa rodzaje w\u0119z\u0142\u00f3w: manager, obs\u0142uguj\u0105cy zadania zarz\u0105dzania klastrami, oraz worker, kt\u00f3ry te zadania odbiera i wykonuje.<\/p>\n\n\n\n W\u0119ze\u0142 manager zna status wszystkich w\u0119z\u0142\u00f3w worker, z kt\u00f3rymi prowadzi dwustronn\u0105 komunikacj\u0119. W\u0119ze\u0142 worker posiada agenta, raportuj\u0105cego do mened\u017cera status obs\u0142ugiwanego zadania, kt\u00f3re wcze\u015bniej zosta\u0142o zaakceptowane z poziomu tego w\u0119z\u0142a. <\/p>\n\n\n\n Dost\u0119p do us\u0142ug Docker Swarm, jak r\u00f3wnie\u017c ich wdra\u017canie mo\u017ce nast\u0105pi\u0107 za po\u015brednictwem dowolnego w\u0119z\u0142a w tym samym klastrze. W tym przypadku, konieczne jest wskazanie obrazu kontenera, kt\u00f3rego chcemy u\u017cy\u0107. Do wyboru s\u0105 zar\u00f3wno te dost\u0119pne w og\u00f3lnodost\u0119pnym rejestrze (Docker Hub), jak i nasze prywatne.<\/p>\n\n\n\n Us\u0142ugi mog\u0105 by\u0107 zar\u00f3wno globalne, w\u00f3wczas us\u0142uga mo\u017ce by\u0107 obs\u0142ugiwana przez ca\u0142y czas na ka\u017cdym z w\u0119z\u0142\u00f3w, jak r\u00f3wnie\u017c replikowane jedynie na wybranych w\u0119z\u0142ach worker.<\/p>\n\n\n\n Zag\u0142\u0119biaj\u0105c si\u0119 w terminologi\u0119 Dockera mo\u017cna odnie\u015b\u0107 wra\u017cenie, \u017ce us\u0142ugi to tak naprawd\u0119 zadania, do wykonania, ale jest subtelna r\u00f3\u017cnica. Us\u0142uga jest tutaj opisem zadania, podczas gdy zadanie to jej wykonanie. U\u017cytkownik tworzy us\u0142ug\u0119, kt\u00f3ra inicjuje zadanie, a samo zadanie mo\u017ce by\u0107 przypisane tylko do jednego w\u0119z\u0142a.<\/p>\n\n\n\n Mo\u017cliwe jest r\u00f3wnie\u017c posiadanie wielu mened\u017cer\u00f3w w ramach Docker Swarm, jednak w tym przypadku konieczne jest okre\u015blenie, kt\u00f3ry z nich jest nadrz\u0119dny w stosunku do pozosta\u0142ych.<\/p>\n\n\n\n Uruchomienie Docker Swarm przy pomocy Dockera jest bardzo proste i sprowadza si\u0119 do komendy:<\/p>\n\n\n Docker Swarm nie jest jedynym narz\u0119dziem do orkiestracji. Do\u015b\u0107 popularnym rozwi\u0105zaniem jest Kubernetes<\/a> oferowany przez Google. Jaki\u015b czas temu por\u00f3wnywali\u015bmy oba systemy na naszym blogu<\/a>. Kubernetes jest platform\u0105 open source, wspieraj\u0105c\u0105 automatyzacj\u0119 wdro\u017ce\u0144, skalowanie aplikacji i zarz\u0105dzanie kontenerami.<\/p>\n\n\n FOTC to wsparcie 24\/7, zni\u017cki na us\u0142ugi GCP<\/p><\/div>\r\n Podstawow\u0105 r\u00f3\u017cnic\u0105 mi\u0119dzy Docker Swarm a Kubernetes jest z\u0142o\u017cono\u015b\u0107 tego drugiego. Sprawia to, \u017ce o ile Docker Swarm jest prostszy w obs\u0142udze, to w przypadku bardziej z\u0142o\u017conych aplikacji, du\u017ce lepiej sprawdzi si\u0119 Kubernetes. Z\u0142o\u017cono\u015b\u0107 jest odczuwalna ju\u017c na etapie instalacji, kt\u00f3ra w przypadku Kubernetes wymaga od nas wi\u0119cej czasu.<\/p>\n\n\n\n Czytaj te\u017c: Kubernetes vs. Docker Swarm<\/a> \u2013 por\u00f3wnanie platform do orkiestracji<\/strong><\/p>\n\n\n\n Kolejna r\u00f3\u017cnica dotyczy r\u00f3wnowa\u017cenia obci\u0105\u017cenia, kt\u00f3re w Docker Swarm jest automatyczne, podczas gdy Kubernetes wymaga skorzystania z zewn\u0119trznych rozwi\u0105za\u0144. Oba rozwi\u0105zania korzystaj\u0105 r\u00f3wnie\u017c z zewn\u0119trznych narz\u0119dzi do monitoringu.<\/p>\n\n\n\n Docker Swarm jest z pewno\u015bci\u0105 dobrym rozwi\u0105zaniem na start, wspiera uczenie si\u0119, ale je\u017celi w Twoich projektach mierzysz si\u0119 z du\u017cymi, z\u0142o\u017conymi odci\u0105\u017ceniami, wygodniejszym mo\u017ce okaza\u0107 si\u0119 Kubernetes dost\u0119pny w Google Cloud.<\/p>\n\n\n\n Pobierz e-booki:<\/strong><\/p>\n\n\n\n Czy zdarzy\u0142o Ci si\u0119, tworz\u0105c aplikacj\u0119 przechodzi\u0107 przez piek\u0142o b\u0142\u0119d\u00f3w, kt\u00f3re pojawi\u0142y si\u0119 dopiero po wdro\u017ceniu na serwerze, i musia\u0142e\u015b powstrzymywa\u0107 si\u0119 przed wypowiedzeniem magicznego has\u0142a \u201ea u mnie dzia\u0142a\u0142o\u201d? Czy te\u017c wdra\u017caj\u0105c poprawk\u0119, musia\u0142e\u015b na chwil\u0119 wy\u0142\u0105czy\u0107 us\u0142ug\u0119, co niezbyt spodoba\u0142o si\u0119 u\u017cytkownikom? By\u0107 mo\u017ce kilka os\u00f3b w firmie poprosi\u0142o Ci\u0119 o instalacje niekompatybilnych…<\/p>\n","protected":false},"author":26,"featured_media":96857,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":3,"_editorskit_typography_data":[],"_editorskit_blocks_typography":"","_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}"},"categories":[560],"tags":[],"yoast_head":"\nOd Dockera do Docker Swarm<\/strong><\/h2>\n\n\n\n
Docker Swarm \u2014 co to takiego?<\/strong><\/h2>\n\n\n\n
Jak dzia\u0142a Docker Swarm i jak go uruchomi\u0107?<\/strong><\/h2>\n\n\n\n
\ndocker swarm init\n<\/pre><\/div>\n\n\n
Docker Swarm a Kubernetes \u2014 r\u00f3\u017cnice i podobie\u0144stwa<\/strong><\/h2>\n\n\n\n
\r\n <\/div>\r\n <\/div>\r\n