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 spróbujemy uruchomić nasz obraz, który stworzyliśmy.
W poprzedniej lekcji.
Czyli jeśli wpiszemy docker.
Image ls.
To widzimy, że nasz docker.
Jest tutaj obecny.
I aby uruchomić nasz obraz.
Możemy wpisać docker run.
Powiedzmy.
Dasz D.
I tutaj nazwa naszego obrazu, czyli docker node dwukropek.
Zobaczmy co się stanie. On się uruchomił.
Uruchomiliśmy go w trybie disabled i
zobaczmy czy faktycznie dalej jest uruchomiony.
Jak widzimy niestety go nie ma.
Mamy tutaj natomiast dwa pozostałe.
Kontenery z poprzednich lekcji, więc ja je po prostu tutaj szybko usunę.
Docker i oba nasze.
Jest jeszcze Forth. Jak piszemy docker.
Ps.
To widzimy, że tego. Kontenera.
Nie ma, ale jeżeli wpiszemy docker PS a no to zobaczymy, że nasz.
Docker który się tutaj znajduje możemy sobie troszkę zmniejszyć czcionkę.
Został stworzony 25 sekund temu i 27.
Sekund temu się zamknął.
No i dlaczego tak się stało?
W przypadku Linuxa, jeżeli pisaliśmy tutaj docker.
R&D Engine Engineers.
To on uruchamiał.
Serwer HTTP.
I mogliśmy to podejrzeć na.
Podstawie Docker Inspector.
Engineers i tutaj widzieliśmy komendę i entry point ustawione na next on.
Jeżeli wpiszemy docker inspektor not.
Docker na outro.
To jest nasz obraz customowe, który pobraliśmy, zbudowaliśmy.
No to widzimy, że mamy tutaj docker entry point.
I polecenie to jest na to.
Oczywiście możemy też pójść tutaj tędy.
Jeżeli na przykład jest koło, gdzie naciśniecie control albo command
zależności od systemu operacyjnego nad nazwą obrazu i po prostu klikniecie go.
To to was przeniesie do docker huba.
Gdzie ten obraz faktycznie jest uruchomiony.
I tutaj będziecie w stanie wyczytać troszkę
więcej niż z samego Docker inspektora, ponieważ jeżeli otworzycie.
Po prostu którykolwiek tak naprawdę docker powiedzmy 17 6 Alpine.
To zobaczycie cały.
Plik docker file na którego bazujemy.
Czyli będziemy widzieli wszystkie zależności, które są tutaj doładowane.
Zobaczymy polecenie, które jest uruchamiane.
I tak naprawdę interesuje nas przede
wszystkim to cmd, które też mogliśmy sobie znaleźć na poziomie docker inspektora.
Czyli jeśli sobie tutaj wejdziemy to mamy tutaj to nasze cmd, tak?
I problem jest taki, że to polecenie nie ma żadnego pliku.
Wejściowego, który ma uruchomić.
Czyli jak sobie ustawimy.
Tutaj noda na naszym hoście to on otwiera taką konsolę, która nazywa się reply.
I tutaj jesteśmy w stanie sobie debatować
różne rzeczy, jeżeli chcielibyśmy sprawdzić jak w JavaScript się zachowa.
Natomiast w Dakarze tego nie ma. Domyślnie po prostu.
Wychodzi, ponieważ nie ma pliku, który ma się uruchomić.
Więc możemy na okrętkę troszkę rozwiązać
ten problem, bo oczywiście są polecenia, które pozwolą nam dodać tutaj.
Pliki do tego obrazu, które pozwolą nam od razu wystawić porty.
Ale wtedy nie mamy takiego łatwego sposobu na.
Uaktualnianie tych rzeczy.
I właśnie przez to, jak umieścimy nasze pliki wewnątrz obrazu
albo po prostu development experiences dobre albo troszkę gorsze.
Więc to co ja zrobię, to spróbuję
uruchomić inne polecenie z tego samego obrazu.
Czyli zamiast docker.
Rand. To spróbujemy sobie.
Tutaj wpisać bash i zobaczymy co się stanie.
Docker ps faktycznie się teraz zamknął. I.
Zamknął się dlatego, ponieważ on spróbował dokleić.
Polecenie bash do polecenia node, które mieliśmy widoczne tutaj wcześniej.
Czyli tak naprawdę polecenie, które spróbowaliśmy wywołać to było bash.
Chyba, że zrobimy taki trick.
Zobaczmy czy to w ogóle będzie działało. I to już piszę.
Faktycznie logika flashu do script 360.
Don.
I zobaczmy docker ps.
I w tym momencie on się uruchomił.
Ponieważ mamy proces basha, w której ciągle się utrzymuje.
Czyli ważne jest to, aby pierwszy proces, który jest uruchamiany przez Dockera
był procesem, który nie kończy się od razu, ponieważ wtedy nasz.
Kontener od razu.
Wyjdzie i np.
w przypadku systemów.
Operacyjnych, gdzie zależy nam na tym, aby z naszego kontenera
był serwowany serwer HTTP, no to oczywiście jeżeli serwer od razu
wyjdzie nie ma w tym żadnego benefitu dla nas.
Ale jeżeli np. wejdziemy sobie.
Teraz na ten kontener docker.
Exec id i wejdziemy w tego basha.
Tutaj zrobimy sobie PPS.
To widzimy, że to jest ten proces.
Który trzyma nam cały kontener.
Czyli jeżeli ja bym go tutaj z tego
poziomu zabił poleceniem kill me z 9, to nasz kontener się wyłączy.
A to jest drugi proces, na który na którym my jesteśmy.
Tutaj tak naprawdę powinno być PID
1, ale tutaj zrobiliśmy wywołanie komendy wewnątrz powłoki bash.
To co jest. Istotne w uruchamianiu kontenerów.
To to, że gdy już mamy dodane pliki.
Do naszego obrazu.
Musimy pamiętać, aby skonfigurować
polecenie cmd w odpowiedni sposób, tak aby proces, który jest uruchomiony jako.
Pierwszy akapit
po prostu się nam nie wyłączył, bo wtedy nasz kontener się wyłączy.
Ale z tego poziomu mamy. Już dostęp do noda.
Czyli tak samo jak na moim hoście.
Ja miałem noda zainstalowanego.
No to tutaj tak samo jesteśmy w stanie zrobić jakąś informację.
Więc mamy dowód, że jesteśmy wewnątrz kontenera, w którym jest zainstalowany.
I na przykład gdybyśmy mieli.
Tutaj jakiś plik, powiedzmy taką konsolę lock.
Heloł.
I zapiszemy to sobie na indeks czy jest i
zrobimy indeks czy jest na to faktycznie wypisze się Hello.
Tylko, że faktycznie jeżeli wyjdziemy z tego.
Kontenera i zrobimy docker ps aby zabić ten kontener czy docker stop.
I tutaj widzimy ten przykład z
dziesięcioma sekundami, gdzie sygnały systemowe nie są obsługiwane.
Więc po 10 sekundach ten kontener się zamknie.
I gdy spróbujemy uruchomić.
Go ponownie razem z tym poleceniem specjalnym, aby to nam się nie wyłączyło.
Albo po prostu uruchamiając basha.
W trybie interaktywnym.
To zobaczymy, że tego pliku.
Który stworzyliśmy sobie indeks jest.
Go już tutaj nie ma, ponieważ w naszym obrazie.
Go nie ma.
W związku z czym musielibyśmy nasz plik
index dodać albo na poziomie budowania obrazu za.
Pomocą polecenia add, o którym też będziemy więcej mówili później.
Albo zamontować go.
Za pomocą wolumenów. Co daje.
Nam większą dynamikę pracę. I na tym właśnie.
Skupimy się w kolejnej lekcji na montowaniu wolumenów.
Czyli tak jakby dysków.
Twardych do naszych obrazów pokerowych.