Vagrant VS Docker

Docker VS Vagrant

Chcete-li vytvořit a spustit webovou aplikaci, musíte nainstalovat několik softwaru / nástrojů a nakonfigurovat je. Tyto programy a nástroje můžete samozřejmě do svého počítače (svého vlastního operačního systému) nainstalovat ručně. Ale to může vést k určitým problémům! a má určitá omezení, jako je přeinstalace všeho, kdykoli změníte vývojový stroj (počítač, notebook), přepínání mezi verzemi softwaru, použití stejného portu pro dva různé programy, sdílení aplikace s ostatními lidmi, když jste provedli nějaké speciální konfigurace prostředí atd.…

Řešením všech uvedených problémů by bylo odeslání vývojového prostředí s aplikačním kódem! takže když někdo dostane kód, může zavést prostředí a mít vše připraveno.

Nástroje jako Vagrant a Docker jsou vytvořeny, aby jim pomohly s tím, že vytvářejí virtuální prostředí, která lze použít k vytváření a spouštění vašich aplikací. Kromě toho každý dělá svou práci jiným způsobem a každý má své vlastní výhody.

Vagrant je správce virtuálních strojů, což znamená, že vám pomáhá vytvářet, poskytovat a sdílet virtuální stroj. (Do kterého můžete SSH vložit a nainstalovat vše, co potřebujete ke spuštění kódování).

Virtuální stroj (jako VirtualBox a VMWare) je virtuální operační systém běžící nad vaším nativním operačním systémem. Ano! přesně takhle. V podstatě virtualizují hardware vašeho počítače pro operační systémy, takže si můžete vytvořit tolik operačních systémů, kolik potřebujete, a spouštět je všechny na sdíleném hardwaru.

Virtuální stroje však potřebují ke spuštění spoustu prostředků, takže neočekávejte, že budete mít k dispozici pět operačních systémů. Stejně tak nemá smysl provozovat virtuální operační systém ve výrobě, což znamená, že pokud používáte technologie virtuálních strojů (jako je Vagrant), můžete prostředí sdílet pouze s dalšími vývojáři a členy týmu, ale ne s produkčními servery.

Pravděpodobně existuje inteligentní trik pro používání virtuálních strojů ve výrobě, trik spočívá v tom, že můžete svému virtuálnímu stroji poskytnout nástroje pro správu konfigurace (jako Loutka, šéfkuchař a Ansible) a poté spustit stejný nástroj ve výrobě, abyste zajistili produkční prostředí.

Nyní pojďme mluvit o tom, jak obejít omezení virtuálních strojů pomocí různých technologií, jako je Docker.

Docker vytváří virtuální kontejnery. (nikoli virtuální stroje). Docker virtualizuje váš operační systém pro daný software, takže si můžete vytvořit tolik softwaru (kontejnery), kolik potřebujete, a spouštět je všechny ve sdíleném operačním systému.

Docker je mnohem flexibilnější a škálovatelnější než virtuální stroje a běží všude !! (vývoj, výroba, inscenace, Q / A, CI).

Kontejner je jen část operačního systému (Linux téměř jakékoli distribuce), který je zodpovědný za provoz softwaru (jako je DB engine „MySQL“ nebo Cache systém „Redis“). Znamená to, že je to jen část operačního systému! Všechny ostatní části jsou sdíleny mezi všemi kontejnery. Díky tomu je provoz virtuálního kontejneru 10x rychlejší než provoz celého virtuálního počítače.

Docker může spouštět více kontejnerů, a proto se doporučuje spouštět jeden software na kontejner, aby se zabily závislosti mezi softwarem (protože každý software bude mít svůj samostatný izolovaný operační systém Linux). Pokud se tedy s kontejnerem pohráváte, není to nic moc! můžete kontejner snadno restartovat a vrátit se do původního stavu, aniž by to ovlivnilo jakýkoli jiný software spuštěný v ostatních kontejnerech.

Virtuální stroje nabízejí větší izolaci za cenu vyšší režie, protože každý virtuální stroj provozuje vlastní instanci jádra a operačního systému. Zatímco Virtual Containers, nabízí menší izolaci, ale nižší režii díky sdílení určitých částí hostitelského jádra a operačního systému.

Používání nástrojů jako Vagrant a Docker vám tedy ušetří čas na přípravu prostředí a učiní vaše prostředí přenosným a reprodukovatelným kdykoli a téměř kdekoli.

Jednou z velkých věcí na ekosystémech Vagrant a Docker je to, že už je k dispozici spousta skvělých vagrantských „krabic“ a Dockerových „obrázků“, takže je nemusíte budovat sami, což věci ještě více urychluje. .

Jako vývojář PHP sám používám Docker před Vagrantem! protože je mnohem rychlejší a můžu se svým prostředím dostat do výroby.

Co se mi na Dockeru nejvíce líbí, je schopnost přepínat mezi verzemi softwaru (PHP 5.5, 5.6 a 7.0), databázovými motory (MySQL, PostgreSQL a MariaDB) a systémy mezipaměti (Memcached a Redis), aniž by to ovlivnilo cokoli jiného (to není možné s Tulák!).

Pokud jste vývojář Laravelu jako já, máte velké štěstí, protože nyní můžete začít s Laravelem na Docker velmi rychle pomocí LaraDock (skvělý nástroj pro provozování Laravelu na Dockeru).

Pokud však používáte jiný rámec PHP, můžete stále používat LaraDock a upravovat několik jednoduchých proměnných, aby to fungovalo s vaším rámcem.

Děkuji za přečtení. Sledujte mě na Twitteru, abyste zůstali aktuální @Mahmoud_Zalt