Kontenery i ich ewolucja

Kontenery i ich ewolucja

Choć może się to wydawać niemożliwe, tak naprawdę konteneryzacja jest bardzo starą technologią, z której korzysta się od kilku dekad. Nie jest natomiast prawdą, że kontenery opracowano w 2013 roku wraz z wydaniem Dockera. Jednak należy przyznać, że to dzięki Dockerowi w obecnej chwili konteneryzacja jest tak powszechnie wykorzystywana. Dzięki ogromnemu rozwojowi tej platformy i Kubernetesa konteneryzacja w obecnej chwili jest powszechna. Używana nie tylko przez programistów, ale również innych specjalistów związanych z IT jak na przykład administratorzy systemowi. Jednak nim do tego doszło, konteneryzacja przeszła swoją tak zwaną ewolucję.

W tym materiale chciałbym zająć się właśnie tą ewolucją. W pewnym sensie opowiem coś w rodzaju historii konteneryzacji. Dlatego bez dłuższego wstępu przystępuję do rzeczy.

 

Zapraszamy na darmowe szkolenie "Grafana dla początkujących".

Widzimy się 17 października o 13:00! . Zapisz się: https://asdevops.pl/s43/

 

Kontenery – początki, chroot

Chroot to narzędzie, które było częścią systemu Unix. Odegrało ono znaczącą rolę w rozwoju technologii konteneryzacji. Wprowadzono je po raz pierwszy w latach 70 dwudziestego wieku, a dokładniej w 1979 roku. Umożliwia ono użytkownikom tworzenie osobnego środowiska w tym samym systemie plików. Dzięki temu istniała możliwość uruchomienia aplikacji w tak zwanej piaskownicy, która była odizolowana od reszty systemu.

Narzędzie chroot tworzy nowy katalog główny, zwany sandboxem zawierający tylko pliki niezbędne do działania aplikacji. Ten sandbox jest całkowicie oddzielnym środowiskiem od głównego systemu plików. Aplikacja w nim działająca nie ma dostępu do plików ani zasobów poza nim. Zapewnia to poziom izolacji i bezpieczeństwa, który nie był dostępny w innych narzędziach.

Chociaż chroot nie zaprojektowano jako narzędzia do konteneryzacji, stał się podwaliną pod tą technologię. Zapoczątkował sposób izolowania aplikacji od reszty systemu. To z tej technologii korzystają w dzisiejszych czasach Docker i Kubernetes wzbogacając ją o bardziej zaawansowane funkcje do zarządzania i wdrażania aplikacji kontenerowych. Dlatego chroot możemy określić jako narzędzie kluczowe dla konteneryzacji, które zapoczątkowało powstanie takich rozwiązań jak te przed chwilą wymienione.

Jails

Kolejnym narzędziem, które znacząco wpłynęło na powstanie technologii konteneryzacji, jest Jails. Opracowane zostało przez FreeBSD, jako technika wirtualizacji na poziomie systemu operacyjnego. Pozwala ona na tworzenie izolowanych środowisk w ramach jednego systemu operacyjnego hosta. Pierwszą wersję Jails wprowadzono do systemu FreeBSD w wersji 4.0, wydanej w 2000 roku.

Jails umożliwia tworzenie środowiska wirtualnego, które jest oddzielone od systemu hosta, z własnym systemem plików, procesami i stosem sieciowym. Brzmi znajomo? To wirtualne środowisko wykorzystuje się do uruchamiania aplikacji lub usług w sposób odizolowany od reszty systemu, zapewniając stopień bezpieczeństwa i elastyczności niedostępny przy tradycyjnych metodach wdrażania oprogramowania.

Jails można określić jako ulepszony chroot, ponieważ dodatkowo wykorzystuje przestrzeń nazw w celu stworzenia środowiska oddzielonego od systemu hosta. Pozwala to na stworzenie środowiska typu sandbox, z własnym zestawem zasobów i uprawnień.

Chyba nie muszę dodawać, że to właśnie ta koncepcja izolacji i wirtualizacji została rozwinięta i rozszerzona w celu stworzenia takich narzędzi jak Docker i Kubernetes. Opierają się one na zasadach Jails, wykorzystując podobne techniki do tworzenia lekkich, przenośnych kontenerów, które można łatwo wdrożyć i zarządzać. Jails był kluczowym narzędziem w rozwoju konteneryzacji, dając podstawę do rozwoju Dockera czy też Kubernetesa. Jails położył podwaliny pod elastyczne i bezpieczne wdrażanie aplikacji, które obserwujemy dzisiaj.

Kontenery Solarisa

Kontenery Solarisa, to technologia wirtualizacji, która wniosła znaczący wkład w rozwój konteneryzacji. Została opracowana przez Sun Microsystems, obecnie Oracle Corporation. Pierwszy raz wdrożono je w systemie operacyjnym Solaris 10 w 2005 roku.

Umożliwiają one tworzenie izolowanych i lekkich środowisk wirtualnych w ramach jednego systemu operacyjnego hosta. Każdy kontener ma własny system plików, stos sieciowy i przestrzeń. Dzięki nim zapewniają poziom izolacji i bezpieczeństwa podobny do poziomu tradycyjnej maszyny wirtualnej, ale przy znacznie niższych kosztach.

Jedną z kluczowych cech kontenerów Solarisa jest możliwość kontrolowania alokacji i wykorzystania zasobów na bardzo szczegółowym poziomie. Pozwala to administratorom systemu na przydzielanie zasobów procesora, pamięci i przepustowości sieci do poszczególnych kontenerów. Zapewniając każdej aplikacji lub usłudze dostęp do zasobów potrzebnych do efektywnego działania.

Ponownie, brzmi znajomo?

Inną ważną cechą Solaris Containers jest możliwość migracji kontenerów między fizycznymi hostami. Umożliwia to przenoszenie obciążeń między serwerami bez przestojów.

Zarówno jedna, jak i druga funkcja zostały wykorzystane i rozwinięta w Dockerze i Kubernetesie.

LXC – Linux Containers – Kontenery Linuksa

LXC (Linux Containers) to technologia wirtualizacji, która jako kolejna wniosła swój wkład w rozwój konteneryzacji. Została opracowana przez firmę Canonical, odpowiedzialną za Ubuntu. Pierwsze wydanie miało miejsce w 2008 roku.

Celem tej technologii było stworzenie lekkiego rozwiązania do wirtualizacji, które umożliwi uruchomienie wielu izolowanych systemów Linux w jednym systemie operacyjnym hosta jako kontenery.

LXC wykorzystuje funkcje jądra Linuksa, takie jak cgroups i przestrzenie systemów do tworzenia kontenerów, które są odizolowane od siebie i od systemu hosta, ale które są częścią samego jądra. To sprawia, że LXC jest bardzo lekkim i skutecznym procesem do wirtualizacji.

LXC ma możliwość tworzenia kontenerów i zarządzania nimi z wiersza poleceń co znacznie ułatwia tworzenie i wdrażanie aplikacji kontenerowych. Niemniej jednak to narzędzie posiada jeszcze inne funkcje takie jak możliwość dołączania urządzeń blokowych i interfejsów sieciowych do kontenerów czy też możliwość konfigurowania limitów zasobów dla poszczególnych kontenerów.

LXC stał się szeroko stosowany w społecznościach Linuksa i obecnie obsługuje wiele dystrybucji Linuksa. Do tych najbardziej popularnych możemy zaliczyć Ubuntu, Debian i Fedora. I na końcu używa się go również w Dockerze pod względem możliwości wykorzystania funkcji jądra Linuksa w celu włączenia wielu funkcji.

Docker

Docker to platforma do konteneryzacji, która opiera się na pomysłach i technologiach zapoczątkowanych przez wcześniej opisywane narzędzia. Opracowany przez Docker, Inc. i wydany w 2013 roku Docker umożliwia programistom i administratorom systemu tworzenie, wdrażanie oraz zarządzanie kontenerami w prosty i elastyczny sposób, o czym już niejednokrotnie pisałem i na pewno jeszcze napiszę.

W swej istocie Docker opiera się na koncepcji konteneryzacji, która polega na spakowaniu aplikacji i wszystkich jej zależności w jedną, samodzielną jednostkę. Jednak Docker idzie o krok dalej, udostępniając zestaw narzędzi i usług, które ułatwiają budowanie, wdrażanie i uruchamianie kontenerów na ogromną skalę.

Jedną z kluczowych cech Dockera jest możliwość wykorzystania obrazów, które są zasadniczo planami tworzenia kontenerów. Obrazy tej platformy obejmują wszystko, co jest potrzebne do uruchomienia aplikacji lub usługi, od systemu operacyjnego i środowiska uruchomieniowego po kod i dane aplikacji. Ułatwia to wdrażanie i uruchamianie kontenerów w dowolnym środowisku, od lokalnych maszyn programistycznych po serwery produkcyjne.

Innym ważnym elementem Dockera są pliki Dockerfile, które możemy określić jako skrypty opisujące, jak zbudować obraz. Ułatwiają one automatyzację tworzenia i wdrażania obrazów Dockera, zapewniając spójność i ich powtórne wykorzystanie w różnych środowiskach.

Docker zapewnia również szereg narzędzi i usług, które ułatwiają zarządzanie kontenerami na dużą skalę. Te i inne możliwości Dockera poznać możesz z wielu artykułów na naszym blogu, jak i z naszego szkolenia .

Docker zrewolucjonizował sposób, w jaki programiści i administratorzy systemu myślą o wirtualizacji i konteneryzacji. Łatwy w obsłudze interfejs i elastyczna architektura sprawiły, że jest to jedna z najpopularniejszych obecnie używanych platform do konteneryzacji. Opierając się na pomysłach i technologiach zapoczątkowanych przez wcześniejsze narzędzia, pomógł uczynić konteneryzację kluczową technologią dla tworzenia i wdrażania nowoczesnych aplikacji.

Kubernetes

Kubernetes to platforma orkiestracji kontenerów, która opiera się na pomysłach i technologiach zapoczątkowanych przez wcześniejsze narzędzia do wirtualizacji, takie jak Chroot, Jails, Kontenery Solarisa, LXC i Docker. Został pierwotnie opracowany przez Google w 2014 r. Następnie udostępniony jako narzędzie open source pod nadzorem Cloud Native Computing Foundation (CNCF) w 2015 r.

Do podstawowych funkcji tego narzędzia należy wsparcie w zarządzaniu dużą liczbą kontenerów na wielu hostach. Ułatwia to wdrażanie i skalowanie aplikacji szczególnie w dynamicznie zmieniającym się środowisku.

Jedną z kluczowych cech Kubernetes jest wykorzystanie Podów, które są zasadniczo najmniejszymi możliwymi do wdrożenia jednostkami w klastrze Kubernetesa. Pody służą do grupowania kontenerów i udostępniania im wspólnego środowiska, ułatwiając zarządzanie aplikacjami i usługami znajdującymi się w kontenerach oraz ich skalowanie.

Kubernetes zapewnia również szereg narzędzi i usług, które ułatwiają zarządzanie podami i w nich znajdującymi się kontenerami. Obejmuje to narzędzia do zarządzania siecią kontenerów, pamięcią masową i bezpieczeństwem. A także narzędzia do monitorowania i rejestrowania wydajności i aktywności kontenerów.

Kubernetes, choć młodszy od Dockera również przyczynił się do rewolucji związanej z kontenerami, a w jego przypadku do ich orkiestracji. Jak i w przypadku Dockera jest on najpopularniejszą platformą do tego przeznaczoną. Opierając się na pomysłach i technologiach zapoczątkowanych przez wcześniejsze narzędzia do wirtualizacji, Kubernetes pomógł uczynić konteneryzację kluczową technologią dla tworzenia i wdrażania nowoczesnych aplikacji.

Przyszłość konteneryzacji

Zgodnie z danymi statystycznymi Stack OverFlow znajdującymi się pod adresem https://survey.stackoverflow.co/2022/#most-popular-technologies-tools-tech-prof Docker jest kluczowym narzędziem zajmującym pierwsze lub drugie miejsce. W związku z tym warto jest zapoznać się, z tą technologią, na którą moda nie mija. Porównując wyniki z 2021, do wskazanych (https://insights.stackoverflow.com/survey/2021#most-popular-technologies-tools-tech) wykorzystanie Dockera wzrosło na przestrzeni jednego roku o około 15%. Zgodnie z perspektywami wzrośnie jeszcze bardziej.

Podsumowanie – Kontenery i ich ewolucja

Konteneryzacji używa się od wielu lat, tylko w dużej mierze nie byliśmy tego świadomi. Technologia, z jakiej korzysta Docker, korzysta oraz rozwija technologie, które od lat wykorzystywały inne narzędzia. Można by powiedzieć, że zebrało wszystko to, co najlepsze z nich i stworzyło coś o ogromnym potencjale. O tym, jak ważny jest Docker, świadczą również statystyki. Wspomniany wzrost 15% względem roku 2021 oznacza, że zapotrzebowanie na Dockera ciągle wzrasta i będzie dalej wzrastało.

Chcesz wiedzieć więcej na temat konteneryzacji? Przeczytaj nasze artykuły, a także weź udział w kursach!

 

Trwa przedsprzedaż kursu "Homelab - Wejdź do IT"!

To jedyne takie szkolenie! Pierwsze na polskim rynku praktyczne szkolenie, dzięki któremu zdobędziesz wiedzę i praktykę w tworzeniu własnego homelaba! Pierwszy moduł wystartuje już 14 listopada!

Chcesz wziąć udział w szkoleniu? Zapisy na stronie: https://asdevops.pl/homelab/

 

 

 

 

Bezpłatne szkolenie "Grafana dla Początkujących"! Widzimy się 17 października o 13:00!

X