Dopiero zaczynasz korzystać z narzędzi do wizualizacji? Albo włamać się do dyskusji technologicznej na kontenerach i maszynach wirtualnych.
Wirtualizacja obejmuje proces, w którym pojedyncze zasoby, takie jak pamięć RAM, procesor, sieć i dyski, można „zwirtualizować” i traktować jako wiele zasobów. Kluczowa różnica polega na tym, że kontenery mogą wirtualizować tylko warstwy oprogramowania zbudowane powyżej poziomu systemu operacyjnego. Natomiast maszyny wirtualne mogą wirtualizować całe maszyny do warstw sprzętowych.
Chociaż istnieje wyraźne rozróżnienie, istnieje lista podobieństw między kontenerami a maszynami wirtualnymi, w tym sposób, w jaki poprawiają wydajność IT, przenośność do aplikacji, ulepszają DevOps i cykl życia oprogramowania (SDLC). Więcej na ten temat później.
W tym poście omówiono kontenery i maszyny wirtualne, omówiono zalety obu tych rozwiązań i zakończono uwagą dotyczącą wyboru odpowiedniego narzędzia w zależności od potrzeb. Zakłada się również, że masz niezbędną wiedzę na temat kontenerów i maszyn wirtualnych. Jeśli nie, nadal jest to doskonałe miejsce do rozpoczęcia.
Spis treści:
Historia wirtualizacji
Przed rozpowszechnieniem kontenerów maszyny wirtualne były jedynym rozwiązaniem służącym do izolowania środowisk w infrastrukturze fizycznej. Ale dopiero w 2013 roku Docker wydał swoje pierwsze oprogramowanie do konteneryzacji.
Od tego czasu być może zauważyłeś ogromne zainteresowanie kontenerami i tym, jak kształtują one krajobraz przetwarzania w chmurze.
Wielu programistów zyskało większe zainteresowanie, szczególnie korzyściami płynącymi ze zwinnego programowania oferowanego przez kontenery. Należy jednak pamiętać, że kontenery i maszyny wirtualne są budowane w oparciu o optymalizację zasobów w istniejącej infrastrukturze fizycznej.
Jak działa wirtualizacja
Wirtualizacja polega na użyciu oprogramowania do stworzenia warstwy abstrakcji na sprzęcie komputerowym, co pozwala na podzielenie elementów sprzętowych, zwłaszcza z jednego komputera, na wiele komputerów. Takie oprogramowanie nazywa się hypervisorem.
Hypervisor umożliwia równoczesne działanie różnych systemów operacyjnych, współdzieląc wspólne fizyczne zasoby obliczeniowe. W przypadku użycia na komputerach fizycznych lub serwerach w centrach danych umożliwi komputerom fizycznym oddzielenie komputerowych systemów operacyjnych (OS) i aplikacji od sprzętu. Następnie może podzielić się na wiele „maszyn wirtualnych”.
Co to jest kontener?
źródło: docker.com
Kontenery to lekka, zwinna metoda obsługi wirtualizacji. A ponieważ nie potrzebują hiperwizorów, uprawniają do szybszego udostępniania zasobów i szybkiego udostępniania nowych aplikacji.
Kontenery można również wyświetlać jako pakiety oprogramowania zawierające zależności wymagane do wykonania zarządzanej aplikacji.
Zależności obejmują biblioteki systemowe, zewnętrzne (zewnętrzne) pakiety kodu oraz włączenie wszystkich innych aplikacji na poziomie systemu operacyjnego. Wszystkie zależności zawarte w kontenerze istnieją na poziomach stosu wyższych niż systemy operacyjne.
Plusy 👍
Wady 👎
Popularni dostawcy kontenerów
Oto kilku znanych dostawców kontenerów:
Co to jest maszyna wirtualna?
źródło: docker.com
Z drugiej strony maszyny wirtualne (VM) to duże (ciężkie) pakiety oprogramowania zapewniające pełną emulację niskopoziomowego sprzętu sprzętowego, takiego jak jednostka centralna (CPU), dysk i urządzenia sieciowe.
Maszyny wirtualne umożliwiają uruchamianie wielu maszyn w różnych systemach operacyjnych, ale wciąż na jednym komputerze. Jak wspomniano wcześniej, hiperwizory to sposób interakcji maszyn wirtualnych z komputerami fizycznymi. Hypervisory oddzielają maszyny wirtualne od siebie i przydzielają między nie zasoby, takie jak pamięć i procesory.
Plusy 👍
Wady 👎
Popularni dostawcy maszyn wirtualnych
Oto kilku popularnych dostawców maszyn wirtualnych:
Kontenery a maszyny wirtualne
Chociaż maszyny wirtualne istnieją od tak dawna, są zastępowane przez kontenery do podobnych celów. Widziałeś zalety i wady obu stosów technologii. Oto podstawowe różnice.
FeatureContainers Virtual MachinesDuże i mniej przenośne w oparciu o każdą maszynę wirtualną posiadającą własny system operacyjny. Maszyny wirtualne zajmują dużą przestrzeń mierzoną w gigabajtach.
Maszyny wirtualne nie są przenośne. Nie mają własnego systemu operacyjnego. Mają własne systemy operacyjne i dzięki temu wykonują dodatkowe zadania, w tym; uruchamianie programów niekompatybilnych z systemem operacyjnym hosta, wiele programów w różnych systemach operacyjnych oraz uruchamianie aplikacji, które nie mogą współdzielić zasobów i funkcji systemu operacyjnego.Rozmiar i przenośnośćMałe i przenośne ze względu na współdzielenie systemu operacyjnego. Kontenery zajmują miejsce mierzone w megabajtach.
Kontenery można przenosić między różnymi komputerami. Kontenery działają szybciej niż maszyny wirtualne ze względu na już działający system operacyjny. Uruchomienie zajmuje kilka sekund. Szybko uruchamiające się maszyny wirtualne są powolne, ponieważ muszą najpierw uruchomić własne systemy operacyjne. Uruchomienie zajmuje kilka minut. Cena maszyn wirtualnych jest relatywnie wyższa — duże zapotrzebowanie na zasoby i poziomy złożoności oraz wysoki koszt. Dostęp do zasobów Kontenery mają dostęp do wszystkich zasobów na maszynie hosta. Maszyny wirtualne wykorzystują przydzielone im określone zasoby przez hiperwizora. Bezpieczeństwo Mniej bezpieczne. Kontenery działające na współdzielonym oprogramowaniu operacyjnym hosta są podatne na ataki w przypadku naruszenia bezpieczeństwa systemu operacyjnego hosta. Złożone wdrożenie; poziom złożoności maszyn wirtualnych wskazuje, że potrzebują one więcej czasu na rozwój. Wdrożenie nie jest inne.WdrażanieŁatwe wdrażanie; wynika to z jego natury, „samowystarczalności” i niewielkiej łatwości wdrażania, przenoszenia lub aktualizacji. Cena maszyn wirtualnych jest stosunkowo wyższa. Wysokie zapotrzebowanie na zasoby i poziomy złożoności, wraz z nim, to wysoki koszt. KosztCena kontenerów jest stosunkowo niższa, ponieważ wymagania są mniejsze niż w przypadku maszyn wirtualnych. Cena maszyn wirtualnych jest stosunkowo wyższa — duże zapotrzebowanie na zasoby i złożoność poziomy, wraz z wysokimi kosztami.
Jak jednocześnie korzystać z kontenerów i maszyn wirtualnych
Jeśli zastanawiasz się, czy możliwe jest jednoczesne korzystanie z kontenerów i maszyn wirtualnych, odpowiedź brzmi: tak. Chociaż praktyczne przypadki są ograniczone. Możesz utworzyć maszynę wirtualną, aby emulować określone konfiguracje sprzętowe i zainstalować system operacyjny.
Gdy Twoja maszyna wirtualna uruchomi system operacyjny i będzie w pełni funkcjonalna, będziesz teraz wyposażony w emulowany system obliczeniowy z określonym sprzętem, na którym możesz zainstalować kontenery.
Dobrym przykładem ilustrującym tę konfigurację jest eksperymentowanie z systemem wdrażania chipów. Niektóre popularne metody dla wbudowanych urządzeń obliczeniowych, takie jak płyty rozwojowe BeagleBone i Raspberry Pi, można emulować jako maszyny wirtualne w celu eksperymentowania z działającymi (uruchomionymi) kontenerami przed testowaniem na rzeczywistym sprzęcie.
Kolejną zaletą korzystania z unii kontenerów i maszyn wirtualnych jest zwiększenie bezpieczeństwa. Na przykład możesz wdrażać kontenery na maszynach wirtualnych. Rozważ przykład, w którym dziesięć kontenerów jest wdrożonych na jednym komputerze, aby zademonstrować, jak jest to pomocne.
Jeśli komputer zostanie przejęty, istnieje ryzyko wpływu na dziesięć kontenerów. Rozwiązanie uzyskuje się poprzez dystrybucję dziesięciu kontenerów na dziesięć maszyn wirtualnych. Jeśli jedna maszyna wirtualna zostanie naruszona, inne części aplikacji systemowej zwykle nadal działają.
Ostatnie słowa
Jeśli masz dokładne specyfikacje sprzętowe dla swojego projektu lub pracujesz na jednym sprzęcie, a wciąż celujesz w inny, jak Windows czy MacOS, najlepiej byłoby użyć maszyn wirtualnych. W innych przypadkach, gdy wymagania dotyczą „tylko oprogramowania”, najlepszym rozwiązaniem byłoby użycie kontenerów.
W większości przypadków twoje potrzeby zostaną zaspokojone przez któryś z twoich wyborów. Aby wybrać najlepszy, zrozum swoje potrzeby w zakresie zasobów i związane z nimi kompromisy. Właściwe narzędzie będzie zatem zależeć od Twojego projektu.
Jeśli potrzebujesz szybkiego i wydajnego wdrożenia, najlepszym wyborem są kontenery. Jeśli Twoja organizacja musi zwirtualizować cały system operacyjny na sprzęcie, maszyny wirtualne są najlepsze. A jeśli chcesz zmaksymalizować bezpieczeństwo, połączenie obu byłoby najlepsze; wiąże się to jednak z kosztami.
Wreszcie, zarówno kontenery, jak i maszyny wirtualne są prawidłowymi rozwiązaniami. Decydującym czynnikiem przewodnim powinny być jednak Twoje specyfikacje. Jeśli nadal potrzebujesz więcej wskazówek i dogłębnego zrozumienia, sugerowałbym przejście do Docker vs. maszyna wirtualna.