Definiowanie kontenerów systemu Windows Server i funkcji Hyper-V oraz trybów izolacji

Ukończone

Administrator systemu Windows Server firmy Contoso musi zrozumieć, w jaki sposób kontenery działają w systemie Windows Server i jak osiągana jest izolacja środowisk uruchomieniowych, przede wszystkim izolacja procesów i tryby izolacji funkcji Hyper-V. Administrator musi również zrozumieć, jak uruchamiać różne tryby izolacji i w jakich okolicznościach różne tryby izolacji są odpowiednie lub wymagane.

Tryby izolacji

System Windows Server może uruchamiać kontenery w jednym z dwóch odrębnych trybów izolacji. Oba tryby obsługują identyczne procesy tworzenia, zarządzania i uruchamiania kontenerów. Istnieje jednak różnica między stopniem izolacji zapewnianym dla kontenera, a w związku z tym zabezpieczeniami między kontenerem, innymi kontenerami i systemem operacyjnym hosta.

System Windows Server obsługuje następujące tryby izolacji kontenera:

  • Izolacja procesów. Kontenery działające w trybie izolacji procesów mogą być nazywane kontenerami systemu Windows Server.

  • Izolacja funkcji Hyper-V. Kontenery uruchomione w trybie izolacji funkcji Hyper-V mogą być nazywane kontenerami funkcji Hyper-V.

Tryb izolacji procesów dla kontenerów systemu Windows Server

Uważany za tradycyjny tryb izolacji dla kontenerów systemu Windows Server, tryb izolacji procesu umożliwia współbieżne uruchamianie wielu wystąpień kontenerów na hoście. W przypadku uruchamiania w tym trybie kontenery współdzielą ze sobą to samo jądro i z systemem operacyjnym hosta. Każdy aprowizowany kontener ma własny tryb użytkownika, aby umożliwić uruchamianie procesów systemu Windows i aplikacji odizolowanych od innych kontenerów. Podczas konfigurowania kontenerów systemu Windows do korzystania z trybu izolacji procesów kontenery mogą uruchamiać wiele aplikacji w izolowanych stanach na tym samym komputerze, ale nie zapewniają one rozszerzonej izolacji zabezpieczeń.

Uwaga

Docker to kolekcja narzędzi typu open source, rozwiązań i usług opartych na chmurze, które zapewniają wspólny model tworzenia pakietów (nazywanych również konteneryzacją) kodu aplikacji w standardowej jednostce tworzenia oprogramowania. Więcej informacji na temat środowisk uruchomieniowych platformy Docker i kontenerów znajdziesz w następnej lekcji.

Po uruchomieniu nowego kontenera platforma Docker (lub domyślne środowisko uruchomieniowe kontenera) komunikuje się z usługami obliczeniowymi w celu utworzenia nowego kontenera opartego na obrazie. Dla każdego kontenera platforma Docker tworzy kontener systemu Windows. Każdy kontener systemu Windows wymaga zestawu procesów systemowych, które są zawsze takie same w każdym kontenerze. Następnie możesz użyć własnego procesu aplikacji, aby odróżnić każdy kontener. W tym celu można użyć struktury aplikacji, takiej jak .NET, składnik systemu Windows Server, taki jak Internet Information Services (IIS), lub struktury lub procesów innych firm uruchamianych w kontenerze.

Tryb izolacji funkcji Hyper-V dla kontenerów funkcji Hyper-V

Gdy kontenery współużytkują jądro i pamięć, istnieje możliwość, że jeśli osoba atakująca zbada lukę w zabezpieczeniach, aplikacja może wyłamać się ze swojego środowiska piaskownicy i przypadkowo wykonać coś złośliwego. Aby tego uniknąć, system Windows udostępnia alternatywną metodę uruchamiania kontenerów, które są bezpieczniejsze nazywane trybem izolacji funkcji Hyper-V, czasami nazywane kontenerami funkcji Hyper-V.

W trybie izolacji funkcji Hyper-V każdy kontener działa wewnątrz wysoce zoptymalizowanej maszyny wirtualnej. Zaletą trybu izolacji funkcji Hyper-V jest to, że każdy kontener efektywnie ma własne jądro, które zapewnia zwiększony poziom stabilności i bezpieczeństwa. Maszyna wirtualna zapewnia dodatkową warstwę izolacji na poziomie sprzętu między każdym kontenerem a komputerem hosta. Po wdrożeniu kontener korzystający z trybu izolacji funkcji Hyper-V jest uruchamiany w sekundach, co jest znacznie szybsze niż maszyna wirtualna z pełnym systemem operacyjnym Windows.

Uwaga

Kontenery oparte na systemie Windows działające w systemie Windows Server są domyślnie używane w trybie izolacji procesu. Kontenery oparte na systemie Windows działające w systemach Windows 10 Pro i Enterprise domyślnie korzystają z trybu izolacji funkcji Hyper-V.

Poniższa grafika porównuje architektury kontenerów systemu Windows Server i funkcji Hyper-V oraz ich dwóch trybów izolacji. Na ilustracji przedstawiono, że jądro systemu Windows hosta jest współużytkowane przez tryb użytkownika hosta i system Windows Server. Uruchomione na tym udostępnionym jądrze jest maszyną wirtualną, w której znajduje się kontener funkcji Hyper-V. Kontener funkcji Hyper-V ma własne jądro systemu Windows, które nie jest współużytkowane.

Zrzut ekranu przedstawiający architekturę kontenerów systemu Windows Server i funkcji Hyper-V oraz ich dwóch trybów izolacji.

Uwaga

Tryb izolacji procesów w systemie Windows 10 jest przeznaczony tylko do programowania i testowania. Począwszy od aktualizacji systemu Windows 10 października 2018 r., użytkownicy z systemem Windows 10 Pro lub Enterprise mogą uruchamiać kontener systemu Windows w trybie izolacji procesów. Użytkownicy muszą bezpośrednio żądać trybu izolacji procesu przy użyciu parametru --isolation=process. Na hoście musi być uruchomiony system Windows 10 build 17763+ i musisz mieć wersję platformy Docker z aparatem 18.09 lub nowszym.

Ważne

Jako kontener systemu Windows Server i system operacyjny hosta współużytkuj jądro, musisz upewnić się, że tagi wersji obrazu hosta i kontenera są zgodne, w przeciwnym razie uruchomienie kontenera może zakończyć się niepowodzeniem lub wykazywać niezdefiniowane zachowanie. Kontenery funkcji Hyper-V mogą służyć jako alternatywa do uruchamiania starszych obrazów kontenerów na nowszych hostach — na przykład: obraz systemu Windows Server 2019 na hoście systemu Windows Server 2022 działa tylko z izolacją funkcji Hyper-V.

Jak określić tryb izolacji przy użyciu polecenia platformy Docker

W następnej lekcji omówimy bardziej środowiska uruchomieniowe platformy Docker i kontenera, jednak w tym kontekście musimy tylko pamiętać, że platforma Docker udostępnia zestaw poleceń, których możemy użyć do tworzenia kontenerów. Podczas tworzenia kontenera przy użyciu platformy Docker można określić tryb izolacji przy użyciu parametru --isolation i trybu izolacji procesu lub trybu izolacji funkcji Hyper-V:

  • Utwórz kontener przy użyciu trybu izolacji procesu przy użyciu tego polecenia:
docker run -it --isolation=process mcr.microsoft.com/windows/servercore:ltsc2019 cmd
  • Utwórz kontener przy użyciu trybu izolacji funkcji Hyper-V, używając następującego polecenia:
docker run -it --isolation=hyperv mcr.microsoft.com/windows/servercore:ltsc2019 cmd`

Kiedy należy używać kontenerów funkcji Hyper-V za pośrednictwem kontenerów systemu Windows Server

Czynniki, które należy wziąć pod uwagę podczas wybierania między użyciem kontenerów funkcji Hyper-V i kontenerów systemu Windows Server, to zaufanie, zabezpieczenia i izolacja. Rozważ użycie kontenerów funkcji Hyper-V w przypadku:

  • Aplikacja wymaga dedykowanego jądra systemu Windows.

  • Zaufanie aplikacji jest wymagane, ponieważ:

    • System operacyjny hosta może nie ufać w pełni uruchomionej aplikacji.

    • Aplikacje działające obok siebie na tym samym hoście mogą nie ufać sobie nawzajem.

  • Wymagane jest większe bezpieczeństwo.

  • Wymagana jest większa izolacja.

Niektóre scenariusze, które mogą prowadzić do niektórych z tych decyzji, to:

  • Dostawcy usług w chmurze. Jeśli zasoby sprzętowe są współużytkowane i wykorzystywane, wszystkie wymienione wcześniej czynniki mogą mieć zastosowanie do obciążeń uruchomionych od różnych klientów.

  • Zasady zgodności. Może być konieczne przestrzeganie zabezpieczeń, danych lub innych zasad, które wymagają izolacji i zwiększenia bezpieczeństwa w obciążeniach i uruchomionych aplikacji.

  • Środowiska uruchomieniowe (nazywane również środowiskami deweloperskimi, testowymi lub produkcyjnymi). W scenariuszach produkcyjnych może nie być wymagana dodatkowa izolacja w środowiskach deweloperskich lub testowych. Możesz również mieć aplikację rozproszoną w modelu mikrousług. Różne obciążenia kontenerów w architekturze aplikacji mikrousług mogą mieć różne potrzeby izolacji, które mogą być konieczne.

Uwaga

Nie wszystkie usługi orkiestracji, takie jak Kubernetes, obsługują kontenery funkcji Hyper-V. Jeśli kontenery funkcji Hyper-V nie są obsługiwane, ale wymagana jest większa izolacja, może być konieczne ponowne uruchomienie zestawu kontenerów, które mogą być uruchamiane obok siebie.