Docker a maszyna wirtualna (VM) – zrozumienie różnic

Jednym z często zadawanych pytań dotyczących Dockera jest to, czym różni się on od VM (maszyny wirtualnej).

Jeśli chodzi o infrastrukturę chmury, maszyna wirtualna jest standardem dla wielu jej zalet. Jednak co by było, gdybyś miał alternatywę dla maszyny wirtualnej, która byłaby lżejsza, bardziej ekonomiczna i skalowalna. Tym właśnie jest Docker.

Docker to technologia oparta na kontenerach, która umożliwia tworzenie aplikacji rozproszonych. W tym wpisie na blogu wyjaśnię różnice między maszynami wirtualnymi a kontenerami Dockera.

Co to jest maszyna wirtualna?

Maszyna wirtualna to system, który działa dokładnie jak komputer.

Mówiąc prościej, umożliwia uruchamianie tego, co wydaje się być na wielu oddzielnych komputerach na sprzęcie, czyli na jednym komputerze. Każda maszyna wirtualna wymaga swojego podstawowego systemu operacyjnego, a następnie sprzęt jest zwirtualizowany.

Co to jest Docker?

Docker to narzędzie, które wykorzystuje kontenery, aby znacznie ułatwić tworzenie, wdrażanie i uruchamianie aplikacji. Wiąże aplikację i jej zależności wewnątrz kontenera.

Docker uczenia jest proste!

Docker a maszyna wirtualna

Teraz opowiem o istotnych różnicach między kontenerami dockera a maszynami wirtualnymi. Cóż, znaczące różnice to obsługa systemu operacyjnego, bezpieczeństwo, przenośność i wydajność.

Omówmy więc każdy z tych terminów jeden po drugim.

Obsługa systemu operacyjnego

Obsługa systemu operacyjnego maszyny wirtualnej i kontenera Docker jest bardzo różna. Na powyższym obrazku widać, że każda maszyna wirtualna ma swój system operacyjny gościa nad systemem operacyjnym hosta, co powoduje, że maszyny wirtualne są ciężkie. Z drugiej strony kontenery Docker współdzielą system operacyjny hosta i dlatego są lekkie.

Współdzielenie systemu operacyjnego hosta między kontenerami sprawia, że ​​są one bardzo lekkie i pomagają im uruchomić się w ciągu zaledwie kilku sekund. W związku z tym koszty zarządzania systemem kontenerowym są bardzo niskie w porównaniu z maszynami wirtualnymi.

Kontenery platformy Docker nadają się do sytuacji, w których chcesz uruchamiać wiele aplikacji na jednym jądrze systemu operacyjnego. Ale jeśli masz aplikacje lub serwery, które muszą działać w różnych wersjach systemu operacyjnego, wymagane są maszyny wirtualne.

Bezpieczeństwo

Maszyna wirtualna nie udostępnia systemu operacyjnego, a jądro hosta ma silną izolację. Dzięki temu są bezpieczniejsze w porównaniu do kontenerów. Kontener ma wiele zagrożeń bezpieczeństwa i luk w zabezpieczeniach, ponieważ kontenery mają współdzielone jądro hosta.

Ponadto, ponieważ zasoby platformy Docker są współdzielone, a nie w przestrzeni nazw, osoba atakująca może wykorzystać wszystkie kontenery w klastrze, jeśli uzyska dostęp do choćby jednego kontenera. W maszynie wirtualnej nie masz bezpośredniego dostępu do zasobów, a hipernadzorca ogranicza wykorzystanie zasobów w maszynie wirtualnej.

Ruchliwość

Kontenery platformy Docker są łatwe do przenoszenia, ponieważ nie mają oddzielnych systemów operacyjnych. Kontener można przenieść do innego systemu operacyjnego i można go uruchomić natychmiast. Z drugiej strony maszyny wirtualne mają oddzielny system operacyjny, więc przenoszenie maszyny wirtualnej jest trudne w porównaniu z kontenerami, a także zajmuje dużo czasu ze względu na jej rozmiar.

Do celów programistycznych, w których aplikacje muszą być rozwijane i testowane na różnych platformach, idealnym wyborem są kontenery Docker.

Wydajność

Porównywanie maszyn wirtualnych i kontenerów platformy Docker nie byłoby sprawiedliwe, ponieważ oba są używane do różnych celów. Ale lekka architektura dockera, jego mniej zasobochłonna funkcja, sprawia, że ​​jest to lepszy wybór niż maszyna wirtualna. Dzięki temu kontenery mogą uruchamiać się bardzo szybko w porównaniu z maszynami wirtualnymi, a wykorzystanie zasobów różni się w zależności od obciążenia lub ruchu w nim.

W przeciwieństwie do maszyn wirtualnych nie ma potrzeby trwałego przydzielania zasobów do kontenerów. Skalowanie i duplikowanie kontenerów jest również łatwym zadaniem w porównaniu z maszynami wirtualnymi, ponieważ nie ma potrzeby instalowania w nich systemu operacyjnego.

Wniosek

Oto tabela, która podsumowuje różnice między maszyną wirtualną a kontenerem Docker.

Maszyna wirtualna
Kontener Dockera
Izolacja procesu na poziomie sprzętowym
Izolacja procesu na poziomie systemu operacyjnego
Każda maszyna wirtualna ma oddzielny system operacyjny
Każdy kontener może współdzielić system operacyjny
Buty w kilka minut
Buty w kilka sekund
Maszyny wirtualne mają kilka GB
Kontenery są lekkie (KB/MB)
Gotowe maszyny wirtualne są trudne do znalezienia
Gotowe kontenery dokowane są łatwo dostępne
Maszyny wirtualne można łatwo przenieść na nowy host
Kontenery są niszczone i ponownie tworzone, a nie przemieszczane
Tworzenie maszyny wirtualnej zajmuje stosunkowo więcej czasu
Kontenery można utworzyć w kilka sekund
Większe wykorzystanie zasobów
Mniejsze zużycie zasobów

Podobał Ci się artykuł? Co powiesz na dzielenie się ze światem?