Vagrant

Docker vs. Vagrant

Docker vs. Vagrant

Vývojové a prevádzkové tímy sa od začiatku zaoberajú zložitosťou softvérových prostredí. Je to bežný problém, keď pracovný kód v jednom prostredí nefunguje v inom.

Docker aj tulák pomáhajú vytvárať predvídateľné a opakovateľné vývojové prostredia. Docker však používa kontajnerovú technológiu, zatiaľ čo tulák na dosiahnutie tohto cieľa používa virtuálne stroje. Pochopenie silných a slabých stránok Dockera a Vagranta pomôže vývojárom kombinovať tieto nástroje tak, aby dosiahli požadované výsledky.

Najprv začnime so základnými technológiami.

Virtuálny prístroj

Virtuálny stroj (VM) emuluje fyzický počítač. Dodáva sa s vlastným kompletným operačným systémom a alokáciou zdrojov. Hostiteľský počítač poskytuje potrebné fyzické prostriedky, ale virtualizované prostredie funguje ako nezávislý stroj s vlastným BIOSom, CPU, úložiskom a sieťovými adaptérmi.

Aj keď je dnes VMware najznámejšou pre modernú technológiu VM, myšlienka virtuálneho stroja existuje už dlho.

V roku 1965 potrebovalo IBM Yorktown Research Center spôsob, ako merať účinnosť rôznych myšlienok počítačovej vedy. Vedecký tím chcel prepnúť medzi funkciami a zmerať výsledky. Tím navrhol schému rozdelenia jedného stroja na menšie oddiely. Menšie oddiely by spravovali svoje vlastné zdroje. Boli by to malé virtuálne stroje.

Myšlienka VM bola úspešná. IBM začala vyrábať operačné systémy založené na virtuálnych strojoch. Systémy IBM System 370 (S / 370) a IBM System 390 (S / 390), oba systémy založené na IBM VM / ESA, sa stali obľúbenými medzi podnikmi a univerzitami, pretože umožnili inštitúciám umožniť ich používateľom zdieľať výpočtové zdroje bez toho, aby ovplyvňovali vzájomné prostredia. Táto myšlienka tiež pomohla vytvoriť operačný systém Unix a programovací jazyk Java.

Moderné virtuálne stroje fungujú na hypervízoroch. Hypervisori sú softvér, firmvér alebo hardvér zodpovedný za vytváranie a vykonávanie virtuálnych počítačov. Na trhu je k dispozícii veľa hypervízorov. KVM, Red Hat Enterprise Virtualization (RHEV), XenServer, Microsoft Hyper-V a VMware vSphere / ESXi sú poprednými hráčmi.

Virtuálne stroje dnes podnietili rast cloud computingu. Amazon AWS, Microsoft Azure, Google Cloud, Digital Ocean a ďalšie cloudové spoločnosti vo veľkej miere závisia od virtualizačnej technológie.

Kontajnery

Kontajnery vytvárajú virtualizáciu na úrovni operačného systému. Pracujú ako spustiteľný softvérový balík, ktorý izoluje aplikácie od okolitého prostredia. Vo vnútri balíka má kontajner potrebné vlastnosti, ako je kód, runtime, systémové knižnice a nástroje, aby bola aplikácia oddelená od vonkajšieho vplyvu. Beží na operačnom systéme hostiteľského počítača. Kontajnery zdieľajú knižnice a binárne súbory, keď je to možné, a oddeľujú iba nevyhnutné zdroje.

V roku 1979 mohli systémové hovory „chroot“ izolovať procesy pre Unix. Bolo to prvé semeno myšlienky kontajnera. Prvotná technológia kontajnerov začala s FreeBSD Jails v roku 2000. O rok neskôr umožnil Linux VServer spustenie viacerých strojov Linux na jednom hostiteľovi. V roku 2004 poskytovala zóna Oracle Solaris podobné funkcie ako FreeBSD Jails. V rokoch 2006-2007 spoločnosť Google vyvinula Process Container a potom ho zlúčila do jadra Linuxu. Linux Containers (LXC) bol vytvorený v roku 2008 s cieľom využiť výhody linuxových skupín a menného priestoru. V roku 2013 vznikol Docker spojením myšlienok LXC. Pridala tiež nástroje na ľahké vytváranie a načítanie obrázkov kontajnerov.

Docker

Docker je open-source kontajnerová technológia založená na LXC. Je populárny, pretože uľahčuje vytváranie, spustenie a nasadenie aplikácií v samostatnom prostredí. Docker nevytvára celý operačný systém ako virtuálny stroj. Namiesto toho používa jadro operačného systému hostiteľa a vytvára virtualizáciu iba pre aplikáciu a potrebné knižnice. Vďaka tomuto prístupu je oveľa ľahší ako virtuálne stroje.

Kontajnery Docker sa vytvárajú z obrázkov Docker. Docker Images možno považovať za snímky strojov. Používatelia môžu ľahko založiť kontajner z obrázka. Obrázky sú vytvorené ako vrstvy. Predpokladajme, že vývojový tím potrebuje kontajner s nainštalovaným Apache a Python na určitej verzii systému Linux. Vývojár si môže stiahnuť obrázok Linuxu z Docker Hubu, spustiť kontajner, nainštalovať Apache a Python, vytvoriť nový obrázok z kontajnera a zdieľať ho. Ostatní členovia tímu nemusia absolvovať rovnakú inštaláciu. Pomáha udržiavať konzistentné prostredie pre všetkých.

Docker tiež podporuje skriptovacie aplikácie a aplikácie využívajúce viac kontajnerov. Používatelia môžu na definovanie požiadaviek použiť textový súbor Dockerfile a následné vytváranie kontajnerov prostredníctvom programu Docker Compose. Vyššie uvedený príklad vytvorenia servera Apache / Python / Linux je možné dosiahnuť aj týmto procesom. S programom Docker Compose stačí tímom zdieľať súbor Docker, aby vytvorili rovnaké prostredie.

Docker má špecializovanejšie nástroje pre zložité úlohy. Docker Swarm pomáha organizovať rozsiahle nasadenia dockerov.

Vagrant

Vagrant je nástroj typu open-source, ktorý pomáha vytvárať a udržiavať virtuálne stroje. Funguje s VirtualBox, VMWare, AWS a ďalšími poskytovateľmi.

Vagrant zjednodušuje správu virtuálnych počítačov. Pomocou súboru Vagrantfile môžu vývojári definovať vlastnosti virtuálneho stroja, ako je operačný systém, inštalácie softvéru a ďalšie. Textový súbor Vagrantfile je možné zdieľať pomocou riadenia verzií a potrebný stroj je možné spustiť pomocou jednoduchého príkazu ako „vagrant up“. Používatelia sa potom môžu prihlásiť do zariadenia ako fyzický server.

Kedy použiť Docker alebo Vagrant

Používanie Docker alebo Vagrant často závisí od nutnosti kontajnerov alebo virtuálnych strojov. Tu je niekoľko podobností a rozdielov medzi Dockerom a Vagrantom z hľadiska použitia:

Podobnosti

Docker aj Vagrant majú ľahko konfigurovateľné prostredia, ktoré je možné ovládať pomocou skriptov. Sú tiež priateľskí k cloudu.

Rozdiely

Tulák virtuálny stroj poskytuje oddelenie zabezpečenia založené na jadre. Vďaka oddeleniu sú virtuálne stroje menej riskantné ako kontajnery. Ale kontajnery Docker sú veľmi ľahké. Využívajú menej zdrojov a majú rýchlu realizáciu. Na jednom hostiteľovi teda môžete mať oveľa viac kontajnerov ako na virtuálnych počítačoch. Tiež spustenie a zastavenie kontajnerov je v porovnaní s virtuálnymi počítačmi takmer okamžité. Virtuálne počítače prechádzajú úplným cyklom spustenia systému BIOS a operačného systému.

Vďaka oddeleniu zabezpečenia virtuálneho stroja je zlyhanie VM samostatnejšie. Na druhej strane kontajnery zdieľajú zdroje a môžu mať kaskádový efekt zlyhania. K jadru hostiteľského operačného systému sa môžu dostať aj bezpečnostné hrozby kontajnera.

Rýchlosť vykonania a ľahká stopa kontajnerov však robia Docker veľmi atraktívnym pre vývoj. Vďaka architektúre mikroslužieb môžu kontajnery fungovať dobre, pretože rizikové faktory sa zmierňujú používaním mikroslužieb. Taktiež sa dosahuje pokrok v zaistení väčšej bezpečnosti Dockeru každý deň.

Záver

Docker a Vagrant sú užitočné technológie, ktoré môžu vývojárom pomôcť zvýšiť ich produktivitu. Ak je problémom zabezpečenie aplikácií, potom by mohol byť dobrý nápad použiť Vagrant a VM. Pre rýchly vývoj a zdieľanie poskytuje Docker výhodu. Väčšina tímov využíva obidva režimy na zabezpečenie bezproblémovej prevádzky.

Referencie:

Stredné tlačidlo myši nefunguje v systéme Windows 10
The stredné tlačidlo myši pomáha vám prechádzať dlhé webové stránky a obrazovky s množstvom údajov. Ak sa to zastaví, budete nakoniec používať klávesn...
Ako zmeniť ľavé a pravé tlačidlo myši na počítači so systémom Windows 10
Je úplnou normou, že všetky zariadenia počítačových myší sú ergonomicky navrhnuté pre pravákov. Existujú však dostupné myšacie zariadenia, ktoré sú šp...
Napodobňovanie kliknutí myšou vznášaním sa pomocou myši bez myši vo Windows 10
Používanie myši alebo klávesnice v nesprávnom postoji k nadmernému používaniu môže mať za následok veľa zdravotných problémov vrátane napätia, syndróm...