‫Okej, więc zamierzam to zrobić, przejdę przez każdą z tych usług opartych na tej architekturze,
‫a ja zamierzam stworzyć tę aplikację w locie. W tym miejscu zamierzam wpisać komendy, ponieważ wydaje mi się, że
‫to logiczne miejsce, w którym mogę to zrobić. A potem wycinam i wklejam je do mojego
‫węzła.
‫Jeśli pamiętasz, mam tutaj 3-węzłowy rój. Jeśli zrobię węzeł dokowania ls,
‫zobaczysz, że mam tu trzy węzły. Wszystkie są węzłami menedżera.
‫Nie mam oczywiście żadnych pojemników i żadnych usług. Po pierwsze, wiem na górze,
‫mówi o tym, że potrzebuję sieci i potrzebuję woluminu.
‫Tak więc, prawdopodobnie mogę usunąć sieci z drogi i prawdopodobnie mogę to odrzucić. Mogę pisać w
‫sieci dokerów, tworząc nakładkę d. Pamiętaj, że sieć nakładkowa jest jedynym rodzajem sieci, której możemy używać
‫w roju, ponieważ nakładka pozwala nam rozciągać się na węzłach, tak jakby wszystkie znajdowały się w sieci lokalnej.
‫A potem chcę nazwać to backendem.
‫A potem chcę zrobić dokładnie to samo, tylko nazwać to frontendem.
‫W tych dwóch sieciach nie ma nic szczególnego.
‫Zamierzamy podzielić nasze różne usługi na jedną lub drugą, aby pomóc działać jak mała zapora
‫ogniowa zapewniająca separację w celu ochrony.
‫Na tym głosowaniu,
‫jeden, wiem, że muszę stworzyć tworzenie usługi dokowania, i muszę to nazwać, więc równie dobrze mógłbym nadać nazwę głosowi. A potem muszę opublikować port 80-80 w kontenerze
‫i musi być w konkretnej sieci. Tak więc, interfejs
‫sieciowy. Potrzebuję dwóch replik.
‫Tak więc, replika druga. A potem równie dobrze mogę skopiować i wkleić to imię.
‫Teraz zamierzam tworzyć wszystkie te elementy, zanim faktycznie je wdrożę.
‫Zamierzam skopiować to tutaj. Ten będzie się nazywał ... to nie będzie nazywane głosowaniem,
‫będzie się nazywać redis.
‫Nie musisz się martwić o publikowanie żadnych portów.
‫To będzie w sieci frontendowej.
‫Chcę dwóch replik, a potem, mam zamiar nazwać to redis, trzy to obraz.
‫Tutaj, usługa dokowania tworzy pracownika nazwy, będzie w dwóch sieciach. Muszę zrobić frontend sieciowy i
‫... whoops.
‫Piszę to, co mówię ... zobaczmy, backend sieciowy, a następnie tylko jedną replikę.
‫... Ponieważ jedna replika jest
‫domyślna, tak naprawdę nie muszę określać repliki i nie określam żadnych portów.
‫Myślę, że to wszystko, czego potrzebuję. Po prostu muszę skopiować obraz.
‫OK, usługa dokowania tworzy nazwę zaplecza sieci db.
‫Zobacz, jedną replikę.
‫Och, muszę zrobić ten tom.
‫Oto kwestia objętości. Komenda -v nie jest zgodna z usługami dokowania. Ponieważ z różnych powodów usługi
‫będą bardziej skomplikowane niż może typowy przebieg w doku.
‫I pojawiły się problemy i ograniczenia z -v powrotem w dzień.
‫Tak więc Docker nauczył się z tego i poprawił format. Ale zdarza się, że jest trochę
‫bardziej gadatliwy i może nieco trudniej jest zapamiętać format zaczynający się.
‫Zdarza się też, że dokumentacja Docker nie jest jeszcze dobrze udokumentowana, ponieważ ma
‫mniej niż rok jako polecenie. Tak więc, po prostu skopiujemy i wkleimy to. Jeśli nie ma to
‫dla ciebie sensu, zasadniczo jest to ta lista wartości, które są częścią polecenia pojedynczego montowania, a
‫minimum to typ, źródło i cel.
‫Są też inne rzeczy, które możesz dodać, ale są to jedyne trzy, których potrzebujemy w tym scenariuszu.
‫I widzisz, że moje źródło to tylko nazwany tom, ponieważ nie mam w nim żadnych ukośników.
‫A jeśli mielibyśmy ukośne, byłby to mocowanie bindowe i musielibyśmy określić inny
‫typ.
‫A więc tutaj - wielkość woluminu typu, dane źródłowe bazy danych, cel.
‫Myślę, że to prawda.
‫A potem możesz po prostu, postgres 9. 4.
‫A potem ostatnia to aplikacja wyników.
‫Usługa dokowania tworzy więc backend sieci nazw wyników.
‫Opublikuj port. Zamierzamy użyć 5001 do portu 80 w kontenerze.
‫Mogę tylko uruchomić jeden z nich. Nawiasem mówiąc, jedynym powodem, dla którego używamy jednego
‫z nich jest rzeczywiście mało znany problem w tej aplikacji, jest to, że faktycznie korzysta z WebSockets, a WebSockets to coś,
‫co wymaga stałego połączenia.
‫Tak więc, w sieci routingu, tak naprawdę nie robi jeszcze dobrze WebSockets, ponieważ
‫będzie nadal przełączać się między kontenerami i że WebSocket musi być w określonym pojemniku uporczywie.
‫Tak więc, z tą aplikacją powinniśmy mieć naprawdę proxy, ale nie jest to w tej aplikacji, więc prawdopodobnie w nowszej
‫wersji zaktualizują ją i naprawią, abyśmy mieli serwer proxy.
‫W ten sposób może być zbędny
‫i pewny, że trafiasz do właściwego pojemnika. Zamierzamy skopiować
‫i wkleić to do końca. Właśnie zdałem sobie sprawę, że brakuje mi ostatniej wartości.
‫Okay, a potem zacznę od góry i po prostu kopiuję i wklejam. To już stworzyło sieci.
‫Tak, to musi być replika. Pozwól mi to zaktualizować tutaj.
‫Repliki. Okay, zamierzamy stworzyć redisa. No to jedziemy.
‫W porządku, stworzył to. Teraz, zauważ, przy okazji, otrzymam identyfikator usługi, ale nie oznacza to,
‫że usługa jest właściwie wdrożona poprawnie.
‫Przyjrzymy się temu za chwilę.
‫Pozwól, że dostanę tam resztę.
‫W porządku.
‫Skoro już to mamy, powinniśmy móc wykonywać pozostałe polecenia tutaj. Tak więc usługa dokowania ls pokazuje nam wszystkie
‫pięć z nich. I zauważysz, że numery replik są zgodne.
‫To dobry znak.
‫Oznacza to, że został pomyślnie utworzony.
‫A gdybym chciał zagłębić się głębiej, mógłbym zrobić ps na każdym z nich.
‫W porządku, dzięki czemu masz już 28 sekund.
‫redis działa już minutę. db działa przez 53 sekundy. głosować.
‫pracownik.
‫Zobaczysz tu w robotniku, że mamy nieudane zadanie, które się wyłączyło, a następnie to, które działa.
‫To trwa przez 47 sekund.
‫Okay, więc właściwie wiem, dlaczego tak się stało, ale możesz nie wiedzieć, więc może będziemy musieli zrobić dzienniki.
‫Teraz jest na węźle2.
‫Eksperymentalną funkcją, którą możesz włączyć przez opcjonalną konfigurację w Dockerze, jest wykonanie
‫nowej funkcji eksperymentalnej, dzienników usługi dokowania. Który faktycznie ściąga logi z wielu różnych węzłów.
‫Mam nadzieję, że zostanie wydany w następnej wersji Docker jeszcze w tym roku.
‫Ale na razie jest eksperymentalna. Musiałem więc włączyć to w logu demona itp. Docker.
‫plik json. I, żebyś wiedział, w ten sposób włączasz eksperyment.
‫To nie jest część tego.
‫To po prostu coś, co zrobiłem, tylko po to, abym mógł to szybko pokazać.
‫Być może widzisz ten błąd i myślisz, nie wiem, dlaczego tak się dzieje?
‫Możemy spojrzeć na ten dziennik. Tak, możemy zrobić pracownik dziennika usługi dokowania ... oops ... loguje pracownika.
‫I to jest, ten konkretny, zobaczmy, są to dwa różne ...
‫Możesz zobaczyć tutaj, to jest jeden, a następnie liczba się zmienia. Właściwie tak.
‫To wszystko jest tutaj.
‫Nie ma takiego urządzenia ani adresu.
‫Tak więc oznacza to, że stworzyłem usługę, która szukała rekordu DNS, który nie istnieje, ponieważ
‫nie utworzyłem jeszcze drugiej usługi. Zrobił to, co powinien zrobić
‫w "Dockerland", kiedy to wystąpił błąd, aplikacja powinna się zawiesić, ponieważ Docker może ponownie uruchomić i
‫prawidłowo rozmieścić rzeczy, dopóki aplikacje się nie zawieszą. A gdy tylko uruchomię wszystkie
‫moje usługi, wszystko przestało działać, a teraz wszystko działa.
‫I możemy to stwierdzić, po prostu wracając i patrząc na pracownika PS. Widzimy, że działa z powodzeniem
‫przez trzy minuty.
‫Rzućmy okiem na naszą aplikację.
‫Jeśli po prostu podniosę adres IP, powinienem zdobyć psy i koty. Zamierzam głosować na koty.
‫A jeśli przejdę do tego samego adresu IP na porcie 5001, powinienem zobaczyć aplikację wyników. To jest ta aplikacja.
‫Teraz wiemy, że działa, ponieważ jedynym sposobem, aby to zmienić, jest to, że dzieje się tak przez
‫cały czas, gdy zostanie on złapany przez redis, a następnie przetworzony przez pracownika, a następnie umieszczony w bazie danych.
‫Wiemy, że każda z naszych aplikacji może rozmawiać ze sobą. I możemy spojrzeć na dzienniki, jeśli
‫chcemy.
‫Ale to jest wersja demo.