Tulák

Docker vs. Vagrant

Docker vs. Vagrant

Vývojové a provozní týmy se od začátku zabývají složitostí softwarových prostředí. Je to běžný problém, kdy pracovní kód v jednom prostředí nefunguje v jiném.

Docker i vagrant pomáhají vytvářet předvídatelná a opakovatelná vývojová prostředí. Docker však používá kontejnerovou technologii, zatímco tulák k dosažení tohoto cíle používá virtuální stroje. Pochopení silných a slabých stránek Dockera a Vagranta pomůže vývojářům tyto nástroje kombinovat a dosáhnout požadovaných výsledků.

Začněme nejprve se základními technologiemi.

Virtuální stroj

Virtuální stroj (VM) emuluje fyzický počítač. Dodává se s vlastním kompletním operačním systémem a alokací zdrojů. Hostitelský počítač poskytuje potřebné fyzické prostředky, ale virtualizované prostředí funguje jako nezávislý stroj s vlastním BIOSem, CPU, úložištěm a síťovými adaptéry.

Přestože je dnes VMware nejznámější díky moderní technologii VM, myšlenka virtuálního stroje existuje už dlouhou dobu.

V roce 1965 potřebovalo IBM Yorktown Research Center způsob, jak měřit účinnost různých nápadů v oblasti počítačové vědy. Výzkumný tým chtěl přepínat mezi funkcemi a měřit výsledky. Tým vymyslel schéma rozdělení jednoho stroje na menší oddíly. Menší oddíly by spravovaly své vlastní zdroje. Byly by to malé virtuální stroje.

Myšlenka VM byla úspěšná. IBM začala vyrábět operační systémy založené na virtuálních strojích. IBM System 370 (S / 370) a IBM System 390 (S / 390), oba systémy založené na IBM VM / ESA, si získaly oblibu u podniků a univerzit, protože umožnily institucím umožnit jejich uživatelům sdílet výpočetní prostředky bez vzájemného ovlivňování prostředí. Tato myšlenka také pomohla vytvořit operační systém Unix a programovací jazyk Java.

Moderní virtuální stroje běží na hypervisorech. Hypervisory jsou software, firmware nebo hardware odpovědný za vytváření a provádění virtuálních počítačů. Na trhu je k dispozici spousta hypervisorů. KVM, Red Hat Enterprise Virtualization (RHEV), XenServer, Microsoft Hyper-V a VMware vSphere / ESXi jsou významnými hráči.

Dnes virtuální stroje urychlily růst cloud computingu. Amazon AWS, Microsoft Azure, Google Cloud, Digital Ocean a další cloudové společnosti silně závisí na virtualizační technologii.

Kontejnery

Kontejnery vytvářejí virtualizaci na úrovni operačního systému. Pracují jako spustitelný softwarový balíček, který izoluje aplikace od okolního prostředí. Uvnitř balíčku má kontejner potřebné vlastnosti, jako je kód, běhové prostředí, systémové knihovny a nástroje, aby byla aplikace oddělena od vnějšího vlivu. Běží na operačním systému hostitelského počítače. Kontejnery sdílejí knihovny a binární soubory, pokud je to možné, a oddělují pouze naprosto nezbytné prostředky.

V roce 1979 mohla systémová volání „chroot“ izolovat procesy pro Unix. Bylo to první semeno myšlenky na kontejner. Počáteční technologie kontejnerů začala s FreeBSD Jails v roce 2000. O rok později Linux VServer umožnil běh více strojů Linux na jednom hostiteli. V roce 2004 poskytoval Oracle Solaris Zones podobné funkce jako FreeBSD Jails. V letech 2006-2007 vyvinul Google Process Container a poté jej spojil do linuxového jádra. Linux Containers (LXC) byl vytvořen v roce 2008, aby využil výhod linuxových skupin a jmenných prostorů. V roce 2013 byl Docker vytvořen kombinací myšlenek LXC. Přidala také nástroje pro snadné vytváření a načítání obrázků kontejnerů.

Přístavní dělník

Docker je open-source kontejnerová technologie založená na LXC. Je populární, protože usnadňuje vytváření, spouštění a nasazování aplikací v samostatném prostředí. Docker nevytváří celý operační systém jako virtuální stroj. Místo toho používá jádro operačního systému hostitele a vytváří virtualizaci pouze pro aplikaci a potřebné knihovny. Tento přístup je mnohem lehčí než virtuální stroje.

Kontejnery Docker jsou vytvářeny z Docker Images. Docker Images lze považovat za snímky strojů. Uživatelé mohou snadno spustit kontejner z obrázku. Obrázky jsou vytvářeny jako vrstvy. Předpokládejme, že vývojový tým potřebuje kontejner s nainstalovaným Apache a Pythonem v určité verzi Linuxu. Vývojář si může stáhnout obrázek Linuxu z Docker Hubu, spustit kontejner, nainstalovat Apache a Python, vytvořit nový obrázek z kontejneru a sdílet tento obrázek. Ostatní členové týmu nemusí procházet stejnou instalací. Pomáhá udržovat konzistentní prostředí pro všechny.

Docker také podporuje aplikace skriptování a více kontejnerů. Uživatelé mohou pomocí textového souboru Dockerfile definovat požadavky a poté vytvářet kontejnery pomocí Docker Compose. Výše uvedeného příkladu vytvoření serveru Apache / Python / Linux lze dosáhnout také tímto procesem. S Docker Compose musí týmy sdílet pouze Dockerfile, aby vytvořily stejné prostředí.

Docker má více specializovaných nástrojů pro složité úkoly. Docker Swarm pomáhá organizovat rozsáhlá nasazení dockerů.

Tulák

Vagrant je open-source nástroj, který pomáhá vytvářet a udržovat virtuální stroje. Funguje s VirtualBox, VMWare, AWS a dalšími poskytovateli.

Vagrant zjednodušuje správu virtuálních počítačů. Pomocí Vagrantfile mohou vývojáři definovat vlastnosti virtuálního stroje, jako je operační systém, instalace softwaru a další. Textový soubor Vagrantfile lze sdílet pomocí správy verzí a potřebný stroj lze spustit pomocí jednoduchého příkazu jako „vagrant up“. Uživatelé se pak mohou přihlásit do zařízení jako fyzický server.

Kdy použít Docker nebo Vagrant

Použití Dockeru nebo Vagrantu často sestává z nutnosti kontejnerů nebo virtuálních strojů. Zde jsou některé podobnosti a rozdíly mezi Dockerem a Vagrantem z hlediska použití:

Podobnosti

Docker i Vagrant mají snadno konfigurovatelná prostředí, která lze ovládat pomocí skriptů. Jsou také přátelští k cloudu.

Rozdíly

Tulák virtuální stroj poskytuje oddělení zabezpečení založené na jádře. Díky oddělování jsou virtuální stroje méně riskantní než kontejnery. Kontejnery Docker jsou ale velmi lehké. Využívají méně zdrojů a jsou rychlé při provádění. Takže na jednom hostiteli můžete mít mnohem více kontejnerů než virtuální počítače. Spuštění a zastavení kontejnerů je ve srovnání s virtuálními počítači také téměř okamžité. Virtuální počítače procházejí úplným spouštěcím cyklem systému BIOS a operačního systému.

Díky oddělení zabezpečení virtuálního počítače je selhání virtuálního počítače samostatnější. Na druhou stranu kontejnery sdílejí prostředky a mohou mít kaskádový efekt selhání. Bezpečnostní hrozby kontejneru se mohou dostat také do jádra hostitelského operačního systému.

Rychlost provedení a lehká stopa kontejnerů však činí Docker velmi atraktivní pro vývoj. S architekturou mikroslužeb mohou kontejnery fungovat dobře, protože rizikové faktory jsou zmírněny pomocí mikroslužeb. Rovněž dochází k pokroku v zajišťování větší bezpečnosti Dockeru každý den.

Závěr

Docker a Vagrant jsou užitečné technologie, které mohou vývojářům pomoci zlepšit jejich produktivitu. Pokud jde o zabezpečení aplikací, pak by používání Vagrantu a virtuálních počítačů mohlo být dobrým nápadem. Pro rychlý vývoj a sdílení poskytuje Docker výhodu. Většina týmů používá obojí k bezproblémovému provozu.

Reference:

Hry Vulkan pro uživatele Linuxu
Vulkan pro uživatele Linuxu
S každou novou generací grafických karet vidíme, že vývojáři her posouvají hranice grafické věrnosti a přibližují se k fotorealismu. Ale navzdory vešk...
Hry OpenTTD vs Simutrans
OpenTTD vs Simutrans
Vytvoření vlastní simulace dopravy může být zábavné, uvolňující a mimořádně lákavé. Proto se musíte ujistit, že vyzkoušíte co nejvíce her, abyste našl...
Hry Výukový program OpenTTD
Výukový program OpenTTD
OpenTTD je jednou z nejpopulárnějších her pro obchodní simulaci. V této hře musíte vytvořit skvělé dopravní podnikání. Začnete však na začátku kolem r...