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:
- http: // rhelblog.červená čepice.com / 2015/08/28 / the-history-of-containers /
- http: // www.virtualizační software.com / hypervisory top-5-podnik-typu-1 /
- https: // blog.přístavní dělník.com / 2016/04 / fyzické virtuální nasazení kontejneru /
- https: // blog.přístavní dělník.com / 2016/05 / vm-or-containers /
- https: // obsah.stěžejní.io / infografiky / momenty v kontejneru-historie
- https: // deliciousbrains.com / vagrant-docker-wordpress-development /
- https: // dokumenty.přístavní dělník.com / napsat /
- https: // en.wikipedia.org / wiki / Timeline_of_virtualization_development
- https: // lifehacker.com / 5204434 / průvodce pro začátečníky-k-vytvoření-virtuálních-strojů-s-virtuální schránkou
- https: // střední.freecodecamp.org / a-pro začátečníky-úvod-do-kontejnerů-vms-and-docker-79a9e3e119b
- https: // opensource.com / resources / what-docker
- https: // scaleyourcode.com / rozhovory / rozhovor / 9
- https: // stackoverflow.com / questions / 16647069 / should-i-use-vagrant-or-docker-for-creating-an-isolated-environment
- https: // www.devteam.space / blog / docker-vs-vagrant-which-is-better-for-development /
- https: // www.přístavní dělník.com / co-kontejner
- https: // www.další platforma.com / 2015/08/06 / kontejnery-versus-virtuální-stroje-kdy-k-použití-každý-jeden-a-proč /
- https: // www.vagrantup.com / intro / vs / docker.html
- LaraChat Live - 26. Díl - Docker v.s. Vagrant [https: // www.Youtube.com / hodinky?v = onD5ti6K7TY]
- Vagrant vs Docker [https: // www.Youtube.com / hodinky?v = cTbHa4Mj_v8]
- Vagrant vs Docker? [https: // www.Youtube.com / hodinky?v = 9tDW5OyCY2c]