
Omówienie agendy kursu
Wprowadzenie do Dockera - przedstawienie wad i zalet
Rys historyczny technologii - omówienie jak Docker i jego zastosowanie zmieniało się na przestrzeni ostatnich lat
Omówienie architektury Docker-a
Omówienie podstawowych koncepcji Docker-a: obrazów, kontenerów oraz rejestru obrazów
Przeprowadzenie przez proces instalacji Docker-a na systemie Windows
Przeprowadzenie przez proces instalacji Docker-a na systemie MacOS
Przeprowadzenie przez proces instalacji Docker-a na systemie Linux
Krótkie podsumowanie rozdziału i weryfikacja instalacji Docker-a
Proces uruchamiania kontenerów - część praktyczna
Proces uruchamiania kontenerów - część praktyczna
Proces uruchamiania kontenerów - część praktyczna
Poznasz cztery polityki restartu kontenerów: no, on-failure, always i unless-stopped. Na praktycznych przykładach sprawdzisz, jak Docker reaguje na błąd aplikacji, ręczne zatrzymanie kontenera i restart demona. Nauczysz się ograniczać liczbę ponownych prób, odczytywać licznik restartów oraz zmieniać politykę działającego kontenera. Dowiesz się też, jakie ograniczenia mają polityki restartu i dlaczego nie zapewniają wysokiej dostępności.
Dowiesz się, jak sprawdzać, czy aplikacja w kontenerze rzeczywiście odpowiada. Zdefiniujesz HEALTHCHECK w pliku Dockerfile i poznasz jego odpowiedniki w opcjach docker run. Na przykładzie serwera nginx zobaczysz przejścia między stanami starting, healthy i unhealthy oraz nauczysz się diagnozować nieudane próby za pomocą docker inspect. Omówimy częstotliwość sprawdzania, limity czasu, okres karencji oraz ograniczenia tego mechanizmu.
Wykorzystanie wzorca build w celu optymalnej budowy obrazów
Poznasz instrukcję RUN --mount w pliku Dockerfile oraz pięć typów montowania: bind, cache, tmpfs, secret i ssh. Na praktycznych przykładach zobaczysz, jak korzystać z plików bez pozostawiania ich w obrazie, ponownie wykorzystywać pobrane pakiety i ograniczać rozmiar obrazu dzięki tymczasowym katalogom roboczym. Omówimy również montowanie artefaktów z innego etapu budowania, zastosowania sekretów i agenta SSH oraz zarządzanie miejscem zajmowanym przez cache buildera.
Zobaczysz, dlaczego ARG i ENV nie nadają się do przekazywania tokenów i innych sekretów podczas budowania obrazu. Za pomocą docker history i docker inspect sprawdzisz, gdzie mogą ujawnić się poufne dane, oraz poznasz pułapki związane z usuwaniem plików z warstw. Następnie wykorzystasz RUN --mount=type=secret i flagę --secret, aby przekazać dane z pliku lub zmiennej środowiskowej. Przykład z prywatnym rejestrem pakietów npm pokaże, jak zastosować ten mechanizm w praktyce.
Wprowadzenie do bezpieczeństwa w Dockerze
Przykłady komend dotyczących bezpieczeństwa w Dockerze
Obraz którego proces nie jest uruchamiany na użytkowniku root
Podstawy i narzędzia do skanowania obrazów pod kątem bezpieczeństwa
Krótkie omówienie polecenia docker init
Omówienie pracy z Dockerem na komputerach z architekturą ARM - Apple z procesorami z serii M. Materiał polecany również dla zainteresowanych budowaniem obrazów na różne architektury/platformy.
Zestaw dobrych praktyk których można użyć przy budowaniu obrazów
Krótki pokaz innych (alternatywnych) narzędzi dla Dockera oraz kilka niewielkich narzędzie pomocnych przy lokalnym developmencie
Przygotuj się na przyszłość związaną z kontenerami i konteneryzacją.
Bez względu na to jakiego języka jesteś programistą niemal pewne jest, że w najbliższej przyszłości w swojej pracy spotkasz się z kontenerami oraz konteneryzacją. Nie czekaj i już dziś przygotuj się na to co nastąpi.
Według ostatnich badań już ponad 80% firm wykorzystuje kontenery (Portworx container adoption survey report 2018). Jeszcze w roku 2017 ten wskaźnik wynosił 58%. Prawdopodobieństwo tego, iż dzięki znajomości takich narzędzi jak Docker będziesz w stanie wypromować się na rynku pracy jest ogromne a już w niedługim czasie znajomość omawianych w tym kursie zagadnień będzie należeć do abecadła każdego programisty / inżyniera IT.
Docker to narzędzie, które zrewolucjonizowało rynek
Co pewien czas w branży IT zachodzi do rewolucji w podejściu do infrastruktury IT. Kiedyś mieliśmy maszyny typu mainframe, następnie nastąpiła era PC i maszyn fizycznych, później pojawiła się wirtualizacja a ostatnie lata to boom na rozwiązania typu cloud a w wraz z nim dominacja kontenerów. Jeżeli jesteś programistą lub inżynierem DevOps zapewne zetknąłeś się z chmurą lub Twoja firma planuje wykorzystanie tego typu rozwiązań. Bądź pionierem i już teraz zacznij używać kontenerów w codziennej pracy.
Dla kogo jest ten kurs
Kurs przygotowany jest z myślą o wszystkich tych, którzy chcą zacząć przygodę z Docker-em. Główny nacisk jest położony na część praktyczną i wskazanie co daje Docker w codziennej pracy programisty. Niemniej jednak kurs tłumaczy również szersze aspekty Docker-a jak i mechanizmy które składają się na to narzędzie dzięki czemu nie tylko programiści mogą wykorzystać wiedzę zawartą w tym kursie.
Poznaj Docker-a od podstaw
Kurs poprowadzi Cię od podstaw w których omówione zostaną zalety kontenerów, pokazana zostanie architektura Dockera, podstawowe koncepcje i pojęcia związane z tym narzędziem a następnie będziemy przechodzić do bardziej skomplikowanych tematów.
Zapoznasz się z uruchamianiem i monitorowaniem kontenerów. Poznasz jak działają sieci w Dockerze i jakie dają korzyści.
Następnie nauczysz się tworzyć i przygotowywać własne obrazy i poznasz wygodę jaką dają one w codziennej pracy w zespole programistów. W przypadku jeżeli do teraz musiałeś konfigurować serwer aplikacyjny przez kilka godzin z wykorzystaniem Docker-a wszystkie te problemy znikną jak za dotknięciem czarodziejskiej różdżki.
Dowiesz się także jak bezpiecznie zapisywać Twoje dane z kontenerów i gdzie przechowywać własne obrazy.
Do bardziej skomplikowanych celów i jak również do wygody poznasz narzędzie docker compose, które znacznie ułatwi Twoją pracy w przypadku gdy będziesz musiał przygotowywać środowisko złożone z wielu kontenerów.
Na koniec wskażę gdzie dalej szukać informacji i dlaczego warto zgłębiać nadal temat kontenerów.
O autorze
Przemysław Nowak - Software Engineer skupiony głównie na "backend developmencie" oraz kulturze DevOps. Uwielbia automatyzację i prostotę w kodzie.
Od ponad 10 lat pracuje z językiem Java oraz JVM natomiast ostatnie kilka lat to praca jako DevOps w środowiskach cloudowych.
Fan Docker-a oraz Kubernetes-a ze względu na prostotę, którą te narzędzia wprowadzają do świata mikroserwisów. Od kilku lat pracuje z kontenerami na produkcji.