‫Jedną z wielkich obietnic dotyczących kontenerów jest to, że możemy łatwo wdrożyć nasze aplikacje, tak jak my byliśmy platformą,
‫jak Herok czy coś takiego. Możemy to zrobić na dowolnym sprzęcie, czy to na naszym sprzęcie,
‫czy jest to dostawca usług w chmurze, czy to wirtualny czy fizyczny. Dzięki Docker nasze aplikacje mogą działać tak samo, niezależnie od
‫tego, czy są to Amazon, Azure, DigitalOcean, Linode, Rackspace, Google Cloud, czy cokolwiek innego. Bez tych wszystkich funkcji platformy, jak
‫łatwo wdrażać i utrzymywać dziesiątki, setki, a nawet tysiące kontenerów na
‫wielu serwerach lub instancjach? Lub węzły lub kropelki, czy cokolwiek innego.
‫To przynosi kilka naprawdę nowych problemów, które wcześniej nie były problemem dla małych organizacji.
‫Wszyscy wiemy o Netflix i dużych organizacjach, takich jak te, które skalują się do tysięcy węzłów
‫i dziesiątek tysięcy węzłów, i mają wielu inżynierów.
‫Ale jeśli masz tylko kilka osób w zespole, lub jesteś tylko solowym deweloperem, w jaki sposób zabierasz swoje pojemniki i
‫skalujesz je i radzisz sobie z ich całym cyklem życia? Od ich wdrożenia, do ich
‫uruchomienia, do ich ponownego uruchomienia, do ich odtworzenia, usunięcia i aktualizacji.
‫Zaczynamy zadawać pytania na temat tego, jak dokładnie Docker to robi, czy nawet robi to w ogóle?
‫Niektóre z pytań, które zadajemy sobie są takie, jak, w jaki sposób skalujemy? Jak możemy zwiększyć skalę? Jak zapewnić ponowne
‫uruchomienie naszych kontenerów, jeśli się nie powiodą?
‫Jak zastąpić te pojemniki, gdy faktycznie mamy dla nich aktualizację? To jest coś, co nazywa się
‫obecnie niebieskim zielonym rozmieszczeniem, co oznacza, że masz zero przestojów i wyciągasz serwery
‫z puli, aby wprowadzić nowe. W efekcie zawsze masz coś dostępnego,
‫dzięki czemu nigdy nie będziesz naprawdę zawiedziony podczas aktualizacji. Skąd wiemy, czy mamy dziesiątki węzłów, czy nawet tylko trzy
‫węzły, w których uruchomiliśmy te pojemniki? Który węzeł jest naszym kontenerem? W jaki sposób rozmawiamy
‫przez różne węzły lub serwery dzięki naszej sieci w kontenerach?
‫Jeśli chodzi o bezpieczeństwo, to czy mamy pewność, że nasze kontenery są uruchomione tylko na
‫komputerach, które były dla nich przeznaczone?
‫Teraz, gdy przenoszymy i rozmieszczamy je dynamicznie w locie, w jaki sposób przechowujemy prywatne
‫informacje, których potrzebujemy do naszych kontenerów, takich jak sekrety lub hasła?
‫Prowadzi nas to do istotnej ewolucji zakresu tego, co Docker próbuje rozwiązać.
‫Kiedy ludzie rozmawiają ze mną i myślą, że Docker jest tylko modułem wykonawczym kontenera,
‫to właśnie wspomnę o trybie Swarm, który jest zupełnie nową funkcją w 2016 roku, która łączy lata zrozumienia
‫potrzeb kontenerów i sposobu ich uruchamiania na żywo w produkcji.
‫Zasadniczo Swarm jest rozwiązaniem skupiającym serwery, które łączy różne systemy operacyjne lub hosty, lub
‫węzły, czy
‫jakkolwiek by się z nimi połączyć, w jedną zarządzalną jednostkę, którą następnie można uporządkować
‫w cyklu życia swoich kontenerów. Dla jasności, w rzeczywistości nie mówimy o Swarm,
‫który mam nazywać Swarm Classic, który był dodatkowym komponentem Docker przed 1. 12 wyszło. To był naprawdę kontener, który działał w
‫Dockerze, który tak naprawdę
‫wziął twój Docker uruchamiający polecenia i powtórzył je na wiele serwerów.
‫Rozwiązało to kilka problemów, ale nie było tak naprawdę na taką skalę, że musieliśmy naprawdę rozwiązać 80% przypadków, w
‫jaki sposób zamierzasz uruchomić swoje pojemniki.
‫Latem 2016 roku,
‫w dockercon 2016, Docker ogłosił, że Swarm Kit to zestaw bibliotek lub zestaw narzędzi związanych z całą
‫gamą nowych funkcji Swarm.
‫Następnie utknęli to na serwerze Docker. Przez cały czas trwania kursu masz dostęp
‫do funkcji dostępnych w interfejsie CLI i na serwerze.
‫Teraz w końcu możemy się do nich zagłębić.
‫W styczniu 2017 r. 1. 13 wyszło, i oczywiście, ponieważ tryb
‫Swarm był nowy w 2016 r., Będą go ulepszać w nadchodzących latach.
‫W styczniu dodali dodatkowe funkcje o nazwie Stacks and Secrets, a także inne
‫bonusy, o których będziemy mówić później. Ważne jest, aby pamiętać, że Swarm nie jest faktycznie włączony po wyjęciu z pudełka.
‫W rzeczywistości na twoim komputerze nie można teraz używać wymienionych tutaj poleceń. Daje to błąd,
‫ponieważ trzeba włączyć Swarm.
‫Jednym z celów projektu było to, że żaden z kodów Swarm nie
‫miałby wpływu na demona Docker i że wszystkie narzędzia i systemy, które już opierały
‫się na Dockerze, a może mieli własną orkiestrę na Dockerze, nadal działają i nie mogą być
‫zakłócane przez Swarm będący częścią Docker. Kilka naprawdę podstawowych pojęć, zanim zaczniemy nurkować, jest to, że
‫te niebieskie pola, które widzisz nad wierzchołkiem, są to, co nazywamy Węzłami Menedżera, i faktycznie posiadają
‫bazę danych lokalnie na nich zwaną Bazą Tratwy.
‫Przechowuje swoją konfigurację i podaje wszystkie informacje, których potrzebuje, aby być autorytetem
‫w roju.
‫Mamy tu trzech różnych menedżerów, którzy wszyscy zostali dodani do roju, i
‫wszyscy przechowują kopię tej bazy danych i szyfrują ich ruch, aby zapewnić integralność i zagwarantować zaufanie, że
‫są w stanie bezpiecznie zarządzać tym rojem .
‫Poniżej na zielono mamy notatki dla robotników. Teraz możesz zobaczyć w koncepcji Swarm,
‫mamy teraz menedżerów i pracowników.
‫Każdy z nich byłby maszyną wirtualną lub hostem fizycznym, który uruchomiłby dystrybucję systemu Linux
‫lub serwera Windows.
‫Pokazuje to, w jaki sposób faktycznie komunikują się nad tym, co nazywamy Płaszczyzną Kontroli, czyli
‫w jaki sposób rozkazy są wysyłane wokół roju, podejmując działania. W nieco bardziej skomplikowanym widoku mamy tę bazę
‫konsensusową Raft, o której wspomniałem, która jest ponownie replikowana pośród wszystkich węzłów.
‫Wydają rozkazy pracownikom.
‫Sami menedżerowie mogą być również pracownikami. Oczywiście można zdegradować i promować pracowników i
‫menedżerów w dwóch różnych rolach.
‫Kiedy myślisz o menedżerze, zazwyczaj myślisz o pracowniku z uprawnieniami do kontrolowania roju.
‫Ponownie, jedynym wymaganiem dla każdego z tych serwerów jest to, że
‫używają tego samego Docker, którego już używasz. Dzięki tej koncepcji roju i tych menedżerów mamy teraz nowe koncepcje
‫tego, jak wyglądają nasze pojemniki.
‫Tak więc, z poleceniem uruchomienia Docker, moglibyśmy naprawdę wdrożyć tylko jeden kontener.
‫Po prostu tworzyłby pojemnik.
‫Zawsze była na jakiejkolwiek maszynie, z którą rozmawiał Docker CLI.
‫Zwykle jest to komputer lokalny lub serwer, na którym są zalogowani. Ta komenda Docker run
‫nie ma koncepcji, jak skalować lub skalować.
‫Potrzebowaliśmy nowych poleceń, by sobie z tym poradzić.
‫Stąd pochodzi polecenie usługi Docker. W roju zastępuje polecenie
‫uruchomienia Docker i pozwala nam dodawać dodatkowe funkcje do naszego kontenera, gdy go uruchamiamy, takie
‫jak repliki, aby powiedzieć nam, ile z nich chce uruchomić.
‫Są one znane jako zadania.
‫Jedna usługa może mieć wiele zadań, a każde z tych zadań uruchomi kontener.
‫W tym przykładzie utworzyliśmy usługę, korzystając z usługi dokowania, aby utworzyć usługę Nginx za pomocą obrazu Nginx,
‫tak jak zrobiliśmy to już kilka razy.
‫Ale powiedzieliśmy mu, że chcielibyśmy trzy repliki.
‫Wykorzysta więc węzły menedżerskie, aby zdecydować, gdzie w roju umieścić te. Domyślnie próbuje je rozłożyć.
‫Każdy węzeł otrzyma własną kopię kontenera Nginx do trzech replik, które powiedzieliśmy,
‫że potrzebujemy.
‫Jest to szybkie i podstawowe zrozumienie działania menedżerów i ich działań w tle.
‫Wszystkie te funkcje są nowe.
‫Nie jest to po prostu przyjmowanie polecenia i uruchamianie go w interfejsie API, tak jak w przypadku
‫polecenia Docker run.
‫W rzeczywistości jest tu zupełnie nowy interfejs Swarm API, który zawiera szereg usług w tle, takich jak program planujący i
‫program rozsyłający, oraz alokator i programator, które pomagają podejmować decyzje dotyczące tego, co pracownicy
‫powinni wykonywać w danym momencie.
‫Pracownicy stale zgłaszają się do menedżerów i proszą o nową pracę.
‫Menedżerowie stale podają nowe prace i oceniają, co im powiedzieliście, robiąc to,
‫co robią.
‫Jeśli dojdzie do jakiegoś uzgodnienia, wprowadzą te zmiany, na przykład może powiedzieliście o tym, aby
‫przydzielił jeszcze trzy powtarzające się zadania w tej usłudze.
‫Tak więc orkiestrator zda sobie z tego sprawę, a następnie wydaje polecenia pracownikom i tak dalej.
‫Dzięki temu trybowi Swarm mamy do dyspozycji pełen zestaw funkcji, które pozwalają nam już korzystać z istniejących umiejętności
‫Docker, które mamy w celu niezawodnego wdrażania naszych kontenerów w Internecie i rozwiązywania
‫wielu problemów. problemy, które mielibyśmy, gdy przejdziemy do
‫produkcji.