Programovanie

Prečo by ste mali používať Docker a kontajnery

Kniha vydaná v roku 1981 s názvomPribitie želé na strom, popisuje softvér ako „hmlistý a je ťažké ho pevne uchopiť.“ To platilo v roku 1981 a nie je to menej menej ako takmer štyri desaťročia odvtedy. Softvér, či už je to zakúpená aplikácia alebo softvér, ktorý ste si sami vytvorili, je stále ťažko nasaditeľný, ťažko spravovateľný a ťažko spustiteľný.

Kontajnery Docker poskytujú spôsob, ako ovládnuť softvér. Docker môžete použiť na zabalenie aplikácie takým spôsobom, aby boli vyriešené problémy s jej nasadením a behom - ako je vystavenie v sieti, ako je spravované jej využitie úložiska a pamäte a I / O, ako riadené prístupové oprávnenia. mimo samotnej aplikácie a spôsobom, ktorý je konzistentný vo všetkých „kontajnerovaných“ aplikáciách. Svoj kontajner Docker môžete spustiť na ľubovoľnom hostiteľovi kompatibilnom s OS (Linux alebo Windows), na ktorom je nainštalovaný runtime Docker.

Docker ponúka okrem tejto šikovnej enkapsulácie, izolácie, prenosnosti a kontroly aj mnoho ďalších výhod. Kontajnery Docker sú malé (megabajty). Začínajú okamžite. Majú vlastné vstavané mechanizmy na správu verzií a opätovné použitie komponentov. Dajú sa ľahko zdieľať prostredníctvom verejného Docker Hubu alebo súkromného úložiska.

V tomto článku sa budem venovať tomu, ako kontajnery Docker uľahčujú vytváranie a nasadzovanie softvéru - problémy, ktoré kontajnery riešia, ako sa k nim stavajú, kedy sú správnou odpoveďou na problém a kedy nie.

Pred kontajnermi Docker

Už mnoho rokov sa podnikový softvér zvyčajne nasadzuje buď na „bare metal“ (tj. Nainštalovaný v operačnom systéme, ktorý má úplnú kontrolu nad základným hardvérom), alebo na virtuálnom stroji (tj. Nainštalovaný v operačnom systéme, ktorý zdieľa základný hardvér). s inými „hosťujúcimi“ operačnými systémami). Inštalácia na holý kov samozrejme spôsobila, že softvér bol bolestivo ťažký na presun a ťažko sa aktualizoval - čo sú dve obmedzenia, vďaka ktorým IT ťažko pohotovo reagujú na zmeny obchodných potrieb.

Potom prišla virtualizácia. Virtualizačné platformy (tiež známe ako „hypervisory“) umožnili viacerým virtuálnym počítačom zdieľať jeden fyzický systém, pričom každý virtuálny stroj emuloval chovanie celého systému izolovaným spôsobom spolu s vlastným operačným systémom, úložiskom a I / O. . IT by teraz mohlo efektívnejšie reagovať na zmeny v obchodných požiadavkách, pretože VM mohli byť klonované, kopírované, migrované a roztočené nahor alebo nadol, aby uspokojili dopyt alebo šetrili zdroje.

Virtuálne stroje tiež pomohli znížiť náklady, pretože bolo možné konsolidovať viac virtuálnych počítačov na menej fyzických strojov. Staršie systémy so staršími aplikáciami by sa mohli zmeniť na VM a fyzicky vyradiť z prevádzky, aby sa ušetrilo ešte viac peňazí.

Ale virtuálne stroje majú stále svoj podiel problémov. Virtuálne stroje sú veľké (gigabajty), pričom každý obsahuje úplný operačný systém. Iba toľko virtualizovaných aplikácií možno zlúčiť do jedného systému. Poskytovanie virtuálnych počítačov stále trvá pomerne dlho. Nakoniec je prenosnosť VM obmedzená. Po určitom okamihu nie sú virtuálne počítače schopné poskytnúť rýchlosť, svižnosť a úspory, ktoré požadujú rýchlo sa rozvíjajúce podniky.

Výhody kontajnera Docker

Kontajnery fungujú trochu ako virtuálne počítače, ale oveľa konkrétnejšie a podrobnejšie. Izolovajú jednu aplikáciu a jej závislosti - všetky externé softvérové ​​knižnice, ktoré táto aplikácia vyžaduje na spustenie, a to zo základného operačného systému aj z iných kontajnerov. Všetky aplikácie v kontajneroch zdieľajú jeden spoločný operačný systém (Linux alebo Windows), sú však rozdelené navzájom a zo systému ako celku.

Výhody kontajnerov Docker sa prejavujú na mnohých miestach. Tu sú niektoré z hlavných výhod Dockeru a kontajnerov:

Docker umožňuje efektívnejšie využívať systémové prostriedky

Prípady kontajnerovaných aplikácií využívajú oveľa menej pamäte ako virtuálne stroje, rýchlejšie sa zapínajú a vypínajú a na hostiteľskom hardvéri ich možno zabaliť oveľa hustejšie. To všetko znamená menšie výdavky na IT.

Úspora nákladov sa bude líšiť v závislosti od toho, aké aplikácie sú v hre a aké môžu byť náročné na zdroje, ale kontajnery vždy fungujú efektívnejšie ako virtuálne počítače. Je tiež možné ušetriť na nákladoch na softvérové ​​licencie, pretože na rovnaké úlohy je potrebných oveľa menej inštancií operačného systému.

Docker umožňuje rýchlejšie dodacie cykly softvéru

Podnikový softvér musí rýchlo reagovať na meniace sa podmienky. To znamená ľahké škálovanie, aby sa uspokojil dopyt, a ľahká aktualizácia, ktorá umožňuje pridať nové funkcie podľa požiadaviek firmy.

Kontajnery Docker uľahčujú rýchle uvedenie nových verzií softvéru s novými obchodnými funkciami do výroby - a v prípade potreby rýchle vrátenie späť k predchádzajúcej verzii. Tiež uľahčujú implementáciu stratégií, ako je modré / zelené nasadenie.

Docker umožňuje prenosnosť aplikácií

To, kde podnikovú aplikáciu prevádzkujete, je dôležité - za bránou firewall, aby ste mali veci nablízku a zabezpečili ich. alebo vonku vo verejnom cloude pre ľahký prístup verejnosti a vysokú elasticitu zdrojov. Pretože kontajnery Docker zapuzdrujú všetko, čo aplikácia potrebuje na spustenie (a iba tieto veci), umožňujú ľahké prepravy aplikácií medzi prostrediami. Každý hostiteľ s nainštalovaným runtime Docker - či už ide o prenosný počítač vývojára alebo inštanciu verejného cloudu - môže prevádzkovať kontajner Docker.

Docker svieti pre architektúru mikroslužieb

Ľahké, prenosné a samostatné kontajnery Docker uľahčujú vývoj softvéru v súlade s perspektívou, takže sa nemusíte pokúšať vyriešiť problémy zajtra pomocou včerajších vývojových metód.

Jedným z kontajnerov softvérových vzorov, ktorý uľahčuje, sú mikroslužby, kde sú aplikácie tvorené z mnohých voľne spojených komponentov. Rozkladom tradičných „monolitických“ aplikácií na samostatné služby umožňujú mikroslužby škálovanie, modifikáciu a obsluhu rôznych častí podnikovej aplikácie osobitne - samostatnými tímami a na samostatných časových harmonogramoch, ak to vyhovuje potrebám podnikania.

Kontajnery nie sú povinné na implementáciu mikroslužieb, ale sú dokonale vhodné pre prístup k mikroslužbám a pre agilné vývojové procesy všeobecne.

Problémy s kontajnermi Docker nevyriešia

Prvá vec, ktorú musíte mať na pamäti pri kontajneroch, je rovnaká rada, ktorá platí pre každú softvérovú technológiu: Toto nie je strieborná guľka. Dockerove kontajnery samy od seba nemôže vyriešiť každý problém. Najmä:

Docker neopraví vaše problémy so zabezpečením

Softvér v kontajneri môže byť predvolene bezpečnejší ako softvér spustený na bokom, ale to je ako povedať, že dom so zamknutými dverami je bezpečnejší ako dom s odomknutými dverami. Nehovorí to nič o stave štvrte, viditeľnej prítomnosti cenností lákavých k zlodejovi, rutinách ľudí, ktorí tam žijú, atď. Kontajnery môžu do aplikácie pridať vrstvu zabezpečenia, ale iba ako súčasť všeobecného programu zabezpečenia aplikácie v kontexte.

Docker nepremení aplikácie magicky na mikroslužby

Ak kontajnerizujete existujúcu aplikáciu, môže to znížiť jej spotrebu zdrojov a uľahčiť jej nasadenie. Ale automaticky sa to nezmení dizajn aplikácie alebo ako interaguje s inými aplikáciami. Tieto výhody plynú iba z času a úsilia vývojárov, nielen z poverenia presunúť všetko do kontajnerov.

Vložte do kontajnera monolitickú aplikáciu zo starej školy alebo aplikáciu v štýle SOA a nakoniec do kontajnera dostanete starú aplikáciu. To pre vašu prácu neznamená to, že je už užitočnejšia; keby niečo, mohlo by to byť menej užitočné.

Docker nie je náhradou za virtuálne stroje

Jedným z pretrvávajúcich mýtov o kontajneroch je, že robia virtuálne počítače zastaranými. Mnoho aplikácií, ktoré sa predtým spúšťali na virtuálnom počítači môcť presunúť do kontajnera, ale to neznamená všetko z nich môže alebo by malo. Ak napríklad pracujete v priemysle s vysokými regulačnými požiadavkami, pravdepodobne nebudete môcť vymeniť kontajnery za virtuálne počítače, pretože virtuálne počítače poskytujú väčšiu izoláciu ako kontajnery.

Prípad pre kontajnery Docker

Práce na vývoji podniku sú známe tým, že sú skryté a pomaly reagujú na zmeny. Podnikoví vývojári sa proti takýmto obmedzeniam neustále obávajú - obmedzenia, ktoré na ne kladie IT, požiadavky, ktoré na ne kladie veľké podnikanie. Docker a kontajnery poskytujú vývojárom viac slobody, po ktorej túžia, a zároveň poskytujú spôsoby, ako vytvárať obchodné aplikácie, ktoré rýchlo reagujú na meniace sa obchodné podmienky.

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