Kiedy skorzystać z kontenerów platformy Docker

Ukończone

Jak już dowiedzieliśmy się, platforma Docker ma kilka funkcji do użycia. W tym miejscu przyjrzyjmy się korzyściom, jakie ma do zaoferowania platforma Docker dla naszych zespołów programistycznych i operacyjnych. Przyjrzymy się również kilku scenariuszom, w których platforma Docker może nie być najlepszym wyborem.

Te aspekty ułatwią Ci podjęcie decyzji, czy platforma Docker jest dobrym rozwiązaniem dla Twojej strategii konteneryzacji.

Przypomnij sobie wcześniej, że istnieje wiele wyzwań, przed którymi stoi nasz zespół podczas opracowywania i publikowania naszego portalu śledzenia zamówień. Szukają rozwiązania do:

  • Łatwo zarządzaj naszymi środowiskami hostingu.
  • Gwarantuje ciągłość w sposobie dostarczania naszego oprogramowania.
  • Upewnij się, że efektywnie korzystamy ze sprzętu serwera.
  • Zezwalaj na przenośność naszych aplikacji.

Docker oferuje rozwiązania dla tych wyzwań. Przyjrzyjmy się wszystkim korzyściom, które zostały do tej pory omówione.

Zalety platformy Docker

Gdy korzystamy z platformy Docker, uzyskujemy natychmiastowy dostęp do korzyści, które oferuje konteneryzacja.

Wydajne użycie sprzętu

Kontenery działają bez użycia maszyny wirtualnej. Jak dowiedzieliśmy się, kontener opiera się na jądrze hosta dla funkcji, takich jak system plików, zarządzanie siecią, planowanie procesów i zarządzanie pamięcią.

Diagram przedstawiający porównanie użycia zasobów maszyny wirtualnej i zasobów platformy Docker.

W porównaniu z maszyną wirtualną widać, że maszyna wirtualna wymaga zainstalowanego systemu operacyjnego w celu zapewnienia funkcji jądra uruchomionym aplikacjom wewnątrz maszyny wirtualnej. Należy pamiętać, że system operacyjny maszyny wirtualnej również wymaga miejsca na dysku, pamięci i czasu procesora. Eliminując maszynę wirtualną i uwalniając na hoście dodatkowe zasoby wymagane przez system operacyjny, możemy użyć tych zasobów do uruchomienia innych kontenerów.

Izolacja kontenera

Kontenery platformy Docker zapewniają funkcje zabezpieczeń umożliwiające uruchamianie wielu kontenerów jednocześnie na tym samym hoście bez wywierania na siebie wpływu. Jak dowiedzieliśmy się, możemy skonfigurować zarówno magazyn danych, jak i konfigurację sieci, aby odizolować nasze kontenery lub udostępniać dane i łączność między określonymi kontenerami.

Porównajmy tę funkcję z maszynami wirtualnymi.

Diagram przedstawiający hosta fizycznego, na którym uruchomiono wiele maszyn wirtualnych.

Przyjmijmy założenie, że mamy fizyczny host, na którym działają dwie maszyny wirtualne. Mamy trzy aplikacje, które chcemy od siebie odizolować. Decydujemy się wdrożyć pierwszą aplikację na maszynie WIRTUALNEJ VM1 i drugą na maszynie VM2, aby oddzielić te dwie aplikacje od siebie. Jeśli teraz zdecydujemy się na zainstalowanie trzeciej aplikacji, to zgodnie z przyjętym wzorcem będziemy musieli zainstalować kolejną maszynę wirtualną.

Przenośność aplikacji

Kontenery działają niemal wszędzie: komputery stacjonarne, serwery fizyczne, maszyny wirtualne i w chmurze. Ta zgodność środowiska uruchomieniowego ułatwia przenoszenie konteneryzowanych aplikacji między różnymi środowiskami.

Ponieważ kontenery są lekkie, nie cierpią z powodu wolnych czasów uruchamiania ani zamykania, takich jak maszyny wirtualne. Ten aspekt sprawia, że ponowne wdrażanie i inne scenariusze wdrażania — takie jak skalowanie w górę lub w dół — bezproblemowe i szybkie.

Dostarczanie aplikacji

Na platformie Docker kontener staje się jednostką używaną do dystrybucji aplikacji. Ta koncepcja gwarantuje, że mamy standardowy format kontenera zarówno dla deweloperów, jak i zespołów operacyjnych. Nasi deweloperzy mogą skupić się na tworzeniu oprogramowania, a zespół operacyjny może skupić się na wdrażaniu oprogramowania i zarządzaniu nim.

Możemy korzystać z kontenerów na każdym etapie systemu wdrażania zaraz po wydaniu przez zespół programistyczny kompilacji naszej aplikacji. Kontenery są idealnymi kandydatami do ciągłej integracji i przyspieszają czas od kompilacji do środowiska produkcyjnego.

Zarządzanie środowiskami hostingu

Środowisko aplikacji jest konfigurowane wewnętrznie w kontenerze. Dzięki temu nasz zespół operacyjny będzie miał większą elastyczność w dokładniejszym zarządzaniu środowiskiem aplikacji. Nasz zespół może monitorować aktualizacje systemu operacyjnego, stosować poprawki zabezpieczeń raz i wdrażać zaktualizowany kontener zgodnie z potrzebami.

Nasz zespół może również kontrolować, które aplikacje mają być instalowane, aktualizowane i usuwane, bez wpływu na inne kontenery. Każdy kontener jest izolowany, a jego limity zasobów są przypisywane niezależnie od innych kontenerów.

Wdrożenia w chmurze

Kontenery platformy Docker to domyślna architektura kontenerów używana przez usługi konteneryzacji platformy Azure, a wiele innych platform w chmurze również je obsługuje.

Na przykład można wdrożyć kontenery platformy Docker w usłudze Azure Container Instances, usłudze aplikacja systemu Azure Service i usługach Azure Kubernetes Services. Każda z tych opcji oferuje różne funkcje i możliwości.

Na przykład usługa Azure Container Instances umożliwia skoncentrowanie się na projektowaniu i tworzeniu aplikacji bez nakładów związanych z zarządzaniem infrastrukturą. Jeśli masz wiele kontenerów do organizowania, usługa Azure Kubernetes ułatwia wdrażanie wdrożeń kontenerów na dużą skalę i zarządzanie nimi.

Kiedy nie używać kontenerów platformy Docker

Kontenery platformy Docker zapewniają wiele korzyści, ale należy pamiętać, że kontenery mogą nie spełniać wszystkich wymagań. Istnieje kilka aspektów, które należy wziąć pod uwagę.

Bezpieczeństwo i wirtualizacja

Kontenery zapewniają pewien poziom izolacji. Współużytkują one jednak to samo jądro systemu operacyjnego hosta, które może być pojedynczym punktem ataku.

Hosty systemu Windows udostępniają dodatkowy model izolacji, w którym specjalnie utworzona maszyna wirtualna może służyć do izolowania kontenera na poziomie funkcji hypervisor. Ten tryb jest nazywany trybem izolacji funkcji Hyper-V i dodaje kolejną warstwę zabezpieczeń między kontenerami a hostem kontenerów.

Musimy również wziąć pod uwagę aspekty, takie jak magazyn i sieci, aby upewnić się, że uwzględniamy wszystkie aspekty zabezpieczeń. Na przykład wszystkie kontenery domyślnie używają sieci mostka i mogą uzyskiwać do siebie dostęp za pośrednictwem adresu IP.

Nie wszystkie aplikacje korzystają z konteneryzacji. W takich przypadkach użycie maszyny wirtualnej może być bardziej zrozumiałe.

Monitorowanie usługi

Zarządzanie aplikacjami i kontenerami jest bardziej skomplikowane niż tradycyjne wdrożenia maszyn wirtualnych. Istnieją funkcje rejestrowania, które informują nas o stanie uruchomionych kontenerów, ale bardziej szczegółowe informacje o usługach wewnątrz kontenera są trudniejsze do monitorowania.

Na przykład platforma Docker udostępnia polecenie docker stats. To polecenie zwraca informacje dla kontenera, takie jak procentowe użycie procesora CPU, procentowe użycie pamięci, we/wy zapisane na dysku, dane sieciowe wysyłane i odbierane oraz przypisane identyfikatory procesów. Te informacje są przydatne jako bezpośredni strumień danych; jednak nie jest wykonywana agregacja, ponieważ dane nie są przechowywane. Musimy zainstalować oprogramowanie innych firm w celu uzyskania znaczącego przechwytywania danych w danym okresie.