Wyświetlanie listy różnic między kontenerami i maszynami wirtualnymi
Administrator systemu Windows Server firmy Contoso musi określić, jakie obciążenia i scenariusze są odpowiednie dla maszyn wirtualnych i które są bardziej odpowiednie dla kontenerów. Ocenią one cechy obciążeń maszyn wirtualnych i kontenerów, scenariusze, w których mogą być używane, oraz w jakich okolicznościach obciążenia kontenerów mogą służyć do zwiększenia wydajności.
Maszyny wirtualne a kontenery
Zarówno maszyny wirtualne, jak i kontenery to technologie wirtualizacji używane do zapewniania izolowanych i przenośnych środowisk obliczeniowych dla aplikacji i usług:
Maszyny wirtualne symulują cały komputer, w tym zwirtualizowany sprzęt, system operacyjny, tryb użytkownika i własny tryb jądra. Maszyny wirtualne są dość elastyczne i zapewniają ogromną obsługę aplikacji; jednak maszyny wirtualne zwykle są duże i zużywają zasoby maszyny hosta.
Kontenery (jak opisano wcześniej) bazują na jądrze systemu operacyjnego hosta i zawierają izolowany proces trybu użytkownika dla spakowanej aplikacji. Ułatwia to bardzo lekkie i szybkie uruchamianie kontenerów. Inaczej niż maszyny wirtualne, kontenery można łatwo przenosić z programowania, do testowania do środowisk produkcyjnych. Jednak ponieważ system operacyjny nie jest taki sam, nie wszystkie aplikacje działają tak samo (lub w ogóle) w środowisku kontenera.
Podobieństwa i różnice
W poniższej tabeli przedstawiono podsumowanie podobieństw i różnic między funkcjami maszyn wirtualnych i kontenerów.
Funkcja | VM | Kontener |
---|---|---|
Izolacja | Zapewnia pełną izolację od systemu operacyjnego hosta i innych maszyn wirtualnych. | Zapewnia uproszczoną izolację od hosta i innych kontenerów. |
System operacyjny | Uruchamia kompletny system operacyjny, w tym jądro. | Uruchamia tylko część systemu operacyjnego w trybie użytkownika. |
Zgodność gościa | Możliwość uruchamiania dowolnego obsługiwanego systemu operacyjnego na maszynie wirtualnej | Kontenery systemu Windows wymagają pasujących wersji systemu operacyjnego hosta i kontenera. (Zobacz tryb izolacji, aby uzyskać więcej szczegółów i alternatyw) |
Wdrożenie | Wdrożone przy użyciu menedżera funkcji Hyper-V lub innych narzędzi do zarządzania maszynami wirtualnymi. | Wdrożone i zarządzane przy użyciu platformy Docker lub innego środowiska uruchomieniowego kontenera. Wiele kontenerów można wdrożyć przy użyciu orkiestratora, takiego jak Kubernetes. |
Magazyn trwały | Używa wirtualnych plików dysku twardego lub udziału bloku komunikatów serwera (SMB). | Dane nie są utrwalane, gdy kontener już nie istnieje. Aby utrwalać dane w kontenerze z systemem Windows Server, wymagane jest użycie magazynu trwałego. |
Równoważenie obciążenia i wysoka dostępność | Używa klastra trybu failover systemu Windows lub modułu równoważenia obciążenia systemu Windows do przenoszenia maszyn wirtualnych w razie potrzeby i obsługi większego woluminu. | Używa koordynatora kontenerów do automatycznego uruchamiania i zatrzymywania kontenerów, automatycznego skalowania i obsługi dodatkowego ruchu. |
Sieć | Używa wirtualnych kart sieciowych. | Różne opcje sieciowe są dostępne w zależności od scenariusza. Wartość domyślna to sieć translatora adresów sieciowych używająca wewnętrznego przełącznika i mapowania portów z hosta na kontener. |
Uwaga
Typowe jest aprowizowanie kontenerów na wysoce zoptymalizowanej maszynie wirtualnej w celu zapewnienia rozszerzonej izolacji i zabezpieczeń.
Zalety kontenerów
Na wysokim poziomie kontenery:
Wymagaj stosunkowo niewielu zasobów. Są one mniej obciążane zasobami niż maszyny wirtualne.
Szybkie uruchamianie. Czasy uruchamiania kontenera są w przybliżeniu równoważne czasowi wymaganemu do rozpoczęcia nowego procesu.
Popraw gęstość serwera. Kontenery umożliwiają bardziej wydajne wykorzystanie pamięci, dysku i procesora CPU z dostępnego sprzętu niż maszyny wirtualne. Powoduje to mniej bezczynnych serwerów, co zapewnia lepsze wykorzystanie istniejących zasobów obliczeniowych. Jest to szczególnie ważne dla dostawców chmury i użytkowników, ponieważ może obniżyć koszty.
Przenośność. Kontenery zachowują się tak samo niezależnie od środowiska, w którym działają. Kontener będzie miał zależności, aby aplikacja działała. Dzięki temu kontener może wykonywać to samo między środowiskiem deweloperskim, testowym i produkcyjnym, a także między środowiskiem lokalnym i chmurą.
Poniższa ilustracja przedstawia porównanie izolacji i wydajności między komputerami, maszynami wirtualnymi, kontenerami i procesami oraz ilustruje to:
Komputery zapewniają największy stopień izolacji. Izolacja jest stopniowo mniejsza dla maszyn wirtualnych, kontenerów i procesów.
Procesy zapewniają największy stopień wydajności i z kolei możliwą gęstość. Kontenery, maszyny wirtualne i komputery są stopniowo mniej wydajne.
Zasoby sprzętowe, jądra i systemu (takie jak system plików) są współużytkowane:
Maszyny wirtualne współużytkuje tylko sprzęt.
Kontenery współużytkują sprzęt i jądro (z wyjątkiem kontenerów funkcji Hyper-V systemu Windows, które nie współużytkują jądra).
Procesy współdzielą sprzęt, jądro i zasoby systemowe.
Komputery nie współużytkują żadnego z tych elementów.
Napiwek
W przypadku magazynu trwałego można użyć instalacji powiązania, aby zainstalować lokalizację na komputerze lokalnym. Pliki w lokalizacji będą dostępne po ponownym uruchomieniu kontenera lub jeśli chcesz udostępnić pliki wielu kontenerom. Jeśli chcesz, aby kontener działał na wielu maszynach z dostępem do tych samych plików, należy zamiast tego użyć nazwanego woluminu lub instalacji SMB.
Orkiestratory, takie jak Kubernetes, mają własną implementację magazynu trwałego.
Uwaga
Nie należy wiązać katalogów poufnych instalacji, takich jak C:\ w niezaufanym kontenerze. Pozwoliłoby to niezaufanym kontenerowi na zmianę plików na hoście, do którego zwykle nie miałby dostępu i mógł utworzyć naruszenie zabezpieczeń. Ponadto upewnij się, że kontener będzie działał prawidłowo podczas przechodzenia do innego środowiska. Oznacza to unikanie wiązania kontenera z określonym dyskiem na określonym hoście.
Kiedy wybrać maszynę wirtualną
Użyj maszyny wirtualnej, gdy:
Należy zarządzać wieloma systemami operacyjnymi.
Należy uruchomić aplikację, która wymaga wszystkich zasobów i usług pełnego systemu operacyjnego, takiego jak graficzny interfejs użytkownika (GUI).
Potrzebujesz środowiska, które zachowuje zmiany i jest trwałe. Przykład: Bazy danych nie są dobrymi kandydatami do uruchamiania w kontenerach.
Wymagaj pełnej izolacji i zabezpieczeń.
Kiedy wybrać kontener
Użyj kontenera, gdy:
Potrzebujesz uproszczonego pakietu aplikacji, który szybko się uruchamia.
Należy wdrożyć wiele wystąpień jednej aplikacji — wymagane jest skalowanie automatyczne i/lub skalowanie w poziomie.
Należy uruchomić aplikację lub proces, który nie jest trwały na żądanie.
Należy wdrożyć aplikację, która może działać w dowolnej podstawowej infrastrukturze.