Kontejnery vs. virtuální stroje: Vysvětlení rozdílů [2023]

Začínáte s vizualizačními nástroji? Nebo prolomit cestu konverzací o technologii na kontejnerech a virtuálních počítačích.

Virtualizace zahrnuje proces, kdy jednotlivé zdroje, jako je RAM, CPU, sítě a disky, mohou být „virtualizovány“ a považovány za více zdrojů. Klíčový rozdíl je v tom, že kontejnery mohou virtualizovat pouze softwarové vrstvy postavené nad úrovní operačního systému. Naproti tomu virtuální stroje mohou virtualizovat celé stroje na hardwarové vrstvy.

I když existuje jasný rozdíl, existuje seznam podobností mezi kontejnery a virtuálními stroji, včetně toho, jak zlepšují efektivitu IT, umožňují přenositelnost aplikací, zlepšují DevOps a životní cyklus vývoje softwaru (SDLC). Více o tom později.

Tento příspěvek rozebírá kontejnery a virtuální stroje, ponoří se do výhod obou a končí poznámkou o výběru správného nástroje na základě vašich potřeb. Předpokládá se také, že máte nezbytnou znalost kontejnerů a virtuálních strojů. Pokud ne, je to stále skvělé místo, kde začít.

Historie virtualizace

Před rozšířením kontejnerů byly virtuální stroje jediným řešením pro izolaci prostředí v rámci fyzické infrastruktury. Ale teprve v roce 2013 Docker vydal svůj první kontejnerizační software.

A od té doby jste si možná všimli obrovského zájmu o kontejnery a o to, jak utvářejí krajinu cloud computingu.

Mnoho vývojářů získalo větší zájem, zejména o výhody agilního vývoje, který kontejnery nabízejí. Měli byste si však uvědomit, že kontejnery a virtuální stroje jsou postaveny na optimalizaci prostředků ve stávající fyzické infrastruktuře.

Jak funguje virtualizace

Virtualizace zahrnuje použití softwaru k vytvoření abstraktní vrstvy nad počítačovým hardwarem, což umožňuje hardwarové prvky, řekněme zejména z jednoho počítače, rozdělit do více počítačů. Takový software se nazývá hypervizor.

Hypervisor umožňuje souběžný běh různých operačních systémů a sdílení společných fyzických výpočetních zdrojů. Při použití na fyzických počítačích nebo serverech v datových centrech umožní fyzickým počítačům oddělit počítačové operační systémy (OS) a aplikace od hardwaru. Poté se může rozdělit na několik „virtuálních strojů“.

Co je to kontejner?

Zdroj: docker.com

Kontejnery představují lehkou a agilní metodu pro manipulaci s virtualizací. A protože nepotřebují hypervizory, opravňují vás k rychlejšímu poskytování zdrojů a rychlé dostupnosti nových aplikací.

Kontejnery můžete také zobrazit jako softwarové balíčky obsahující závislosti potřebné ke spuštění spravované aplikační softwarové aplikace.

Závislosti zahrnují systémové knihovny, balíčky externích kódů (od třetích stran) a zahrnutí všech ostatních aplikací na úrovni operačního systému. Všechny závislosti obsažené v kontejneru existují na úrovních zásobníku vyšších než operační systémy.

Klady 👍

  • Rychlost iterace – kontejnery jsou lehké a obsahují pouze software na vysoké úrovni; jsou snadno nastavitelné a můžete je rychle iterovat. Kontejnery také nabízejí rychlé dodání softwaru díky testování řízenému vývoji a dostupnosti nasazení.
  • Robustní ekosystém – Ve většině případů poskytují kontejnerové runtime systémy již hostované veřejné úložiště předem vyrobených kontejnerů. Úložiště obsahuje různé populární softwarové aplikace, jako je databáze a systémy zasílání zpráv, které lze stáhnout a nasadit, což zkracuje čas vývojovým týmům.
  • Škálování – Kontejnery jsou preferovány pro svou schopnost zvládat velké objemy pracovní zátěže a provozu. Odborníci na informační technologie (IT) mohou využívat kontejnery ke správě a poskytování cloudové infrastruktury s efektivním využitím zdrojů a usnadňujícím flexibilní využití.
  • Mikroslužby – kontejnery jsou ideální, pokud chcete nasadit více mikroslužeb. Mikroslužby zahrnují menší součásti, které jsou součástí vaší primární aplikace nebo softwaru. Když zabalíte každou mikroslužbu jako kontejner, máte nárok na bezproblémové nasazení, škálování a správu.
  •   Jak zacházet se soubory v Pythonu

    Zápory 👎

  • Využití sdíleného hostitele – Vzhledem k tomu, že kontejnery sdílejí společný základní hardwarový systém vybudovaný pod vrstvou operačního systému, existuje možnost, že zneužití v jednom kontejneru by se mohlo zlomit a rozšířit, což by ovlivnilo základní hardware. Také skutečnost, že většina kontejnerů má veřejná úložiště předem sestavených kontejnerů, představuje bezpečnostní riziko. Riziko je realizováno v případech, kdy narušený nebo zneužitý veřejný obraz působí jako zranitelnost ohrožující kybernetické útoky.
  • Spouští pouze jeden operační systém – Pokud jste typ, který používá pouze jeden operační systém, kontejnery vám umožňují spouštět starší verze, což je dobrá věc. Kontejnery však nejsou nejlepší volbou, pokud cílíte na různé operační systémy.
  • Zde jsou někteří známí poskytovatelé kontejnerů:

  • Docker – Docker je celosvětově nejrozšířenější kontejnerové řešení. Docker Hub je velké úložiště pro nejoblíbenější kontejnerové aplikace. Můžete si stáhnout kontejnery z Docker Hub a nasadit místní runtime Docker.
  • Linux Containers (LXC) – Projekt Linux Containers stojí za běhovým prostředím kontejnerů s otevřeným zdrojovým kódem. LXC od sebe izoluje procesy operačního systému. Pokud se ponoříte hlouběji do Dockeru, zjistíte, že Docker používá LXC ve své základní architektuře.
  • Co je to virtuální stroj?

    Zdroj: docker.com

    Na druhé straně virtuální stroje (VM) jsou velké (těžké) softwarové balíčky poskytující kompletní emulaci nízkoúrovňového hardwarového vybavení, jako je centrální procesorová jednotka (CPU), disk a síťová zařízení.

    Virtuální počítače vám umožňují provozovat více počítačů na různých operačních systémech a přitom stále na jednom počítači. Jak již bylo zmíněno, hypervizory jsou způsob interakce virtuálních počítačů s fyzickými počítači. Hypervizory oddělují virtuální počítače od sebe a alokují mezi ně zdroje, jako je paměť a procesory.

    Klady 👍

  • Zabezpečení plné izolace – Virtuální stroje fungují izolovaně jako plně samostatné systémy, imunní vůči zneužití a přerušení ze strany jiných virtuálních strojů. Pokud je útok spuštěn na jednotlivé virtuální stroje, je izolován, takže není možné kontaminovat sousední virtuální stroje.
  • Interaktivní vývoj – Kontejnery jsou často statické definice očekávaných závislostí a konfigurací potřebných ke spuštění kontejneru. Virtuální stroje jsou dynamické a umožňují interaktivní vývoj. Jakmile určíte své hardwarové potřeby, považujte virtuální stroj za počítač s nezbytností. Můžete ručně nainstalovat software a použít virtuální počítač k zachycení aktuální konfigurace stavu. Snímky virtuálního stroje lze použít jako správu verzí a v případě potřeby k obnovení virtuálního stroje na software v určitém čase nebo spuštění dalších strojů s požadovanou konfigurací.
  •   Všechny nejlepší klávesové zkratky Prezentací Google

    Zápory 👎

  • Rychlost iterace – Virtuální stroje jsou kompletní software, a proto jejich sestavení zabere čas. Úpravy ve snímku virtuálního počítače mohou chvíli trvat, než se iterují a ověří, že se poslední aktualizace chovají podle očekávání.
  • Náklady na velikost úložiště – Na základě skutečnosti, že virtuální počítače jsou opět softwarem s plným zásobníkem, pravděpodobně očekáváte, že budou značné. Ano, zabírají mnoho úložného prostoru a rychle rostou na gigabajty. Důsledkem je nedostatek místa na obou počítačích hostujících virtuální počítače.
  • Zde je několik oblíbených prodejců virtuálních strojů:

  • Virtualbox – Virtualbox je jednou z nejvíce zavedených platforem virtuálních strojů. Ekosystém Virtualbox má další nástroje pro vývoj a distribuci obrazů virtuálních strojů. Jedná se o bezplatný a open-source systém emulace architektury vlastněný společností Oracle.
  • VMware – VMware je postaven na hardwaru architektury x86 a je veřejně obchodovanou společností. Toto řešení přichází s hypervizorem pro nasazení a správu virtuálních strojů. Je preferován pro své robustní uživatelské rozhraní (UI) pro správu virtuálních strojů a efektivní podnikový nástroj nabízející podpůrné funkce.
  • Kontejnery vs. virtuální stroje

    Zatímco virtuální stroje existují již tak dlouho, jsou nahrazovány kontejnery pro podobné účely. Viděli jste klady a zápory obou technologických sad. Zde jsou hlavní rozdíly.

    Virtuální stroje FeatureContainersVelké a méně přenosné založené na tom, že každý virtuální počítač má svůj operační systém. Virtuální stroje zabírají velký prostor, měřeno v gigabajtech.
    Virtuální počítače nejsou přenosné. Nemají svůj vlastní operační systém. Mají vlastní operační systémy, a tak provádějí další úkoly, včetně; spouštění programů nekompatibilních s hostitelským OS, více programů na různých operačních systémech a spouštění aplikací, které nemohou sdílet prostředky a funkce operačního systému. Velikost a přenosnostMalé a přenosné díky sdílení operačního systému. Kontejnery zabírají místo měřené v megabajtech.
    Kontejnery lze přesouvat mezi různými počítači. Kontejnery se spouštějí rychleji než virtuální stroje díky jejich již spuštěnému operačnímu systému. Spuštění trvá několik sekund. Rychlost spouštění VM jsou pomalé, protože musí nejprve zavést vlastní operační systémy. Spuštění trvá několik minut.Cena virtuálních počítačů je relativně vyšší – vysoká potřeba zdrojů a úrovní složitosti a vysoké náklady.Přístup ke zdrojůmKontejnery mají přístup ke všem zdrojům v hostitelském počítači.Virtuální počítače využívají specifické zdroje, které jsou jim přiděleny pomocí hypervizoru. Zabezpečení Méně bezpečné. Kontejnery běžící na sdíleném hostitelském operačním softwaru jsou zranitelné, když je ohrožen hostitelský OS.Složité nasazení; úroveň složitosti virtuálních počítačů naznačuje, že potřebují více času na vývoj. Nasazení se neliší.DeploymentSnadné nasazení; je to kvůli jeho povaze, „samostatný“ a jeho nasazení, přesun nebo upgrade je trochu snadné. Cena virtuálních počítačů je relativně vyšší. Vysoká potřeba zdrojů a úrovní složitosti spolu s tím jsou vysoké náklady. CenaCena kontejnerů je relativně nižší, protože je zde méně požadavků než u virtuálních počítačů. Cena virtuálních počítačů je relativně vyšší – vysoká potřeba zdrojů a složitost úrovně spolu s vysokými náklady.

      Jak najít data v Tabulkách Google pomocí funkce VLOOKUP

    Jak používat kontejnery a virtuální stroje současně

    Pokud vás zajímá, zda je možné používat kontejnery a virtuální stroje společně, odpověď je ano. Praktické případy jsou však omezené. Můžete vytvořit virtuální počítač pro emulaci konkrétních hardwarových konfigurací a instalaci operačního systému.

    Jakmile váš virtuální počítač zavede operační systém a je plně funkční, jste nyní vybaveni emulovaným výpočetním systémem se specifickým hardwarem, na který můžete instalovat kontejnery.

    Dobrým příkladem pro ilustraci této konfigurace je experimentování se systémem pro nasazení čipů. Některé populární metody pro výpočetní zařízení na čipu, jako jsou vývojové desky BeagleBone a Raspberry Pi, lze emulovat jako virtuální stroje pro experimentování s provozními (běžícími) kontejnery před testováním na skutečném hardwaru.

    Další výhodou použití sjednocení kontejnerů a virtuálních strojů je zvýšení bezpečnosti. Můžete například nasadit kontejnery ve virtuálních počítačích. Zvažte příklad, kdy je na jednom počítači nasazeno deset kontejnerů, abyste ukázali, jak je to užitečné.

    Pokud dojde ke kompromitaci počítače, riskujete ovlivnění deseti kontejnerů. Řešení je dosaženo distribucí deseti kontejnerů na deset virtuálních strojů. Pokud dojde ke kompromitaci jednoho virtuálního stroje, ostatní části systémové aplikace stále obvykle fungují.

    Závěrečná slova

    Pokud máte přesné specifikace hardwaru pro svůj projekt nebo vyvíjíte na jednom hardwaru a stále se zaměřujete na jiný, jako Windows vs. MacOS, bylo by nejlepší použít virtuální stroje. V jiných případech, kdy jsou požadavky „pouze software“, by nejlepší možností bylo použití kontejnerů.

    Ve většině případů budou vaše potřeby uspokojeny některou z vašich možností. Chcete-li vybrat ten nejlepší, pochopte své potřeby zdrojů a související kompromisy. Správný nástroj tedy bude záviset na vašem projektu.

    Pokud potřebujete rychlé a efektivní nasazení, kontejnery jsou vaší nejlepší volbou. Pokud vaše organizace potřebuje virtualizovat kompletní operační systém na hardwaru, jsou nejlepší virtuální počítače. A pokud chcete maximalizovat zabezpečení, nejlepší by byla kombinace obou; s tím však souvisí související náklady.

    A konečně, jak kontejnery, tak virtuální stroje jsou platná řešení. Rozhodujícím vodítkem by však měly být vaše specifikace. Pokud stále potřebujete další pokyny a hluboké porozumění, navrhoval bych přejít na Docker vs. virtuální stroj.