Szukałem różnych nowinek ze świata dockera. Spotkałem się z różnymi postami, jak i komentarzami na różnych portalach, czy też forach dyskusyjnych. Autorzy tych komentarzy nie rozumieli w jaki sposób docker może pomóc im w codziennej pracy. A także tego, że korzystając z niego można znacznie obniżyć koszty. W związku z tym postanowiłem napisać artykuł, w którym opiszę 9 powodów, dla których warto używać dockera.
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/
Docker dla każdego
Prostota użycia dockera pozwala na to, że osoba bez doświadczenia jest w stanie pojąć tą niesłusznie określaną ciężką technologię. Dzięki dockerowi, przy pomocy kilku poleceń jesteśmy w stanie uruchomić różne projekty. Posiadając przygotowany plik docker-compose.yml lub w nowszej wersji compose.yml uruchomić przy pomocy jednego polecenia bardzo złożoną aplikację. A nawet zainstalować własny serwer mailowy.
Przykładem tego może być Mailu(https://mailu.io/1.9/), który posiada swój własny generator plików dockerowych znajdujący się pod adresem https://setup.mailu.io/1.9/. Przy pomocy kilku ustawień tworzony jest plik docker-compose.yml, przy pomocy którego używając jednego polecenia jesteś w stanie uruchomić swój własny serwer mailowy.
Brzmi zachęcająco?
Minimalne wykorzystanie zasobów systemowych
Kontenery dockera posiadają zainstalowane tylko niezbędne oprogramowanie do uruchomienia naszej aplikacji. W związku z tym, wymagają znacznie mniejszej ilości zasobów. Dlatego też, w porównaniu z maszynami wirtualnymi, czas uruchomienia oraz zamykania jest o wiele mniejszy.
Ogromna ilość obrazów przy użyciu jednego kliknięcia
Obrazy można rozumieć jako systemy bazowe, które wykorzystujemy do uruchomienia naszej aplikacji. W dockerze mamy dostęp prawie do każdej dystrybucji linuksowej. Wystarczy użyć jednego polecenia i obraz jest automatycznie pobierany. Niemniej jednak, możemy stworzyć własny z zainstalowaną i skonfigurowaną aplikacją. Jest to o tyle istotne, gdyż z takiego obrazu może powstać nieograniczona ilość kontenerów. Dlatego, jeżeli chcemy zainstalować aplikację na kilku różnych serwerach, wystarczy że posłużymy się jednym lub dwoma poleceniami. Nie musimy wykonywać wszystkiego ręcznie. Dzięki temu oszczędzamy czas na instalacji oraz konfiguracji.
Wdrażanie aplikacji niezależnie od systemu operacyjnego
Jak wspomniałem w poprzednim paragrafie, instalując dockera otrzymujesz dostęp do niezliczonej ilości obrazów z systemami bazowymi. W związku z tym, twoja aplikacja staje się niezależna od platformy. Możesz ją zainstalować na serwerze nawet opartym o Windows, a aplikację uruchomić w kontenerze z zainstalowanym Linuksem.
Łatwe zarządzanie zależnościami
Jeżeli chodzi o zależności, docker jest idealny w przypadku, gdy chcemy uruchomić kilka instancji tej samej aplikacji, opartych o różne bazy danych.
Zwróć uwagę, że możesz nie używać dockera i zainstalować przykładowo aplikację Laravel, która będzie korzystała z bazy danych MySQL. Wszystko zadziała, ale co w przypadku gdy będziesz chciał, aby ta sama aplikacja działała na tym samym serwerze, ale używając innego rodzaju bazy? Wtedy powstaje konflikt i musisz odinstalowujesz istniejącą, a zainstalować wymaganą. Niesie to za sobą sporo konfiguracji, która na pewno zajmie dużo czasu.
Natomiast, gdy użyjesz dockera to możesz korzystać z różnego rodzaju baz jednocześnie. Jedyne co robisz, to w pliku konfiguracyjnym zmieniasz rodzaj bazy oraz pozostałe dyrektywy odpowiednie do wybranej. W ten sposób jednocześnie możesz mieć kilka różnych instancji aplikacji niezależnych od oprogramowania.
Przenośność i wykorzystanie w odległych miejscach
Sumując kilka poprzednich paragrafów możemy potwierdzić, że jeżeli stworzymy obraz z gotową aplikacją i udostępnimy ją przy pomocy dockerhub to uzyskamy do niej łatwy dostęp z każdego zakątka świata. Czyli korzystając z kilku poleceń jesteśmy w stanie uruchomić aplikację z najmniejszą możliwą poświęconą ilością czasu. Obraz mamy skonfigurowany, w związku z tym my go tylko uruchamiamy. To właśnie w tym miejscu powstaje ogromna różnica pomiędzy dockerem, a maszynami wirtualnymi. Pomimo swojej funkcjonalności wymagałyby poświęcenia sporej ilości czasu na konfigurację.
Izolowane środowisko
Choć temat izolacji powinien być poruszony jako pierwszy, to jednak opisuję to zagadnienie dopiero teraz. Jak wspominałem na początku tego artykułu, powstał on dzięki moim ostatnim poszukiwaniom nowinek związanych z dockerem. Niektórzy, chcąc przekonać do dockera jako swój pierwszy argument podawali właśnie to. Z tego co zauważyłem, to w wielu przypadkach nie odnosił on zamierzonego skutku. Dlatego postanowiłem opisać go w jednym z końcowych punktów.
Oczywiście nie przeczę jest to bardzo ważny jak i możliwe, że jeden z najważniejszych argumentów przemawiający za korzystaniem z dockera. Otóż, ta izolacja daje naprawdę bardzo ogromne pole manewru. Dzięki niej jesteśmy w stanie uruchomić kilka instancji tej samej aplikacji z różnymi konfiguracjami. Można to porównać do tego, co pisałem o zależnościach parę paragrafów wcześniej. Działa na podobnej zasadzie, lecz tym razem nie wspominam o zależności, a o innej konfiguracji aplikacji.
Ważnym aspektem izolacji jest to, że wspomniana konfiguracja w danym kontenerze w żaden sposób nie wpływa na działanie serwera, czy też innych kontenerów. Ma tylko dostęp do przydzielonych zasobów dzięki czemu ograniczamy możliwość wystąpienia tak zwanego przestoju.
Warto jeszcze wspomnieć o łatwości usunięcia takiego kontenera, czy też obrazu. Robimy to przy pomocy jednego polecenia, co znacznie skraca czas jaki musimy poświęcić na wykonanie takich czynności. Usuwając kontener usuwamy wszystko co było z nim związane (nie wliczając w to obrazu), dlatego też nie musimy martwić się o pozostawione pliki tymczasowe.
Bezpieczeństwo
Nadeszła pora, abyśmy poruszyli temat bezpieczeństwa. Docker został zaprojektowany pod tym względem bardzo dobrze i spełnia wszelkie wymagania w tym zakresie. Oczywiście, nie możemy spocząć na laurach, ponieważ nawet system z najlepszymi zabezpieczeniami nieodpowiednio skonfigurowany jest narażony na niebezpieczeństwo. Dlatego zawsze powinniśmy pamiętać o zasadzie, że to co dzisiaj uważane jest za barierę nie do przejścia, jutro może już taką nie być.
Natomiast wszystko co robimy w dockerze jest uruchamiane w pojemniku, dlatego z reguły jest uznawane za bezpieczne. Docker izoluje kontenery od siebie, jak i również od głównego hosta. Jedyny sposób w jaki kontenery mogą się z sobą komunikować to, gdy otrzymają od nas takie uprawnienia. Natomiast ważna sprawą jest to, że to my określamy dostęp do zasobów, dlatego mamy pełną kontrolę nad tym gdzie dotrzeć może, a o czym nie ma pojęcia.
Jednym z błędów jakie można popełnić w zakresie bezpieczeństwa, to poleganie tylko i wyłącznie na standardowych mechanizmach. Docker posiada wiele narzędzi, które można zastosować w celu zwiększenia bezpieczeństwa. Natomiast standardowy system zabezpieczeń, jeżeli ma odpowiednio przydzielone zasoby i dostęp, uruchamia nasz kontener tak, jakby był to główny system operacyjny bez możliwości dostępu do głównego hosta. Dlatego też, jeżeli zabezpieczenia zostaną złamane, to haker uzyskuje tylko dostęp do kontenera, a nie serwera.
Niskie koszty
W związku z niskimi wymaganiami, elastyczności pod względem możliwości uruchamiania tej samej aplikacji z różnymi konfiguracjami na tym samym hoście, czy też czynnościami jakich musimy się podjąć, aby uruchomić naszą aplikacje, możemy mówić o bardzo dużej oszczędności. Nie musimy korzystać z kilku VPSów. Możemy wybrać jeden, z odpowiednią ilością zasobów dostosowany do naszych potrzeb i instalować na nim kilka aplikacji. Nie potrzebujemy również takiego nakładu pracy, jaki musielibyśmy poświęcić, gdybyśmy musieli instalować wszystko ręcznie na każdym z serwerów. Dlatego używając dockera jesteśmy w stanie zaoszczędzić na zasobach sprzętowych, zasobach czasowych i zasobach ludzkich, czyli na tym co najwięcej kosztuje.
Docker – podsumowanie
Umieściłem tutaj kilka najważniejszych punktów, dla których warto korzystać z dockera. Starałem się wybrać takie które będą czytelne dla osoby chcącej rozpocząć swoją przygodę z dockerem. Mam nadzieję, że chociaż w małym stopniu udało mi się przekonać do tego, bo moim zdaniem naprawdę warto.
Chcesz wiedzieć więcej o dockerze? Możesz dołączyć do naszego kursu – szczegóły tutaj! Możesz także przeczytać nasze wpisy blogowe – tutaj!