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.
Omówimy zaawansowane komendy.
Tak naprawdę bazowe.
Niż pokerowe, ale jak możecie je
wykorzystać w grze, aby ułatwić swoją pracę?
Jako że pracujemy już na tym kursie przez jakiś czas nasze obrazy czy nasze.
Kontenery zajmują już troszkę miejsca na naszym systemie operacyjnym.
Jak zobaczymy mamy tutaj 10 obrazów.
Każdy z nich waży po 1 GB.
Zajmuje to troszkę miejsca.
Oczywiście możemy zrobić docker system,
ale czasami jest łatwiej po prostu napisać do tego własną komendę.
Zwłaszcza jeżeli chcemy przepracować
jakieś konkretne obrazy, usunąć tylko o konkretnym tagu, a nie wszystkie na raz.
W tym przypadku będziemy usuwać wszystkie.
Ale oczywiście po prostu można zmodyfikować polecenie do tego.
Tym co trzeba zrobić to oczywiście jest najpierw.
Zdobyć informacje o tym, które kontenery
są uruchomione czy obrazy, bo zaczynamy od obrazów.
Czyli docker image. Ls jest pierwszą częścią naszego
polecenia, które usunie wszystkie komentarze.
Więc docker image ls jest pierwszą częścią polecenia.
Które usunie wszystkie obrazy.
Następnie to, co tutaj zostało nam wypluty
na standardowe wejście możemy przepakować, czyli.
Przekazać strumień do innego polecenia.
I to podejście też jest popularne w innych
językach programowania i do tego wykorzystujemy PIPA.
Czyli znak, który znajduje się pod klawiszem.
Jeżeli naciśniemy. Shift, czyli taka pionowa.
Kreska. Znajduje się z reguły.
Nad prawym przyciskiem na klawiaturach.
I tutaj jak już to polecenie mam.
Napisane, ale pójdziemy po prostu napiszemy je z głowy i.
Jest takie specjalne polecenie. A.
WK Tak naprawdę jest to praktycznie język programowania.
Ale wystarczy wiedzieć o
tym kontekście to to, że przy jego pomocy możemy wycinać pojedyncze.
Części danego.
Tekstu, aby zostały wypluty.
Ponownie na standardowe. Wyjście.
Czyli jeśli sobie wpiszemy np. .
Hwk i tutaj wpiszemy printf, jak wypisz dolara.
3.
To adwokat interpretuje to tak, że
dla wszystkiego co przyszło do mnie z tego polecenia.
Czyli tego całego bloku tekstu. Dla każdej.
Linii, każda linia to jest osobna dana, na której operujemy.
Wyświetl trzecią.
Kolumnę, czyli po prostu wyświetl trzeci
ciąg znaków, który jest odseparowane białymi znakami.
Jak to zrobimy, to widzimy, że mamy już
tylko i wyłącznie nasze nazwy kontenerów oraz oczywiście.
Nazwę tej kolumny.
Więc jeśli chcielibyśmy się pozbyć tej
kolumny to możemy do tego użyć grep grep jest to narzędzie do.
Filtrowania wyników, czyli np.
możemy sobie filtrować tylko
ten kontener albo kontenery, które mają w sobie tę powiedzmy literkę D.
To widzimy, że tylko.
Te kontenery będą jakby dalej przekazywane do dalszych operacji.
W naszym przypadku my nie chcemy filtrować.
My chcemy pozbyć się tutaj informacji o obrazie, czyli po prostu image.
Opcja V w grupie odwraca
filtrowanie, czyli wszystko zostanie zachowane poza image.
I jak. Widzimy faktycznie zostały nam.
Same chaszcze.
Więc to co możemy teraz z tym zrobić, to przekazać je do.
Następnego polecenia pipe ponownie.
I aby usunąć wszystkie te kontenery, to co
moglibyśmy zrobić w ogóle poza basem, to moglibyśmy po prostu.
Sobie to wkleić tutaj zduplikowane.
Kursor, dodać spację.
Usunąć następną linię.
Dzięki czemu mamy wszystkie te chaszcze w jednym w jednym poleceniu.
I tutaj zrobić po prostu docker image rm
i wkleić takie polecenie do naszego terminala.
I to też zadziała.
Ale skoro już wszystko robimy.
Basem, no to czemu tego nie zrobić basem? Więc nasz.
Cel jest taki, aby wypluć takie oto. Polecenie w.
Waszą.
I to co trzeba zrobić, to przekonwertować kolejnych linii.
Danego data setu powiedzmy na. Pojedynczą linię.
Wykorzystuje się do tego. Jako.
X arg i to jest konwertowane.
Na po prostu kolejne polecenia czy
argumenty dla polecenia, które zostanie podane po x, czyli docker rm x.
Docker rm.
Sprawi, że.
Z tego.
Zostanie wypluty takie polecenie i od razu
wywołane, w związku z czym usunie nam wszystkie.
Obrazy, które były na naszym systemie operacyjnym.
Zobaczymy, czy to zadziała.
Tylko, że tutaj jest.
No właśnie zamiast docker, bo tutaj docker działa dla kontenerów.
No to oczywiście. Musimy zabić RM
i prawdopodobnie będziemy musieli zrobić sobie flagę false, żeby usunąć te
kontenery, które korzystają z tych obrazów, które spróbujemy usunąć.
Spróbujmy to zrobić i widzimy, że faktycznie to się udało.
Niektóre obrazy nie mogłyby być usunięte z
powodu, że niektóre kontenery są dalej uruchomione, więc jak zobaczymy.
PS to widzimy, że te obrazy z ADM czy te obrazy z indeksem nie zostały usunięte.
Jak zrobimy sobie LS to dalej tutaj one będą nam wisiały.
Więc to co możemy zrobić to tak naprawdę
albo usunąć te kontenery ręcznie, albo ponownie napisać sobie.
Prosty skrypcik do tego.
Czyli teraz już będę troszkę mniej to
tłumaczył, ale skrypt jest dokładnie taki sam.
Czyli najpierw pobieramy listę wszystkich
kontenerów, wycinamy tylko ID kontenerów, wycinamy nagłówki.
Których nie potrzebujemy.
I przekazujemy to do naszego polecenia docelowego.
Czyli docker ps.
Awokado.
Bez autka będziemy robili wszystko po kolei.
Docker ps czyli.
Widzimy, że musimy wyciąć sobie pierwszy.
Pierwszą kolumnę czyli wk.
Prince Dolar jeden.
Teraz wycinamy sobie nagłówek, czyli container.
Oczywiście nie musimy. Tutaj przekazywać container spacja id
wystarczy nam właśnie tak jak tutaj to zrobiliśmy
container, aby tak naprawdę kont nam wystarczyło.
I teraz przekazujemy. To do.
Docker.
Z portem, aby zatrzymać kontenery, które są dalej uruchomione.
Uruchamiamy i w tym momencie.
Wszystkie nasze kontenery zostały.
Usunięte, prawdopodobnie nawet te z a te TS a nie.
Więc tak naprawdę możemy wywołać ponownie to polecenie.
Dodajmy sobie tutaj flagę a s.
I tych kontenerów oczywiście usuwa się w tym momencie.
Więcej jak robią.
To nawet docker PS a nie mamy żadnych kontenerów w naszym systemie operacyjnym.
I tak samo.
Ponownie możemy uruchomić. Polecenie, które.
Usuwało wszystkie nasze obrazy.
No i mamy czysty.
Czysty system pod kątem.
Przynajmniej obrazów i kontenerów.
Więc jeżeli jesteśmy zainteresowani
bardziej może DevOps em albo systemami operacyjnymi.
Praca z barem na pewno też jest mile widziana.
Ale chyba jest jako. Fan fakt czy udostępnienie Wam przydatnych
poleceń, które możecie po prostu sobie skopiować do jakiegoś notatnika i wklejać.
Jeżeli chcecie wyczyścić swój system operacyjny.
Jednocześnie wiedząc. Jak te polecenia działają.