Programování

Kontejnery v systému Windows Server 2016: Co potřebujete vědět

V příběhu, pro který jsem napsal Computerworld v lednu, což byla recenze Windows Preview 2016 Technical Preview 4, jsem zmínil novou podporu Windows Serveru pro kontejnery Hyper-V, která byla přidána k jeho podpoře pro kontejnery ve stylu Dockeru (přítomný v beta verzi od předchozí verze milníku beta ).

Přítomnost dvou možností kontejneru však vedla k mnoha otázkám. Jaký je rozdíl mezi kontejnerem Docker a novým kontejnerem Hyper-V? Ve kterých scénářích byste chtěli použít jedno řešení kontejneru nad druhým? Existují samostatné metody nasazení každého z nich?

Microsoft neudělal skvělou práci s dokumentováním těchto dvou možností kontejneru a samotné kontejnery jsou pro platformu Windows Server nové. Vzhledem k těmto dvěma faktorům chci věnovat celý příběh tomu, jaká konkrétní kontejnerová řešení Windows Server 2016 nyní poskytuje ve formě náhledu v dostupných verzích, nebo slibuje poskytnout před datem vydání softwaru do výroby (RTM), s největší pravděpodobností v druhá polovina roku 2016.

Přehled

V současné době existují v systému Windows Server 2016 dva typy kontejnerů: kontejnery Windows Server a kontejnery Hyper-V. Oba podporují pouze Windows Server; ani jeden nemůže kombinovat například Linux a / nebo Unix.

Pro líné administrátory, jako jsem já, pojďme dostat důležitou otázku zepředu: Je jeden ze dvou typů kontejnerů obtížnější nasadit než ten druhý? Odpověď je důrazné ne.

[Další čtení: První pohled: Spouštění virtuálních počítačů ve virtuálních počítačích s kontejnery Hyper-V]

Typy kontejnerů se spouštějí odlišně a mají různé úrovně izolace a důvěryhodnosti v hypervisoru. Ale v jádru se jedná o rozhodnutí o nasazení, které učinil vlastník fyzického stroje - vlastník hostitele - o tom, jaký typ kontejneru bude použit, a je to stejně jednoduché jako kontrola správného přepínače v průvodci . Jednoduše si mezi nimi vyberete v době vytvoření. Rozhodnutí ovlivňuje, jak Windows Server 2016 - samotný operační systém (hypervisor, který sedí na konci všech těchto věcí, běží na křemíku a fyzickém žehličce) - izoluje a provádí pracovní vytížení v každém kontejneru.

Takže teď, když víte, že jedna z možností kontejneru je pro vás stejné množství práce, jak se inteligentně rozhodujete mezi těmito dvěma? V zásadě jde o důvěryhodnost: Pokud důvěřujete kódu běžícímu v kontejneru, pak byste si vybrali kontejner Windows Server (číst: tradiční, ve stylu Dockeru). Pokud kódu nedůvěřujete nebo jej nemůžete ověřit, nebo nepochází od interních vývojářů v rámci vaší vlastní organizace, pak je způsob, jak jít. Podívejme se na každou možnost podrobně.

Windows Server kontejnery

Windows Server kontejnery jsou ve skutečnosti jen částí projektu open-source kontejneru Docker, takže pokud si myslíte o kontejneru ve stylu Docker, budete myslet na kontejner Windows Server. Tyto kontejnery jsou v podstatě novým typem virtuálního počítače, který má v některých ohledech menší izolaci než tradiční virtuální stroj - a to zejména proto, že v mnoha případech jsou sdíleny věci společné všem kontejnerům běžícím na hostiteli. Mezi tyto sdílené položky patří soubory operačního systému, adresáře a spuštěné služby. To se provádí pro větší efektivitu, protože pokud na hostiteli používáte tři různé kontejnery, všechny se stejnou verzí systému Windows Server jako hosté, potřebujete v daném okamžiku pouze jednu kopii adresáře C: \ Windows.

Toto sdílení stále odděluje kontejnery od jakékoli dané aplikace, která by mohla běžet na hostiteli - ale také snižuje režii a zjednodušuje kontejnery. Díky tomuto sdílení máte více prostoru na server, na kterém běží kontejnery, na rozdíl od běhu tradičních virtuálních strojů, které jsou izolovanější a nic nesdílejí - a proto mají tendenci mít mnohem větší duplikaci. Také byste obecně používali kontejnery Windows Serveru, když váš hostitel a host běží se stejným operačním systémem, abyste mohli využít tohoto sdílení; ve výsledku nemůžete spustit kontejner se serverem Ubuntu spuštěným na hostiteli Windows Server 2016. (Pro tento typ pracovní zátěže byste použili tradiční virtuální stroje. Kontejnery by pro to nebyly vhodné. Použili byste pouze virtuální počítače, které jsou ve Windows podporovány od roku 2008.)

Aby to stálo za to, právě teď jsou dvěma operačními systémy image-image podporovanými kontejnery Windows Server Server Core (Windows bez grafického uživatelského rozhraní) a Windows Nano Server, radikálně refaktorovaný mikroserver vhodný pro malé role orientované na mikroslužby. (Více o mikroslužbách v trochu.)

Jak tedy Docker do toho všeho zapadá? Docker poskytuje „vrstvu správy“, pokud chcete, API a motorů pro správu kontejnerů - která se rychle stala průmyslovým standardem, pravděpodobně proto, že samotný Docker je otevřený a široce používaný. Centrum Docker Hub, které je k dispozici pro použití na internetu, je skutečným úložištěm aplikací ve stylu tržiště, které všechny běží v kontejnerech ve stylu Dockeru.

Docker také poskytuje mentální rámec, který mohou vývojáři použít k přiblížení ke skutečnému provozu jejich kódu a k vytvoření celých kontejnerů prostředí, jejichž spuštění vyžaduje jejich kód. Vývojáři v podstatě vytvářejí image kontejnerů, které se pak docela snadno dodávají do operací, a běží v podstatě tak, jak jsou na tomto hostiteli jako hosté. Aktualizace a opravy kódu lze rychle a snadno zpracovat stejným způsobem.

Každý z těchto kontejnerových obrázků může dokonce fungovat na velmi malé části celkové aplikace, která komponentizuje řešení a usnadňuje práci v prostředí orientovaném na mikroslužby. Z pohledu velkého obrazu práce s kontejnery zvyšuje odpovědnost vývojářů za psaní dobrého kódu, který funguje přesně v jejich prostředí. Vývojáři již nemohou psát kód, který dokonale funguje na jejich vývojových strojích, ale při nasazení na produkční software spadne - protože jsou jeden a stejný, musí kód fungovat na obou místech. To také snižuje tření mezi provozem a IT - IT s jeho nedotčenými serverovými prostředími a vývojáři, kteří očekávají určité konfigurace, ale často jim chybí schopnost nebo zdůvodnění změnit produkční prostředí tak, aby vyhovovala jejich očekáváním.

Tyto kontejnery Windows Serveru ve stylu Docker naznačují určitou míru důvěryhodnosti - ať už jste si stáhli důvěryhodnou aplikaci z Docker Hubu, nebo že vám vaši interní vývojáři nebo vývojáři smluv poskytli kontejner s běžícím kódem, kterému důvěřujete. U aplikací v kontejnerech, které mají v sobě důvěryhodný kód, se doporučují a vhodné kontejnery Windows Serveru. Sdílení a projekce souborů operačního systému by pro důvěryhodný kód neměl být problém.

Ale co se stane, když je potřeba trochu většího zabezpečení, trochu větší izolace s méně než plně důvěryhodným kódem nebo aplikacemi?

Hyper-V kontejnery

To je, když se začnete dívat na kontejnery Hyper-V, které se snoubí s modelem izolace a abstrakce od tradičních virtuálních strojů s flexibilitou, image a snadným redeplačním formátem kontejnerů Windows Server ve stylu Dockeru, spolu s Docker API a nástroji pro správu Diskutoval jsem v předchozí části.

Mark Russinovich, CTO pro Microsoft Azure, to v loňském roce uvedl takto: Kontejnery Hyper-V „izolují aplikace se zárukami spojenými s tradiční virtualizací, ale s lehkostí, formátem obrazu a modelem správy Windows Server Containers, včetně podpora Docker Engine. “ Rozdíl je zde v úrovni izolace: Kontejnery Hyper-V nesdílí přímo soubory, procesy a služby operačního systému s hostitelem. Spíše Windows Server zabalí každý obrázek malého kontejneru do virtuálního počítače s velmi nízkou režií, čímž dosáhne hranice abstrakce a důvěryhodnosti, kterou kontejner Windows Server ve stylu Dockeru ne.

Tento virtuální stroj je však pro všechny účely a transparentní pro správce. Samotné obrázky kontejnerů, na kterých je spuštěn Windows Server, chápou, že jsou ve skutečnosti obrázky kontejnerů a neběží na běžném neomezeném křemíku, a proto mohou využívat výhod optimalizací pro OS, které vycházejí z tohoto povědomí. Ale i když jsou tyto obrázky kontejnerů izolovanější, nejsou nasazeny jinak než kontejnery Windows Serveru. Stále používáte Docker API. Stále používáte klienta Dockeru. Stačí zaškrtnout jiné políčko, ale samotné obrázky kontejnerů jsou vytvářeny a dodávány stejným způsobem bez ohledu na to, který izolační model chcete použít k jejich spuštění.

Nevýhoda tohoto přístupu: Existuje více režijních nákladů. Z důvodu další izolace se duplikuje více kódu a procesů. Existuje také skutečnost, že i když je odlehčený obal virtuálního počítače pro kontejner Hyper-V malý, skutečně přidává „daň“ k nákladům na provozování obrazu kontejneru. Takže i když můžete naplnit výkonného hostitele plného kontejnerů Windows Serveru ve stylu Dockeru, kontejnery Hyper-V by byly omezeny na určitý menší počet kontejnerů, všechny ostatní by byly hardwarově stejné.

Tyto obrázky kontejneru by opět podporovaly pouze Windows Server. I když existuje izolace, mezi obrázky kontejneru a hostitelským operačním systémem je stále sdílená shodnost. Pokud tedy na vašich obrázcích kontejnerů běží Linux, jiný typ Unixu, BSD nebo jakýkoli jiný alternativní operační systém, žádná z těchto nových funkcí Windows Server 2016 pro vás nebude mít význam.

Sečteno a podtrženo: Kód třetí strany, kód tržiště nebo kód, který jinak není úplně důvěryhodný žádnou částí vaší organizace, by měl být spuštěn v kontejnerech Hyper-V. Jedná se také o nejlepší volbu pro veřejné cloudy s více nájemci a další podobná prostředí. Neztrácíte nic jiného než kapacitu a získáváte bezpečnostní výhody větší izolace.

Docker kontejnery

Nyní, abych dokázal, že branding je vždy nejtěžší součástí jakékoli technologie, dovolte mi představit kontejnery Docker. Nahoře jsem zmínil, že kontejnery Windows Serveru jsou součástí open-source projektu Docker. Kontejnery Docker se liší od kontejnerů Windows Serveru. Kontejnery Windows Serveru mohou používat všechny základní technologie Dockeru, ale stávající sada nástrojů Dockeru pro správu kontejnerů Dockeru nefunguje (alespoň v této verzi) s kontejnery Windows Serveru. Nástroje pro správu kontejnerů systému Windows Server - v tomto okamžiku spousta příkazů prostředí PowerShell - také nemohou dělat nic hodnotného se samotnými kontejnery Docker.

Kontejnery Docker jsou jejich vlastní specifická věc, a zatímco kontejnery Windows Server fungují jako Docker kontejnery v jejich schopnosti sdílet, ale izolovat - což je důvod, proč jsem je označil jako Docker-styl Kontejnery Windows Serveru - samy o sobě nejsou kontejnery Dockeru. To se může v budoucnu změnit, zejména v aktualizaci Service Pack nebo v příštím vydání Windows Serveru, ale prozatím zůstávají tyto tři typy kontejnerů, i když mohou být všechny podobné, odlišné koncepty. Windows Server aktuálně podporuje pouze dva.

Kde je technologie dnes

Právě teď je podpora kontejnerů v systému Windows Server 2016 velmi nedokončená. Existuje mnoho pohyblivých částí do kontejnerů: Odebrání závislostí na souborech hostitele a operačního systému a specifické verze a úrovně oprav; dosažení správné izolace a zajištění, že žádný kód nemůže narušit tuto hranici zabezpečení a důvěry; přizpůsobení příběhu vývojáře pomocí nástrojů a automatizace, které vývojářům umožňují pracovat s kontejnery v jejich upřednostňovaném integrovaném vývojovém prostředí (IDE) a „exportovat“ jejich aplikace přímo do kontejneru; zajištění toho, aby se kontejnery mohly bez problémů pohybovat nahoru a dolů do veřejného cloudu; a více.

Ve všech těchto případech stále existují závažné chyby a chyby, které je třeba vyřešit. Pokud jsou kontejnery zásadní pro váš plán nabídek služeb ve vašem obchodě, možná budete chtít začít testovat možnosti kontejnerů Windows Server a kontejnerů Hyper-V hned teď, a zejména zkontrolovat dostupné příkazy PowerShellu k povolení kontejnerů a jejich správě na hostiteli Windows Server 2016.

Pokud jsou však kontejnery příjemnou volbou, ale nikoli nutností pro vaši organizaci, pak mým informovaným doporučením by bylo zdržet se pokusů o cokoli jiného než nejzákladnější průzkum pomocí bitů Technical Preview 4. Stále existuje příliš mnoho bradavic - včetně těch fatálních chyb a chyb zmíněných dříve - na to, abyste skutečně získali soudržný pocit o tom, co se děje.

Podpora kontejnerů bude vzrušujícím doplňkem platformy Windows. Zbývá toho příběhu ještě hodně napsat a vyprávět.

Tento příběh „Kontejnery v systému Windows Server 2016: Co potřebujete vědět“ původně publikoval Computerworld.

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