Programování

Proč byste měli používat Docker a kontejnery

Kniha vydaná v roce 1981 s názvemPřibíjení želé na strom, popisuje software jako „mlhavý a je těžké jej pevně uchopit.“ To platilo v roce 1981 a neméně pravdivé je to téměř čtyři desetiletí od té doby. Software, ať už jde o aplikaci, kterou jste zakoupili, nebo o aplikaci, kterou jste si sami vytvořili, je stále obtížné nasadit, těžko spravovat a těžko spustit.

Kontejnery Docker poskytují způsob, jak získat přehled o softwaru. Docker můžete použít k zabalení aplikace takovým způsobem, aby byly vyřešeny problémy s jejím nasazením a běhovým režimem - jak ji vystavit v síti, jak spravovat její využití úložiště a paměti a I / O, jak řídit přístupová oprávnění. mimo samotnou aplikaci a způsobem, který je konzistentní ve všech „kontejnerových“ aplikacích. Kontejner Docker můžete spustit na libovolném hostiteli kompatibilním s OS (Linux nebo Windows), který má nainstalovaný modul runtime Docker.

Docker nabízí kromě této praktické enkapsulace, izolace, přenositelnosti a kontroly mnoho dalších výhod. Docker kontejnery jsou malé (megabajty). Začínají okamžitě. Mají vlastní vestavěné mechanismy pro správu verzí a opětovné použití komponent. Lze je snadno sdílet prostřednictvím veřejného Docker Hubu nebo soukromého úložiště.

V tomto článku prozkoumám, jak kontejnery Dockeru usnadňují vytváření a nasazování softwaru - problémy, které kontejnery řeší, jak je řeší, kdy jsou správnou odpovědí na problém a kdy nejsou.

Před kontejnery Docker

Po mnoho let se podnikový software obvykle nasazoval buď na „bare metal“ (tj. Nainstalovaný v operačním systému, který má úplnou kontrolu nad základním hardwarem), nebo ve virtuálním stroji (tj. Nainstalován v operačním systému, který sdílí základní hardware) s jinými „hostujícími“ operačními systémy). Přirozeně instalace na holý kov způsobila, že se software bolestivě obtížně pohyboval a těžko aktualizoval - dvě omezení, díky nimž IT těžko reagovali hbitě na změny v obchodních potřebách.

Pak přišla virtualizace. Virtualizační platformy (známé také jako „hypervisory“) umožnily více virtuálním strojům sdílet jeden fyzický systém, přičemž každý virtuální stroj emuloval chování celého systému, a to izolovaným způsobem včetně vlastního operačního systému, úložiště a I / O. . IT by nyní mohlo efektivněji reagovat na změny v obchodních požadavcích, protože virtuální počítače mohly být klonovány, kopírovány, migrovány a roztočeny nahoru nebo dolů, aby vyhovovaly poptávce nebo šetřily zdroje.

Virtuální stroje také pomohly snížit náklady, protože bylo možné konsolidovat více virtuálních počítačů na méně fyzických strojů. Starší systémy se staršími aplikacemi by mohly být přeměněny na virtuální počítače a fyzicky vyřazeny z provozu, aby se ušetřilo ještě více peněz.

Ale virtuální stroje mají stále svůj podíl na problémech. Virtuální počítače jsou velké (gigabajty), přičemž každý obsahuje plný operační systém. Pouze tolik virtualizovaných aplikací lze sloučit do jediného systému. Zřízení virtuálního počítače stále trvá poměrně dlouho. Nakonec je přenositelnost virtuálních počítačů omezená. Po určitém okamžiku nejsou virtuální počítače schopny zajistit rychlost, hbitost a úspory, které vyžadují rychle se rozvíjející podniky.

Výhody kontejneru Docker

Kontejnery fungují trochu jako virtuální počítače, ale mnohem konkrétněji a podrobněji. Izolovají jednu aplikaci a její závislosti - všechny externí softwarové knihovny, které aplikace potřebuje ke spuštění - jak ze základního operačního systému, tak z jiných kontejnerů. Všechny kontejnerové aplikace sdílejí jeden společný operační systém (Linux nebo Windows), ale jsou rozděleny na jednotlivé části a ze systému jako takového.

Výhody kontejnerů Docker se objevují na mnoha místech. Zde jsou některé z hlavních výhod Dockeru a kontejnerů:

Docker umožňuje efektivnější využití systémových prostředků

Instance kontejnerových aplikací využívají mnohem méně paměti než virtuální stroje, spouštějí a zastavují se rychleji a na hostitelském hardwaru je lze zabalit mnohem hustěji. To vše znamená menší výdaje na IT.

Úspora nákladů se bude lišit v závislosti na tom, jaké aplikace jsou ve hře a jak mohou být náročné na zdroje, ale kontejnery vždy fungují efektivněji než virtuální počítače. Je také možné ušetřit na nákladech na softwarové licence, protože ke spuštění stejných úloh potřebujete mnohem méně instancí operačního systému.

Docker umožňuje rychlejší dodací cykly softwaru

Podnikový software musí rychle reagovat na měnící se podmínky. To znamená jak snadné škálování, aby vyhovělo poptávce, tak snadnou aktualizaci pro přidání nových funkcí podle požadavků firmy.

Kontejnery Docker usnadňují rychlé uvedení nových verzí softwaru s novými obchodními funkcemi do produkce - a v případě potřeby rychlé vrácení zpět k předchozí verzi. Také usnadňují implementaci strategií, jako je modrá / zelená nasazení.

Docker umožňuje přenositelnost aplikací

Na místě, kde provozujete podnikovou aplikaci, záleží - za bránou firewall, abyste udrželi věci nablízku a zabezpečili je; nebo venku ve veřejném cloudu pro snadný přístup veřejnosti a vysokou pružnost zdrojů. Vzhledem k tomu, že kontejnery Docker zapouzdřují vše, co aplikace potřebuje ke spuštění (a pouze tyto věci), umožňují snadné převádění aplikací mezi prostředími. Jakýkoli hostitel s nainstalovaným modulem runtime Docker - ať už jde o notebook vývojáře nebo instanci veřejného cloudu - může provozovat kontejner Docker.

Docker svítí pro architekturu mikroslužeb

Lehké, přenosné a samostatné kontejnery Docker usnadňují vytváření softwaru v souladu s perspektivními liniemi, takže se nepokoušíte řešit zítřejší problémy včerejšími vývojovými metodami.

Jedním ze softwarových kontejnerů, které usnadňují, jsou mikroslužby, kde jsou aplikace tvořeny z mnoha volně propojených komponent. Rozkladem tradičních „monolitických“ aplikací na samostatné služby umožňují mikroslužby škálovat, upravovat a obsluhovat různé části podnikové aplikace samostatně - samostatnými týmy a na samostatných časových osách, pokud to vyhovuje potřebám podnikání.

Kontejnery nejsou nutné k implementaci mikroslužeb, ale jsou dokonale vhodné pro přístup mikroslužeb a pro agilní vývojové procesy obecně.

Problémy Docker kontejnery nevyřeší

První věc, kterou je třeba mít na paměti, je stejná rada, která platí pro jakoukoli softwarovou technologii: Toto není stříbrná kulka. Docker kontejnery sami nemůže vyřešit každý problém. Zejména:

Docker neopraví vaše bezpečnostní problémy

Software v kontejneru může být ve výchozím nastavení bezpečnější než software spuštěný na holém kovu, ale to je jako říkat, že dům se zamčenými dveřmi je bezpečnější než dům s odemčenými dveřmi. Neříká to nic o stavu okolí, viditelné přítomnosti cenností lákavých k zlodějovi, o rutinách lidí, kteří tam žijí, atd. Kontejnery mohou do aplikace přidat vrstvu zabezpečení, ale pouze jako součást obecného programu zabezpečení aplikace v kontextu.

Docker nemění aplikace magicky na mikroslužby

Pokud kontejnerizujete existující aplikaci, může to snížit její spotřebu prostředků a usnadnit nasazení. Ale automaticky se to nemění design aplikace nebo jak interaguje s jinými aplikacemi. Tyto výhody plynou pouze z času a úsilí vývojáře, nejen z mandátu přesunout vše do kontejnerů.

Vložte starou školu monolitickou aplikaci nebo aplikaci ve stylu SOA do kontejneru a skončíte se starou aplikací v kontejneru. Díky tomu není pro vaši práci užitečnější; pokud vůbec, mohlo by to být méně užitečné.

Docker nenahrazuje virtuální stroje

Jeden přetrvávající mýtus o kontejnerech je, že díky nim jsou virtuální počítače zastaralé. Mnoho aplikací, které se dříve spouštěly na virtuálním počítači umět být přesunut do kontejneru, ale to neznamená Všechno z nich může nebo by mělo. Pokud se například pohybujete v odvětví s vysokými regulačními požadavky, možná nebudete moci vyměnit kontejnery za virtuální počítače, protože virtuální počítače poskytují větší izolaci než kontejnery.

Případ pro kontejnery Docker

Práce na vývoji podniku je proslulá tím, že je skryta a pomalu reaguje na změnu. Podnikoví vývojáři se proti takovým omezením neustále trápí - omezení, která na ně kladou IT, požadavky, které na ně klade velké podnikání. Docker a kontejnery poskytují vývojářům více svobody, po které touží, a zároveň poskytují způsoby, jak vytvářet obchodní aplikace, které rychle reagují na měnící se obchodní podmínky.

$config[zx-auto] not found$config[zx-overlay] not found