Kontenery a maszyny wirtualne
Poznaj różnice między kontenerami a maszynami wirtualnymi, jak również najpopularniejszych dostawców każdego z tych rozwiązań, oraz dowiedz się, jak tych ostatnich można używać razem
Ian Buchanan
Główny inżynier ds. rozwiązań
Kontenery i maszyny wirtualne są bardzo podobnymi technologiami wirtualizacji zasobów. Wirtualizacja to proces, w którym pojedynczy zasób, jak np. pamięć RAM, procesor, dysk czy urządzenie sieciowe, zostaje „zwirtualizowany” i przedstawiony jako wiele zasobów. Kluczową różnicą pomiędzy kontenerami a maszynami wirtualnymi jest to, że te ostatnie wirtualizują całą maszynę wraz ze sprzętem, zaś kontenery wirtualizują jedynie warstwy oprogramowania powyżej poziomu systemu operacyjnego.
Wypróbuj Compass bezpłatnie
Ulepsz środowisko programistyczne, skataloguj wszystkie usługi i popraw kondycję oprogramowania.
Czym jest kontener?
Kontenery to lekkie pakiety oprogramowania, które zawierają wszystkie zależności wymagane do wykonania zawartej aplikacji. Zależności te obejmują takie elementy, jak biblioteki systemowe, zewnętrzne pakiety kodu innych firm czy inne aplikacje na poziomie systemu operacyjnego. Zależności zawarte w kontenerze istnieją na poziomach stosu powyżej systemu operacyjnego.
Zalety
- Szybkość iteracji
Ponieważ kontenery są lekkie i zawierają tylko oprogramowanie wysokiego poziomu, umożliwiają bardzo szybką modyfikację i iterację. - Solidny ekosystem
Większość systemów uruchomieniowych kontenerów oferuje hostowane publiczne repozytorium gotowych kontenerów. Te repozytoria kontenerów zawierają wiele popularnych aplikacji, takich jak bazy danych lub systemy przesyłania wiadomości, które mogą zostać natychmiast pobrane i wykonane, co stanowi istotną oszczędność czasu
Wady
- Wspólne ryzyko
Kontenery współdzielą ten sam sprzęt poniżej warstwy systemu operacyjnego, w związku z czym niepożądany dostęp do jednego kontenera może stanowić zagrożenie dla całej maszyny hosta. Najpopularniejsze środowiska uruchomieniowe kontenerów zawierają publiczne repozytoria gotowych kontenerów. Korzystanie z tych publicznych obrazów wiąże się z pewnym ryzykiem, ponieważ mogą one zawierać luki w zabezpieczeniach lub mogą być podatne na przejęcie przez niepowołane osoby.
Popularni dostawcy kontenerów
materiały pokrewne
Porównanie platform Kubernetes i Docker
POZNAJ ROZWIĄZANIE
Ulepsz swoje środowisko programistyczne dzięki narzędziu Compass
- Docker
Docker to najpopularniejsze i szeroko stosowane środowisko uruchomieniowe dla kontenerów. Docker Hub to gigantyczne publiczne repozytorium popularnych aplikacji kontenerowych. Kontenery w Docker Hub mogą być natychmiast pobierane i wdrażane w ramach lokalnego środowiska uruchomieniowego Docker. - RKT
RKT (czyt. „rocket”) to system kontenerów skoncentrowany na bezpieczeństwie. Kontenery RKT nie pozwalają na korzystanie z niezabezpieczonych funkcji kontenera, chyba że użytkownik celowo je włączy. Kontenery RKT mają na celu rozwiązanie podstawowych problemów związanych z bezpieczeństwem, które dotykają inne systemy uruchomieniowe kontenerów. - Linux Containers (LXC)
Projekt Linux Containers to system uruchomieniowy kontenerów Linux typu open source. LXC służy do wyodrębniania procesów operacyjnych na poziomie systemu. Docker w rzeczywistości korzysta właśnie z technologii LXC. Linux Containers ma na celu zaoferowanie neutralnego środowiska uruchomieniowego open source dla kontenerów. - CRI-O
CRI-O to implementacja interfejsu Kubernetes Container Runtime Interface (CRI), która umożliwia korzystanie ze środowisk uruchomieniowych zgodnych z Open Container Initiative (OCI). Jest to mało wymagająca alternatywa dla Dockera jako środowiska uruchomieniowego dla Kubernetes.
Czym jest maszyna wirtualna?
Maszyny wirtualne to rozbudowane pakiety oprogramowania, które zapewniają pełną emulację sprzętu niskiego poziomu, takiego jak procesor, dysk czy urządzenia sieciowe. Maszyny wirtualne mogą również zawierać uzupełniający stos oprogramowania do uruchomienia na emulowanym sprzęcie. Połączenie pakietów sprzętu i oprogramowania zapewnia w pełni funkcjonalne odwzorowanie systemu obliczeniowego.
Zalety
- Pełna izolacja
Maszyny wirtualne funkcjonują jako całkowicie niezależne systemy. Oznacza to, że maszyny wirtualne są wolne od luk i ingerencji ze strony innych maszyn wirtualnych na wspólnym hoście. Pojedyncza maszyna wirtualna może nadal zostać zaatakowana za sprawą danej luki, nie będzie jednak to miało wpływu na sąsiednie maszyny wirtualne w ramach tego samego hosta. - Interaktywny rozwój
Kontenery są zazwyczaj statycznymi definicjami oczekiwanych zależności i konfiguracji potrzebnych do uruchomienia kontenera. Maszyny wirtualne są bardziej dynamiczne i mogą być interaktywnie rozwijane. Po określeniu podstawowych parametrów sprzętowych dla maszyny wirtualnej, ta może być traktowana jak podstawowy zestaw komputerowy. Na maszynie wirtualnej można ręcznie instalować oprogramowanie i wykonywać migawki w celu uchwycenia bieżącego stanu konfiguracji. Migawki maszyny wirtualnej mogą zostać użyte do przywrócenia jej stanu do danego punktu w czasie lub uruchomienia dodatkowych maszyn wirtualnych na podstawie danej konfiguracji.
Wady
- Prędkość iteracji
Budowa i regeneracja maszyn wirtualnych jest czasochłonna, ponieważ obejmują pełen stos oprogramowania. Wszelkie modyfikacje migawek maszyn wirtualnych mogą wymagać sporo czasu na regenerację i sprawdzenie, czy zachowują się zgodnie z oczekiwaniami. - Koszt pamięci masowej
Maszyny wirtualne mogą zajmować dużo miejsca na dysku. Mogą szybko urosnąć do rozmiaru kilku gigabajtów. To może prowadzić do problemów z brakiem miejsca na sprzęcie hosta.
Popularni dostawcy maszyn wirtualnych
- Virtualbox
Virtualbox to bezpłatny, otwarty system emulacji architektury x86 należący do Oracle. Stanowi jedną z najpopularniejszych i najbardziej znanych platform maszyn wirtualnych z ekosystemem dodatkowych narzędzi ułatwiających tworzenie i udostępnianie obrazów maszyn wirtualnych. - VMware
VMware jest spółką notowaną na giełdzie, która oparła swoją działalność na jednej z pierwszych technologii wirtualizacji sprzętu x86. VMware uwzględnia usługę hipernadzorcy, która umożliwia wdrażanie i zarządzanie wieloma maszynami wirtualnymi. VMware odznacza się rozbudowanym interfejsem do zarządzania maszynami wirtualnymi. VMware to znakomita opcja maszyn wirtualnych klasy korporacyjnej. - QEMU
QEMU to najsolidniejsza opcja wirtualnej maszyny emulującej sprzęt. Obsługuje każdą powszechną architekturę sprzętową. QEMU jest narzędziem opartym na samym wierszu poleceń i nie oferuje graficznego interfejsu użytkownika do konfiguracji czy obsługi. To sprawia, że QEMU jest jedną z najszybciej działających maszyn wirtualnych.
Która opcja jest dla Ciebie najlepsza?
Jeśli masz konkretne wymagania sprzętowe do spełnienia, lub tworzysz na jednej platformie sprzętowej, a potrzebujesz ukierunkować się na inną (np. z Windows na MacOS), użycie maszyny wirtualnej będzie koniecznością. Większość pozostałych wymagań dotyczących samego oprogramowania można spełnić za pomocą kontenerów.
Jak używać kontenerów i maszyn wirtualnych razem?
Używanie kontenerów w połączeniu z maszynami wirtualnymi jest całkowicie możliwe, aczkolwiek zastosowania są ograniczone. Można utworzyć maszynę wirtualną emulującą unikalną konfigurację sprzętową, a następnie na niej zainstalować dany system operacyjny. Po uruchomieniu maszyny wirtualnej i załadowaniu systemu operacyjnego można ustanowić środowisko uruchomieniowe kontenera. Od tego momentu dysponujemy funkcjonalnym systemem obliczeniowym z emulowanym sprzętem, na którym możemy instalować kontenery.
Jednym z praktycznych zastosowań tej konfiguracji jest eksperymentowanie z wdrażaniem systemów na czipach (SoC). Popularne urządzenia obliczeniowe typu SoC, takie jak Raspberry Pi czy płytki rozwojowe BeagleBone mogą być emulowane jako maszyna wirtualna w celu dokonania prób z uruchamianiem kontenerów do testów na rzeczywistym sprzęcie.
Jednakże w większości przypadków postawienie na jedno tylko rozwiązanie z powyższych również zaspokoi wszelkie nasze potrzeby. Kluczem do wyboru między kontenerami a maszyną wirtualną jest zrozumienie naszych potrzeb w zakresie zasobów, jak i wyrzeczeń, na które jesteśmy gotowi.
Udostępnij ten artykuł
Następny temat
Zalecane lektury
Dodaj te zasoby do zakładek, aby dowiedzieć się więcej na temat rodzajów zespołów DevOps lub otrzymywać aktualności na temat metodyki DevOps w Atlassian.