Powstanie technologii konteneryzacji to konsekwencja dążenia twórców aplikacji do architektury mikroserwisów. Zarządzanie złożonymi, rozproszonymi systemami mikroaplikacji stało się sporym wyzwaniem logistycznym, stąd odniesienie do idei kontenerów w branży logistycznej.
Podzielone na mniejsze elementy aplikacje umieszcza się w kontenerach czyli wydzielonych obszarach maszyny wirtualnej. Kontener zawiera wszystko (kod źródłowy, biblioteki systemowe, pliki konfiguracyjne itp.), co niezbędne do uruchomienia aplikacji. Dzięki temu aplikację można szybko przenieść i uruchomić w innym środowisku, bez konieczności jego ponownego, ręcznego konfigurowania.
Dlaczego warto stosować kontenery?
Zmniejszenie wydatków
W kontenerach znajduje się wszystko, czego aplikacja wymaga do uruchomienia, a system operacyjny jest najczęściej współdzielony przez wiele kontenerów. W przeciwieństwie do maszyn wirtualnych, które posiadają własny system operacyjny dla każdej aplikacji, kontenery są wydajniejsze, zajmują mniej miejsca i wykorzystują w związku z tym mniej zasobów.
Przenośność (portability)
Kontenery cechują się przenośnością tj. zawarte na nich aplikacje można dowolnie przenosić między różnymi środowiskami, a następnie uruchamiać.
Ułatwienie pracy
W środowisku programistycznym kontenery skracają czas pracy nad tworzeniem aplikacji, co wynika z ich szybkiego działania i możliwości przeprowadzania operacji w różnych środowiskach.
Skalowalność
Kontenery tworzy się szybko i równie szybko skaluje. Można dzięki temu natychmiast zareagować np. na nieoczekiwane obciążenie.
Modułowość
Dzięki kontenerom istnieje możliwość podzielenia aplikacji na kilka komponentów. Tego typu modułowość zwiększa wydajność pracy; można pracować nad komponentem z jego własną funkcją, zamiast nad całością.
Kubernetes i orkiestracja kontenerów
Aby ułatwić zarządzanie aplikacjami złożonymi z setek kontenerów zlokalizowanych na wielu serwerach niezbędne jest narzędzie do orkiestracji. Najpopularniejszym rozwiązaniem jest platforma open-source Kubernetes (K8s) stworzona przez Google, a obecnie rozwijana przez Cloud Native Computing Foundation.
Kubernetes monitoruje aplikacje kontenerowe, które są wdrażane w chmurze. Ponownie uruchamia osierocone kontenery, zamyka kontenery, gdy nie są one używane, i automatycznie przydziela zasoby, takie jak pamięć, pamięć masowa i procesor, gdy jest to konieczne.