Docker vs. Virtuálne stroje: Čo je najlepšie pre váš domáci lab?


Pokiaľ ide o vašu domácu laboratórium, existujú dve hlavné technológie, ktoré sa používajú na spustenie vašich služieb: virtuálne stroje a Docker kontajnery. Tu je rozdelenie toho, čo ich odlišuje a ktoré by ste mali použiť vo vašej domácej laboratóriu.

Čo je to Docker kontajner?

Ak ste nikdy nepočuli o Docker kontejnery, tu je vlastná definícia Dockeru: "... ľahký, samostatný, spustiteľný balík softvéru, ktorý obsahuje všetko potrebné na spustenie aplikácie: kód, runtime, systémové nástroje, systémové knižnice a nastavenia."

Jednoducho povedané, je to vlastne samostatný balík, ktorý obsahuje všetko potrebné na spustenie softvéru, ktorý chcete, a je predkonfigurovaný. V podstate ide o malú virtuálnu inštaláciu akéhokoľvek operačného systému, na ktorom kontajner beží, ktorá je predprogramovaná na vykonávanie konkrétnej úlohy.

Napríklad, ak spustíte kontajner Docker pre Plex, je to pripravený balíček, ktorý spustí Plex na akomkoľvek systéme, ktorý podporuje Docker. Je predkonfigurovaný ako kontajnerová úroveň pre to, čo potrebuje robiť, a jednoducho odovzdáte niekoľko argumentov ako premenné prostredia, pripojenia objemu alebo portové pripojenia, aby to fungovalo.

Čo je to virtuálny stroj?

Virtuálny stroj je ako Docker kontajner, len omnoho robustnejší. Kým sú Docker kontajnery extrémne ľahké, virtuálne stroje sú celé operačné systémy, ktoré bežia so všetkými závislosťami potrebnými pre v podstate všetok hardvér.

Avšak, vo virtuálnom stroji môžete spustiť omnoho viac. Virtuálny stroj emuluje celý počítač, zatiaľ čo Docker kontajner emuluje len to, čo je absolútne nevyhnutné na spustenie jedného kusu softvéru.

Docker vyniká v jednoduchom nasadzovaní množstva služieb.

Docker samotný je služba, ktorá spúšťa ďalšie služby vo svojich kontajneroch.

Môj Docker host je vlastne virtuálny stroj Ubuntu na mojom serveri. V rámci tejto Docker inštancie mám aktuálne nastavených 31 kontajnerov, z ktorých 29 aktívne beží 24/7. Služby, ktoré prevádzkujem na svojom Docker systéme, zahŕňajú veci ako AudioBookshelf, Plex, Pi-Hole, Ghost, Immich, OpenSpeedtest, Scrypted a mnoho ďalších.

Aj keď je možné nainštalovať každú aplikáciu ako vlastný balík, to by si vyžadovalo nainštalovať množstvo závislostí, aj keď sú potrebné iba pre jednu aplikáciu. Potom, ak túto aplikáciu neskôr odstránite, zostanú nezrelé závislosti, ktoré operačný systém už nepotrebuje.

S Dockerom je možné spustiť službu za pár sekúnd, používať ju niekoľko týždňov a potom jednoducho odstrániť kontajner. Keďže Docker kontajnery sú samostatné, keď jeden odstránite, všetky závislosti zmiznú s ním. Nič nezostane, iba možno objem, ktorý môže byť tiež odstránený jediným príkazom.

Absolútne milujem Docker, pretože mi umožňuje spustiť rôzne služby v mojej domácej labáku. Môžete ho použiť na testovanie nového rozhrania domáceho labáku – ak len zistíte, že nespĺňa vaše potreby a nepáči sa vám, jednoducho odstránite kontejner a vyskúšate iný.

Keďže sú kontajnery Docker predkonfigurované, znamená to, že sa nemusíte zaoberať učením sa, ako niečo nainštalovať. Stačí získať súbor Docker Compose alebo sledovať inštalačný skript príkazového riadku Docker a zvyčajne som pripravený za pár minút s akoukoľvek službou, ktorú spúšťam.

Virtuálne stroje sú najlepšie pre robustnejšie nasadenia.

Aj keď milujem Docker a väčšina služieb v mojej domácej laboratórii na ňom beží, občas je jednoducho dedikovaný virtuálny stroj tou správnou voľbou pre danú úlohu.

S virtuálnym strojom máte vyhradený prístup k hardvéru na vašom počítači. To by sa mohlo využiť na vytvorenie herného virtuálneho stroja, ktorý beží na Windows 11 so pripojenou grafickou kartou. Mohlo by to byť aj len na vytvorenie druhej (alebo tretej, či štvrtej) inštancie Dockera.

Mal som Docker aplikáciu, ktorá mi robila problémy pri pokuse o spustenie v rámci tej istej zásoby ako moje ostatné služby. Tak som spustil druhý a tretí virtuálny stroj s Ubuntu, aby mohli služby bežať, akoby boli na rôznych počítačoch, aj keď sú všetky hostované na tom istom hlavnom serveri.

Virtuálne stroje sú tiež skvelé, ak chcete vyskúšať plnohodnotný operačný systém. Napríklad, môžete nainštalovať Ubuntu desktop na virtuálny stroj, aby ste sa s ním mohli pohrať, namiesto jeho inštalácie na venovanom počítači. Urobil som to a čiastočne kvôli virtuálnemu stroju teraz nainštalujem Ubuntu na jeden z mojich desktopov, aby som ho mohol naozaj vyskúšať a hrať sa s ním.

Jednoducho povedané, virtuálne stroje sú robustnejšie než Docker kontajnery, ale tiež vyžadujú viac zdrojov na beh.

Ktorý by ste mali použiť vo svojej domácej laboratóriu?

To, či by ste mali použiť Docker kontajner alebo virtuálny stroj, bude naozaj závisieť od konkrétneho prípadu.

Podľa môjho názoru, 99 percent času budete s Docker kontajnerom v poriadku. Docker kontajnery sú menšie a ľahšie ako virtuálne stroje a vyžadujú omnoho menej konfigurácie. Môžem spustiť 10 Docker kontajnerov (možno aj viac) v čase, ktorý mi trvá nainštalovať Ubuntu server na virtuálny stroj.

Na druhej strane určite existujú okolnosti, kde je jednoduchšie ísť cestou virtuálneho stroja. Poznám ľudí, ktorí na svojich serveroch spúšťajú virtuálne stroje s Windows 11, aby hrali hry. Osobne prevádzkujem tri virtuálne stroje, ktoré vykonávajú rôzne úlohy s Dockerom. Jeden je môj primárny Docker server a ďalšie dva spúšťajú jednotlivé Dockery pre herný server Pterodactyl, pretože funguje najlepšie na dedikovaných počítačoch.

Keďže nemám veľa vyhradených počítačov, spustenie Pterodactyl na samostatných virtuálnych strojoch je najlepšie, čo môžem urobiť. Pre softvér (ktorý beží na Dockeri) je to na samostatných počítačoch. Avšak všetko to beží na rovnakom systéme, čo by nebolo možné bez virtuálnych strojov.

Súvisiace články: