w Praktyce
4 godz. 33 min · Docker · Full-stack i Programowanie
Wojciech PołowniakSr. Fullstack EngineerW początkowych sekcjach kursu, zrozumiesz czym jest Docker i jakie ma zalety wobec rozwiązań oferujących pracę z serwerami lokalnymi, np. XAMPP - poznasz jego architekturę, założenia oraz najważniejsze pojęcia, których nieznajomość często spędza sen z powiek nawet doświadczonym programistom.
Jako że Docker jest to narzędzie dla programistów i administratorów systemów operacyjnych, lwia część pracy z tym narzędziem odbywa się w konsoli. Przedstawię Ci najważniejsze polecenia powiązane z tą technologią oraz zestaw dobrych praktyk i protipów które zawstydzą niejednego inżyniera oprogramowania.
W tej sekcji tego kursu przejdziemy przez najważniejsze punkty tworzenia skonteneryzowanych aplikacji z perspektywy programisty aplikacji internetowych - jeśli chcesz szybko rozpocząć swoją przygodę z Dockerem, ponieważ znasz już podstawy teorii i czujesz się wystarczająco pewnie - możesz zacząć z tego miejsca! A jeśli tempo będzie zbyt szybkie - zawsze możesz wrócić do części teoretycznej pracy z Dockerem
Przebudowywanie zasobów na żywo, dynamiczne odczytywanie zawartości plików... To podstawowe koncepty które współcześni programiści sieci web biorą za pewnik. Przy nieznajomości Dockera, łatwo jest strzelić sobie w stopę i utrudnić swoją pracę, zabierając sobie możliwość korzystania z powyższych funkcjonalności. W tym kursie, pokażę Ci jak wygodnie pracować z Dockerem w środowisku developerskim.
Jedną z wielu zalet Dockera jest niewątpliwie proste przenoszenie zmian konfiguracji i infrastruktury ze środowiska developerskiego na produkcyjne. W tym kursie, poza przyswojeniem podstawowej wiedzy na temat Dockera poznasz szereg dobrych praktyk w kontekście bezpieczeństwa oraz przygotowywania Twoich aplikacji pod środowisko, na którym będzie uruchomiona Twoja aplikacja gdy uznasz że jest gotowa by ujrzeć światło dzienne.
Ten kurs to zestaw kompleksowej wiedzy dzięki której dowiesz się jak od zera, na żywo, stworzyć aplikację na Twoim lokalnym środowisku - i jakie kroki należy podjąć, aby móc zobaczyć ją w internecie - wszystko w kontekście Dockera, wysokiej skalowalności i bezpieczeństwa. W jednej z ostatnich lekcji kursu zobaczysz jak robię deploy na serwery DigitalOcean by uzyskać link do swojej nowo zbudowanej aplikacji internetowej.
Ten kurs jest kierowany do webdeveloperów, bądź zaawansowanych programistów którzy nie pracowali jeszcze z Dockerem. Przydatne może być zrozumienie interfejsu linii poleceń czyli tzw. konsoli, oraz podstawowa wiedza na temat web developmentu czy systemów operacyjnych. Jeśli potrafisz korzystać z systemu kontroli wersji git, na pewno ułatwi to Tobie zrozumienie konceptu pracy z poleceniami dockera. Niemniej, każde zagadnienie staram się tłumaczyć na bieżąco.
Cześć! W tej lekcji opowiem troszkę o kontenerach
narzędziowych, czyli takich kontenerach, które same w sobie nie są potrzebne do
działania naszej aplikacji, ale są przydatne, jeżeli chcemy coś np.
zapakować, zwłaszcza jeżeli jesteśmy poza naszym.
Lokalnym systemem operacyjnym.
W kontekście tego, że Docker nie jest zainstalowany u nas lokalnie, tylko np.
jest uruchamiany przez Hibernate, SAS
forma czy inne rozwiązania, które zajmują się orkiestracji
naszych kontenerów, czyli po prostu zarządzaniem nimi w sposób skalowalny.
Myślę, że to może być
najprostsza definicja tego słowa w kontekście Dockera.
Więc to co zrobimy to uruchomimy nowy
obraz nie wystawiając tym razem portów, czyli uruchomimy nginx.
Oczywiście usunęliśmy wszystkie nasze
obrazy z poprzedniej lekcji, w związku z czym musimy pobrać je ponownie i.
Zauważcie, że nie wystawiłem tego postu.
To znaczy my z naszego hosta, naszej
przeglądarki nie będziemy w stanie dobrać się do tego.
Co Engines nam serwuje.
I czasami jest taka sytuacja, że faktycznie ciężko jest się dobrać do
danych portów, które kontener wystawia ze względu na to, że.
Np. dana aplikacja chodzi w klastrze i.
Nie ma takiej możliwości wystawiania.
Tego na zewnątrz poprzez pojedynczy endpoint.
Możecie np. sobie zrobić jakiś tam serwis na podstawie
noda, ale też ta pula adresów IP jest wtedy ograniczona i jest dostępna dla
wszystkich w sieci, więc to nie jest rozwiązanie optymalne.
Dlatego to co zrobimy sobie tutaj to uruchomimy sobie.
Nasz kontener, z którego korzystaliśmy przy.
Okazji tworzenia multi stage biletów.
Czy to jest jej rekord?
NET Tools.
I uruchomił.
No i możemy też sobie ustawić, że.
Przy wyjściu z tego kontenera on się sam usunie.
Flaga dasz nasz REM.
No i to co moglibyśmy zrobić teoretycznie.
Oczywiście jak to się nam pobierze.
To z tego kontenera zapytać kontener będzie jak?
O to jakie. Informacje.
Zwraca. Tutaj widzę, że nie znalazło.
Nam obrazu Netto Tours, co jest ciekawe.
Po prostu Eska tutaj doszła.
To jej rekord, nie jej rekord, więc ponownie to.
Pobieramy.
Więc będziemy mogli wykorzystać tutaj Karla aby.
Podpytać tego exa o informacje jakie informacje.
Aby odczytać tego newsa o informację jakie dane zwraca na tym porcie 80.
Natomiast jak widzicie tutaj nie możemy.
Rozwiązać tej nazwy domena wariant next.
I generalnie jeżeli chodzi o takie surowe korzystanie.
Z Dockera bez jakiegoś docker pauza czy storma.
To nie jest to idealne, nie jest to najwygodniejsze.
No i generalnie w.
Chwili obecnej gdy wystartowaliśmy nasz kontener narzędziowy przy pomocy tej
komendy oraz naszego Alexa przy pomocy tej komendy.
To nie jesteśmy w stanie.
Tak naprawdę skomunikować się między tymi dwoma kontenerami.
To co byśmy musieli zrobić to wyjść z tego kontenera.
Wyłączyć tego newsa.
I przy okazji tworzenia.
Tego kontenera.
Musimy go podpiąć w odpowiedni.
Network do sieci.
Czyli możemy stworzyć nową sieć.
Docker network create ng next.
Specyfik powiedzmy.
I w ten sposób stworzyliśmy taką wirtualną kartę sieciową.
Wirtualną sieć, którą możemy podpiąć do danego kontenera.
Przy pomocy. Właśnie polecenia docker run.
Czyli tutaj mieliśmy docker rand ng ecs.
I aby podpiąć tego pod tą.
Sieć możemy zrobić sobie network i tutaj
po prostu nazwę tej sieci którą stworzyliśmy czyli engine ECS specyfik.
I teraz, gdy zrobimy sobie.
PPS oraz Docker Inspector.
Na tym kontenerze to. Zobaczymy, że jest ono.
Podpięte pod sieć linek specyfik.
I ma tutaj swój.
Adres IP, swoją bramę domyślną itd.
Ale nas interesuje adres IP.
I teraz w momencie kiedy uruchamiamy.
Tutaj to jest rekord bash.
My musimy być podpięte pod tą samą sieć,
ponieważ w innym wypadku po prostu nie będziemy.
W stanie sięgnąć tego kontenera.
Czyli jeżeli ja sobie skopiowałem.
Nawet ten adres IP, wkleiłem go tutaj to nie mamy żadnej zwrotki, ponieważ ten
kontener narzędziowy nie jest podpięty pod tą sieć, więc możemy to zamknąć i wejść.
I naprawić. To w ten sam sposób, czyli.
Docker run it.
Tylko musimy dodać network.
Na engines specific.
No i teraz to samo polecenie.
Dosłownie to samo, ponieważ adres jest taki sam.
Mamy dostęp do naszego CSA, więc wiemy, że.
Aplikacja chodzi poprawnie, że zwraca nam odpowiedzi HTTP, tylko po prostu nie jest
wystawiona na zewnątrz z powodów technicznych.
Albo być może jest to zabieg celowy, że ma
być to tylko wewnętrzny serwer HTTP dla kontenerów wewnątrz danego klastra.
Więc warto po prostu wiedzieć też to, że nie zawsze musimy np.
iść tą.
Drogą, gdzie wchodzimy po prostu na dany kontener.
Docker exec id. Bash.
Jak chcemy sobie przetestować tutaj tego local hosta?
To jeżeli tego by tutaj nie było, bo akurat tak jest,
to nie musimy robić apt get update i apt get install dla Carla, tylko możemy
wykorzystać do tego odpowiedni kontener, który jest podpięty pod tą samą sieć.
Co ma o wiele więcej.
Sensu przy użyciu docker.
Poza słowami napisanym.
W surowym doktorze.
Raczej rzadko się to robi, ale jest to jedna z dobrych praktyk.