Dlaczego warto używać kontenerów i narzędzi do konteneryzacji? Silniki kontenerowe

Paulina Cirocka 02 sierpnia 2022 5 min czytania
Contents

Konteneryzacja była z pewnością ogromnym kamieniem milowym w rozwoju oprogramowania. Kontenery zapewniają stabilność, precyzję i wydajność w wielu projektach IT, ale jednocześnie wymagają specjalistycznych narzędzi. W drugim artykule z serii o najważniejszych narzędziach DevOps przedstawimy narzędzia typu container engines (silniki kontenerowe).

Początki konteneryzacji sięgają roku 1979, kiedy w systemie Unix wprowadzono operację chroot. Chroot zmieniał widoczny katalog główny dla aktualnie uruchomionego procesu oraz procesów z nim powiązanych. Dzięki temu deweloperzy mogli izolować bezpieczne środowisko, w którym procesy działały niezależnie od reszty systemu. W XXI wieku funkcja ta została rozwinięta w polecenie jail, a w kolejnej dekadzie przekształciła się z prostej funkcji w zaawansowany system inspirowany logistyką — znany dziś jako konteneryzacja i usługi kontenerowe.

Kontenery — dlaczego warto ich używać?

Jak wspomniano w naszym poprzednim artykule o narzędziach do orkiestracji kontenerów, kontenery to pakiety oprogramowania zawierające wszystkie niezbędne elementy do uruchomienia aplikacji. Dzięki nim automatyzacja tworzenia i testowania oprogramowania jest szybsza i prostsza. Co więcej, kontenery są wielokrotnego użytku i nie wymagają dużych zasobów – jak np. oddzielne systemy operacyjne czy jądra. Do głównych zalet kontenerów można także zaliczyć mobilność i skalowalność.

Czy to oznacza, że konteneryzacja to jedyna słuszna przyszłość IT? Niekoniecznie.

Kontenery zapewniają lepsze bezpieczeństwo, ale wymagają specjalistycznej wiedzy na temat konfiguracji systemu. Poza tym, jeśli oprogramowanie działa tylko lokalnie jako pojedynczy plik binarny, może być bardziej praktyczne uruchamianie go bez użycia kontenerów.

LXC/LXD

LXC (Linux Containers) to środowisko kontenerowe stworzone z myślą o systemach opartych na jądrze Linux. Jest szybkie, przyjazne dla użytkownika i łatwe do wdrożenia. LXC pozwala kontrolować środowisko wirtualne przy użyciu narzędzi działających w przestrzeni użytkownika (userspace) w ramach tego samego systemu operacyjnego, co obniża koszty. Do głównych zalet tego silnika kontenerowego należą: prostota, wbudowane wsparcie dla polityk bezpieczeństwa Linuksa oraz możliwość działania na niemal każdej architekturze. Wadą jest natomiast zależność od jądra hosta — LXC działa tylko na systemach Linux.

LXC logo

LXD to następna generacja, rozszerzenie LXC, które usprawnia zarządzanie maszynami wirtualnymi. Wykorzystuje REST API do komunikacji z jednym z komponentów LXC — biblioteką liblxc. Wszystkim zarządza się za pomocą prostego narzędzia CLI, co czyni LXD bardziej intuicyjnym i przyjaznym. Ponadto oferuje zarządzanie masową pamięcią, elastyczne sieci dla zespołów operacyjnych i lepszą konfigurację kontenerów. Tak samo jak LXC, działa tylko na systemach Linux.

LXD logo

Docker

Docker został stworzony w 2011 roku i zaprezentowany w 2013 podczas konferencji PyCon w Santa Clara. Dzięki temu systemowi deweloperzy mogą łatwo oddzielić aplikacje konteneryzowane od infrastruktury. Każdy kontener jest niezależny, więc wiele kontenerów z jednego serwera może działać jednocześnie. Redukuje to opóźnienia i przyspiesza cały proces wdrażania, testowania i dostarczania aplikacji.

Docker logo

W ekosystemie Docker dostępne są dwa narzędzia wykorzystywane przez inżynierów DevOps: Docker Compose oraz Docker Swarm. Docker Compose pozwala konfigurować wiele kontenerów na jednym hoście, natomiast Docker Swarm umożliwia ten sam proces na wielu hostach, zapewniając wyższą dostępność aplikacji. Docker Swarm jest szczególnie przydatny przy zarządzaniu kontenerami, co opisaliśmy w poprzednim artykule.

Do najczęściej wymienianych zalet Docker Compose należą: definiowanie wielu kontenerów w jednym pliku, szybkie uruchamianie środowisk developerskich, łatwe łączenie kontenerów i prosta konfiguracja w YAML. Ograniczenia to m.in. konieczność ręcznej instalacji i aktualizacji, przechowywanie danych wewnątrz kontenera (co oznacza potrzebę tworzenia backupu i odzyskiwania danych po awarii), brak dostępu do pakietów yum/apt.

Docker compose logo

Rocket (rkt)

Wprowadzony przez CoreOS w grudniu 2014 roku rkt to silnik kontenerowy zaprojektowany z myślą o nowoczesnych rozwiązaniach typu cloud-native. Podstawową jednostką rkt są pody — grupy jednej lub więcej aplikacji konteneryzowanych działających w wspólnym kontekście (podobnie jak w systemie orkiestracji Kubernetes). Architektura rkt zapewnia nowoczesny, standardowy format kontenerów, w którym każdy pod działa bezpośrednio w klasycznym modelu procesów Unix.

Do głównych zalet należą:

  • łatwa integracja (rkt współpracuje z systemami init, skryptami i złożonymi pipeline’ami DevOps),
  • konfigurowalna izolacja (pluggable runtime architecture zapewniająca odpowiedni poziom izolacji),
  • mniejszy narzut systemowy w porównaniu np. z Dockerem.
RKT logo

Open Container Initiative (OCI)

Utworzona przez Docker i innych liderów branży konteneryzacji w czerwcu 2015 roku, OCI to otwarty system zarządzania z dwiema specyfikacjami:

  • Runtime Specification (runtime-spec) — opisuje, jak uruchomić rozpakowany zestaw systemów plików,
  • Image Specification (image-spec) — odpowiada za format archiwum obrazów kontenerów OCI.

Celem OCI jest stworzenie interoperacyjnych narzędzi do budowania, transportowania i przygotowywania obrazu kontenera do uruchomienia.

OCI logo
containers containerization devopstools docker
paulina.webp
Paulina Cirocka
Marketing Specialist

Doświadczona specjalistka ds. marketingu, specjalizuje się w tworzeniu treści. Pracuje dla firm IT od 2019 roku. W Devopsity odpowiada nie tylko za zarządzanie marketingiem, ale także za employer branding.

Spis treści

Przeczytaj również:

Poprzedni post Następny post