Co to jest kontener?

Standardowe, przenośne pakiety dla Twoich aplikacji

Wyjaśnienie dotyczące kontenerów

W taki sam sposób, w jaki branża wysyłkowa korzysta z fizycznych kontenerów do oddzielania różnych towarów, np. w pociągach czy na statkach, w ramach technologii tworzenia oprogramowania coraz częściej używana jest koncepcja nazywana konteneryzacją.

Za pomocą standardowego pakietu oprogramowania, określanego jako kontener, tworzony jest pakiet kodu aplikacji wraz z powiązanymi plikami konfiguracyjnymi, bibliotekami i zależnościami wymaganymi do uruchomienia aplikacji. Dzięki temu deweloperzy i specjaliści IT mogą bezproblemowo wdrażać aplikacje w różnych środowiskach.

Rozpoczynanie pracy z platformą Docker

Dlaczego warto dbać o kontenery

Problem polegający na niemożliwości uruchomienia aplikacji po przeniesieniu jej do innego środowiska jest obecny od samego początku tworzenia oprogramowania. Takie problemy zwykle powstają z powodu różnic w konfiguracjach wymagań podstawowych bibliotek oraz innych zależności.

Kontenery udostępniają uproszczoną, niezmienną infrastrukturę umożliwiającą pakowanie i wdrażanie aplikacji, co pozwala rozwiązać ten problem. Obraz kontenera zawiera aplikację lub usługę oraz jej zależności i konfigurację. Skonteneryzowaną aplikację można testować jako jednostkę i wdrażać w systemie operacyjnym hosta jako wystąpienie obrazu kontenera.

Dzięki temu deweloperzy i specjaliści IT mogą wdrażać aplikacje w różnych środowiskach przy minimalnym nakładzie pracy związanej z modyfikacją tych aplikacji.

Dowiedz się więcej na temat pochodzenia i zalet kontenerów.

Obejrzyj krótki film

Kontener a maszyna wirtualna

Wirtualizacja kojarzy się często z maszynami wirtualnymi. Tak naprawdę wirtualizacja występuje w różnych formach, a jedną z nich są kontenery. Jaka jest różnica między maszynami wirtualnymi a kontenerami?

Ogólnie rzecz biorąc, maszyny wirtualne umożliwiają wirtualizację bazowego sprzętu, co pozwala uruchamiać na nim wiele wystąpień systemu operacyjnego. Systemy operacyjne uruchomione na poszczególnych maszynach wirtualnych mają dostęp do zwirtualizowanych zasobów reprezentujących bazowy sprzęt.

Maszyny wirtualne mają wiele zalet. Obejmują one możliwość uruchamiania różnych systemów operacyjnych na tym samym serwerze, bardziej wydajne i ekonomiczne wykorzystanie zasobów fizycznych oraz szybsze aprowizowanie serwera. Z drugiej strony każda maszyna wirtualna zawiera obraz systemu operacyjnego, biblioteki, aplikacje i inne elementy, co może znacznie zwiększyć jej rozmiar.

Kontener umożliwia wirtualizację bazowego systemu operacyjnego, którego zasoby — procesor, pamięć, magazyn plików i połączenia sieciowe — są dostępne dla skonteneryzowanej aplikacji. Ze względu na to, że różnice w podstawowym systemie operacyjnym i infrastrukturze są wyabstrahowane, kontener można wdrożyć i uruchomić w dowolnym środowisku, o ile podstawowy obraz jest spójny. Dla deweloperów jest to ogromne ułatwienie.

Kontenery korzystają z systemu operacyjnego hosta, dlatego nie trzeba na nich uruchamiać systemu operacyjnego ani ładować bibliotek. Dzięki temu kontenery są znacznie bardziej wydajne i zajmują mniej miejsca. Skonteneryzowane aplikacje uruchamiają się w ciągu kilku sekund, a na jednym komputerze można zmieścić o wiele więcej wystąpień aplikacji niż w przypadku scenariusza z maszyną wirtualną. Podejście oparte na współużytkowaniu systemu operacyjnego ma dodatkową korzyść w postaci mniejszych kosztów konserwacji, na przykład związanych z poprawkami i aktualizacjami.

Chociaż kontenery są przenośne, są związane z systemem operacyjnym, dla którego zostały zdefiniowane. Na przykład kontenera dla systemu Linux nie można uruchomić w systemie Windows (i odwrotnie).

Dlaczego warto korzystać z kontenerów

Sprawność

Deweloperzy mogą kompilować aplikacje i pakować je do kontenerów, a następnie udostępniać je działowi informatycznemu w celu ich uruchamiania na ustandaryzowanej platformie. Zmniejsza to ogólny nakład pracy związanej z wdrażaniem aplikacji oraz usprawnia cały proces tworzenia i testowania oprogramowania. Podnosi to również wydajność współpracy między zespołem deweloperów a zespołem operacyjnym, które mogą szybciej dostarczać aplikacje.

Przenośność

Standardowy format kontenerów umożliwia pakowanie i przechowywanie wszystkich składników wymaganych do uruchomienia danej aplikacji. Rozwiązuje to typowy problem, określany jako „u mnie działa”, i zapewnia przenośność między systemami operacyjnymi i chmurami. Kontener jest uruchamiany w spójnym środowisku, które pozostaje niezmienne w różnych wdrożeniach. Format jest spójny — zarówno w środowisku projektowym, jak i produkcyjnym.

Szybkie skalowanie

Kontenery nie wymagają nakładu pracy typowego dla maszyn wirtualnych, w tym oddzielnych wystąpień systemu operacyjnego, dlatego w danej infrastrukturze można obsługiwać o wiele więcej kontenerów. Dzięki uproszczonej strukturze kontenerów można szybko je uruchamiać i zatrzymywać, co pozwala wdrażać scenariusze błyskawicznego skalowania w górę i w dół.

Przypadki zastosowań

Aplikacje natywne dla chmury

W przypadku aplikacji natywnych dla chmury używanie kontenerów pozwala korzystać ze wspólnego modelu operacyjnego w różnych środowiskach: publicznych, prywatnych i hybrydowych. Niskie koszty ogólne i wysoka gęstość upakowania pozwalają hostować wiele kontenerów na jednej maszynie wirtualnej, co sprawia, że są one idealne do dostarczania aplikacji natywnych dla chmury.

Migrowanie metodą „lift-and-shift”

Dzięki migracji do chmury organizacje mogą uzyskać znaczne korzyści, ale nie zawsze chcą inwestować w ponowne pisanie kodu używanych aplikacji. Kontenery potencjalnie umożliwiają migrowanie aplikacji do chmury bez zmieniania kodu.

Batch

Przetwarzanie wsadowe odnosi się do działań, które mogą być wykonywane bez interwencji człowieka lub realizowane w zależności od dostępności zasobów. Przykłady obejmują generowanie raportów, zmienianie rozmiarów obrazów i konwertowanie plików w celu zmiany formatu. Kontenery umożliwiają łatwe uruchamianie zadań wsadowych bez konieczności zarządzania środowiskiem i zależnościami. Opcje obliczania dynamicznego, takie jak Azure Container Instances (ACI), umożliwiają wydajne pozyskiwanie i przetwarzanie danych źródłowych oraz umieszczanie ich w trwałym magazynie, takim jak Azure Blob Storage. Takie podejście, inne niż używanie statycznie aprowizowanych maszyn wirtualnych, pozwala uzyskać znaczne oszczędności dzięki korzystaniu z funkcji rozliczania co sekundę.

Uczenie maszynowe

W uczeniu maszynowym do danych są stosowane algorytmy, a prognozy są tworzone na podstawie wzorców w danych. Dzięki kontenerom aplikacje uczenia maszynowego stają się niezależne i łatwo można je skalować w dowolnym środowisku.

Nie tylko kontenery

Aby zmaksymalizować zalety kontenerów, warto rozważyć użycie kompletnych rozwiązań, wyposażonych w narzędzia i usługi zoptymalizowane pod kątem kontenerów, które pomagają zapewnić elastyczność, bezpieczeństwo i skalowalność.

Aranżacja

Uruchamianie kontenerów na dużą skalę wymaga aranżowania rozproszonych, skonteneryzowanych aplikacji i zarządzania nimi za pośrednictwem platformy orkiestracji, takiej jak Kubernetes.

Poznawanie środowiska Kubernetes na platformie Azure

Zabezpieczenia

Zapewnienie bezpieczeństwa kontenerów wymaga podejścia warstwowego — od obrazu kontenera do izolacji klastra. Najlepiej jest konfigurować te zabezpieczenia przy użyciu potoków ciągłej integracji/ciągłego wdrażania.

Zapoznaj się z podstawowymi informacjami na temat zabezpieczeń kontenerów i platformy Kubernetes

Kontenery bezserwerowe

Można dodatkowo zwiększyć elastyczność przy użyciu kontenerów na żądanie. Korzystając z technologii kontenerów bezserwerowych, można łatwo uruchamiać kontenery bez zarządzania serwerami i przerzucać obciążenie z klastrów Kubernetes w przypadku wzrostu natężenia ruchu.

Wypróbuj kontenery bezserwerowe

DevOps

Kontenery umożliwiają deweloperom łatwe udostępnianie oprogramowania i zależności w środowiskach informatycznych i produkcyjnych. Połączenie możliwości kontenerów z praktykami DevOps pozwala szybciej dostarczać kod i skrócić cykle tworzenia oprogramowania.

Zobacz przewodnik po metodyce DevOps na platformie Azure

Zasoby

Wszystko gotowe — wypróbuj bezpłatnie kontenery i środowisko Kubernetes na platformie Azure