Na swojej drodze spotkałem się z wieloma wyjaśnieniami, czym jest docker i do czego służy. Zapewne większość osób, która poszukuje informacji o nim, napotka się z określeniem, że jest narzędziem służącym do tworzenia, wdrażania i uruchamiania kontenerów. Dzięki temu programista może swoją aplikację spakować. W tej paczce znajdować się będą wszystkie niezbędne komponenty, jak na przykład biblioteki. Ułatwia to znacznie wykonywanie pracy programistom. Wystarczy, że wyślą taką paczkę. Wszędzie tam, gdzie zainstalowany jest docker, jego program zostanie uruchomiony w identyczny sposób. Wręcz genialne! Jeżeli zapytasz, skąd o tym wiem, wystarczy wpisać w google odpowiednią frazę i podobnie sformułowania odnajdziesz na prawie każdej ze stron. W internecie brakuje jednak informacji, do czego administratorzy systemowi mogą wykorzystać dockera. Jeżeli nie wierzysz, poszukaj na własną rękę. Informacje o tym są tylko śladowe i w większości ta grupa jest pomijana. Dlatego postanowiłem napisać ten wpis, aby pokazać jak przydatny może być docker dla administratora.
Mam nadzieję, że nie pogniewałeś się, przecież ja też zacząłem od programistów. To, co opisałem w pierwszym akapicie, dotyczy w skrócie tej dziedziny, którą się nie zajmujesz. Natomiast po tym spakowaniu ktoś to oprogramowanie musi w jakiś sposób zaimplementować. I w tym miejscu niezbędni okazują się administratorzy.
Ostatni webinar w tym roku!
Zapraszamy na bezpłatny webinar poświęcony roli sztucznej inteligencji w zarządzaniu infrastrukturą IT, zarówno w dużych serwerowniach, jak i w środowiskach homelab.
W trakcie wydarzenia dowiesz się, jak AI może wspierać codzienną pracę administratora, pomagając w automatyzacji procesów, monitorowaniu zasobów, analizie danych oraz zwiększaniu efektywności operacyjnej.
Zapisy na: https://asdevops.pl/warsztaty/
Aplikacje, a administrator
Docker dla administratora ułatwia zarządzanie oraz wdrażanie wspomnianych aplikacji. Ma to związek ze sposobem uruchomienia, o którym wspomniałem przed chwilą. Tam, gdzie zainstalowany jest docker, aplikacja uruchomi się w sposób identyczny, bo zrobi to na tym samym systemie bazowym, zainstalowanym w kontenerze. Ponadto kontenery dockera są lekkie i można je łatwo uruchamiać na różnych platformach. W tym na serwerach, komputerach stacjonarnych, a nawet w środowiskach chmurowych.
Załóżmy teraz, że administrator systemu jest odpowiedzialny za wdrożenie i zarządzanie aplikacji internetowej. Korzysta lub ma korzystać z niej ogromna liczba użytkowników. Jeżeli użyje dockera, może zawrzeć w kontenerze wszystkie komponenty niezbędne do jej funkcjonowania, tworząc odpowiedni obraz. Posiadając taki, może wykorzystać go w kilkunastu innych miejscach, posługując się niewielką ilością poleceń. Wszelka konfiguracja znajduje się już w kontenerze i jest niezależna od środowiska, w którym ją uruchomimy. Dlatego docker jest oprogramowaniem, które umożliwia tworzenie obrazów, a następnie kontenerów z aplikacjami. Są one samowystarczalne i odizolowane od głównego systemu. Co ważne, tworząc dla nich odrębną sieć, kontenery są również odizolowane od samych siebie. Dzięki czemu możemy testować i używać niezliczoną ilość aplikacji, na tym samym hoście. Prezentowany sposób zapewnia łatwe i spójne wdrażanie aplikacji do przeróżnych środowisk jak na przykład produkcyjne.
Dzięki prezentowanym możliwościom administratorzy korzystający z dockera tworzą bardzo spójne oraz przewidywane środowiska dla aplikacji. W związku z tym, że są one uruchamiane w kontenerach, wystarczy, aby na hoście zainstalowany był tylko docker, a aplikacja będzie zachowywała się identycznie. Dlatego nie ma znaczenia czy uruchamiasz kontener w systemie Windows, Linux czy MacOS uruchomi się ona w identyczny sposób.
Innym powodem przemawiającym za użyciem dockera w przypadku aplikacji o dość sporym ruchu jest możliwość łatwego wdrożenia dodatkowych kontenerów. W ten sposób dostosowujemy naszą aplikację do wymogów związanych z nasilonym w tym wypadku ruchem.
Platforma magazynująca
Sama możliwość tworzenia obrazów dla aplikacji jest ogromnym ułatwieniem dla administratora. Znasz już działanie kontenera oraz co on zawiera. Natomiast wiedz jeszcze, że istnieją platformy, na których takie obrazy możesz umieszczać, a następnie pobierać. Dlatego dostęp do nich przekazujesz przy pomocy jednego polecenia. Jednym z najbardziej znanych platform służącym temu celowi jest Docker Hub.
Bardzo przydatna okazuje się możliwość pobierania obrazów innych użytkowników. Dzięki temu możesz wykorzystać pracę innych w swoich poczynaniach. Nie zawsze musisz tworzyć obraz. Może się okazać, że taki już istnieje i jedynie co Tobie pozostaje, to pobranie go i uruchomienie.
Dobrym przykładem takiego wykorzystania zasobów, jest sytuacja, gdy potrzebujemy serwera WWW i bazy danych. Jeżeli skorzystamy z dockera jako administrator, powinniśmy utworzyć dwa kontenery. Pierwszy będzie naszym serwerem, natomiast drugi bazą danych. Do tego celu nie tworzymy nowych obrazów, tylko pobieramy gotowe spełniające nasze potrzeby.
Aplikacje z wieloma kontenerami
Dodatkiem przy tworzeniu aplikacji składających się z kilku kontenerów jest Docker Compose. Pozwoli on na kompleksowe stworzenie i dalsze wykorzystanie, w tym wypadku serwera, z niezbędnymi komponentami i konfiguracją. Co więcej, stosując się do tej zasady, możemy na jednym hoście stworzyć kilka takich usług. Będą one posiadały, więcej niż jeden kontener. Dlatego, jeżeli chcemy, to możemy uruchomić zarówno wspomniany przed chwilą serwer, jak i naszą aplikację. Jeżeli skorzystamy z Docker Compose i dwóch oddzielnych plików, to serwer, jak i aplikacja, będą dwiema oddzielnymi instancjami, niewiedzącymi o swoim istnieniu. Przyczyną tego jest możliwość tworzenia własnych sieci, a jeżeli używamy Docker Compose, automatycznie takie są generowane. Kilka serwisów na jednym hoście jest możliwe dzięki kontenerom o minimalnej zawartości oprogramowania. Zmniejsza to zużycie zasobów, dlatego kontenery są określane jako bardziej wydajniejsze, niż maszyny wirtualne.
Klastry
Innym rozwiązaniem problemu ze zwiększonymi zasobami aplikacji może okazać się Docker Swarm. Wykorzystuje się go do zarządzania klastrami węzłów, które są pojedynczymi hostami. Na każdym z takich hostów uruchomione są kontenery dockera. Dzięki temu administrator w łatwy sposób, może tworzyć nowe oraz nimi zarządzać. Dzięki dodawaniu nowych węzłów do klastra jesteśmy w stanie zaopatrzyć uruchomioną aplikację w niezbędne zasoby, potrzebne do jej funkcjonowania. Posiada on funkcje automatycznego skalowania kontenerów, które są dodawane do klastra na zasadzie zdefiniowanych reguł, czy też warunków. Dlatego administratorzy mogą zorganizować sobie środowisko, w które nie będą musieli ingerować ręcznie.
Docker posiada wiele narzędzi oraz funkcji, które służą do zarządzania oraz skalowania kontenerów. Do takich możemy zaliczyć na przykład Docker Engine, dzięki któremu uruchamiamy omawiany przed chwilą Docker Swarm. Jak i również Docker Compose. Dzięki nim w łatwy oraz przewidywany sposób jesteśmy w stanie zarządzać aplikacjami. Natomiast istotną możliwością okazuje się łatwość wprowadzania aktualizacji oraz zmian w sposób zautomatyzowany i kontrolowany. Dzięki takiemu rozwiązaniu redukujemy liczbę błędów i poprawiamy wydajność aplikacji. Wynikają z tego następstwa braku konieczności wykonywania wielu czynności ręcznie. W związku, z tym zmniejszone jest ryzyko niespójności lub błędów w trakcie wdrażania aplikacji i zarządzania nimi.
Dzięki wykorzystaniu wspomnianego Docker Compose administrator może zdefiniować odpowiednie kontenery. Następnie definicje tam ujęte udostępnić innym administratorom, do modyfikacji na własne potrzeby lub do ponownego użycia. Dzięki temu nakład pracy zmniejsza się do minimum, a sama modyfikacja dość często polega, na dopisaniu lub zamianie kilku linii.
Innym dobrym połączeniem okazuje się możliwość zdefiniowania kontenerów przy pomocy Docker Compose w klastrach Docker Swarm. Dzięki temu otrzymujemy możliwość łatwego skalowania aplikacji poprzez dodawanie nowych kontenerów w razie rozrostu aplikacji.
Docker dla administratora – zarządzanie zasobami
Docker posiada wbudowane narzędzia służące do alokacji zasobów. Dzięki nim administratorzy mogą przydzielać i zarządzać wartościami takimi jak procesor i pamięć. W ten sposób upewniamy się, że pomiędzy uruchomionymi kontenerami, nie będzie występowała rywalizacja o zasoby. Ze względu na maksymalne wartości, jakie zostały im przydzielone. Wprowadzając wspomnianą konfigurację, upewniamy się, że są one efektywnie zarządzane.
Jak wspomniałem, w tych działaniach wspiera nas docker. Narzędzia, w które jest wyposażony, służą do rejestrowania i monitorowania wydajności kontenerów. W tych dwóch czynnościach wspiera nas przy pomocy poleceń Docker Logs i Docker Stats. Dzięki nim mamy możliwość śledzenia i monitorowania wydajności kontenerów, jak i również wykorzystania procesora, pamięci czy też ruchu sieciowego. Pomaga to identyfikować problemy oraz błędy w kontenerach. Dzięki takim informacjom możemy wprowadzać niezbędne poprawki w celu zapewnienia płynnego i niezawodnego działania.
Sieci i bezpieczeństwo kontenerów
Tak jak zaprezentowałem to do tej pory, istnieje bardzo dużo wbudowanych funkcji, które ułatwiają lub wspomagają naszą pracę. Poznaliśmy już funkcje do monitoringu kontenerów, dzięki którym zapewnimy stały nadzór nad tym, co się w nich dzieje. Jednak pozostał jeszcze jeden bardzo ważny punkt. A mianowicie piszę tutaj o sieciach oraz bezpieczeństwie. Mogłeś już przeczytać, że dzięki możliwości tworzenia własnych sieci izolujemy kontenery od naszej głównej i od naszego hosta. W ten sam sposób możemy uniemożliwić im komunikację między sobą, rozmieszczając je w inne sieci. Takie rozwiązanie ma bardzo ogromną zaletę. To, co zostanie uruchomione w kontenerze, w nim pozostaje. Dlatego, jeżeli jest to złośliwe oprogramowanie, jego zasięg obejmuje tylko określone przez nas zasoby. Takie podejście blokuje możliwość dostępu do poufnych danych lub zasobów systemowych, jak i również blokuje możliwość ich modyfikacji. Do opisywanego celu korzystamy z takich narzędzi jak Docker Network, Docker Port, czy też Docker Service.
Docker dla administratora – dlaczego powinieneś z niego korzystać
Wszystko, co do tej pory przeczytałeś, możemy sprowadzić do pięciu punktów. W nich wymieniam najważniejsze powody, dla których administrator systemowy powinien używać dockera.
- Docker umożliwia łatwe wdrożenie i zarządzanie aplikacjami w jeden spójny, przewidywany sposób. Dzięki temu unikamy wielu błędów, przez co możemy poprawić wydajność i skupić się na innych czynnościach.
- Docker tworzy lekkie, izolowane środowisko, w którym uruchamia aplikację. Dzięki temu zyskujemy większe bezpieczeństwo oraz zmniejszamy zużycie zasobów.
- Docker jest mocno skalowalny, dlatego administrator uzyskuje narzędzie, dzięki któremu w bardzo szybki sposób, jest w stanie stworzyć nowe kontenery w celu zaspokojenia rosnących potrzeb.
- Docker posiada szereg gotowych narzędzi i funkcji, dzięki którym możesz monitorować, tworzyć własne sieci czy też odpowiednio przydzielać pamięć.
- Wszystko, co stworzysz w dockerze, możesz łatwo udostępnić. W związku z tym ułatwia on współpracę z innymi współpracownikami czy też z ogólnie rozumianą społecznością. W ten prosty sposób przyspieszysz rozwój oraz polepszysz jakość aplikacji.
W tych kilku punktach umieściłem w skrócie wszystkie funkcje dockera, jakie przydadzą się, moim zdaniem administratorowi systemowemu. Natomiast wytłumaczenie każdego z nich znajduje się w całym artykule.
Podsumowanie – docker dla administratora
W tym materiale chciałem pokazać wszystko, co uważam, za wartościowe dla osoby pracujący jako administrator systemowy. Mam nadzieję, że tym zachęcę was do korzystania z dockera oraz zapoznanie się z nim w bardziej techniczny sposób. Niebawem na naszej platformie udostępnimy szkolenie z dockera przeznaczone dla administratora systemowego. Jeżeli jesteś zainteresowany tym zagadnieniem, kliknij tutaj.
Zainteresował Cię temat Docker dla administratora? Mamy więcej artykułów na temat dockera!