Programovanie

Kontajnery v systéme Windows Server 2016: Čo potrebujete vedieť

V príbehu, pre ktorý som písal Počítačový svet v januári, čo bola recenzia technickej ukážky systému Windows Server 2016, som spomenul novú podporu systému Windows Server pre kontajnery Hyper-V, ktorá bola pridaná k jeho podpore pre kontajnery v štýle Docker (prítomné v produkte beta od predchádzajúceho vydania míľnika verzie beta). ).

Prítomnosť dvoch možností kontajnera však viedla k mnohým otázkam. Aký je rozdiel medzi kontajnerom Docker a novým kontajnerom Hyper-V? V ktorých scenároch by ste chceli použiť jedno kontajnerové riešenie nad druhým? Existujú samostatné spôsoby nasadenia každého z nich?

Spoločnosť Microsoft neurobila skvelú prácu pri dokumentovaní týchto dvoch možností kontajnera a samotné kontajnery sú pre platformu Windows Server nové. Vzhľadom na tieto dva faktory sa chcem venovať celému príbehu tomu, aké konkrétne riešenia kontajnerov, ktoré Windows Server 2016 poskytuje v podobe ukážky v dostupných vydaniach, alebo ktoré sľubuje poskytnúť pred dátumom vydania softvéru do výroby (RTM), pravdepodobne v druhá polovica roku 2016.

Prehľad

V súčasnosti sú v systéme Windows Server 2016 prítomné dva typy kontajnerov: kontajnery Windows Server a kontajnery Hyper-V. Oba podporujú iba Windows Server; rovnako nemôže napríklad kombinovať systémy Linux a / alebo Unix.

Pre lenivých správcov, ako som ja, dostaneme dôležitú otázku z predu: Je jeden z dvoch typov kontajnerov nasadiť ťažšie ako druhý? Odpoveď je dôrazné nie.

[Ďalšie čítanie: Prvý pohľad: Spustenie virtuálnych počítačov vo virtuálnych počítačoch s kontajnermi Hyper-V]

Typy kontajnerov sa vykonávajú odlišne a majú rôzne úrovne izolácie a dôvery v hypervisora. Ale v jadre ide o rozhodnutie o nasadení, ktoré urobil vlastník fyzického stroja - vlastník hostiteľa - o tom, aký typ kontajnera sa použije, a je to také jednoduché ako skontrolovať správny prepínač v sprievodcovi. . Pri tvorbe si jednoducho vyberiete z týchto dvoch možností. Toto rozhodnutie ovplyvňuje to, ako Windows Server 2016 - samotný operačný systém (hypervisor, ktorý sedí na konci všetkých týchto vecí, beží na kremíku a fyzickom železe) - izoluje a vykonáva pracovné zaťaženie v každom kontajneri.

Takže teraz, keď viete, že každá z možností pre kontajner predstavuje pre vás rovnaké množstvo práce, ako sa inteligentne rozhodovať medzi týmito dvoma možnosťami? V zásade to závisí od dôvery: Ak dôverujete kódu bežiacemu v kontajneri, vybrali by ste si kontajner Windows Server (čítajte: tradičný, v štýle Docker). Ak kódu nedôverujete alebo ho nemôžete overiť alebo ak nepochádza od vašich interných vývojárov v rámci vašej vlastnej organizácie, je tu správna cesta k kontajneru Hyper-V. Pozrime sa na každú možnosť podrobne.

Windows Server kontajnery

Kontajnery Windows Server sú v skutočnosti iba časťou projektu open-source kontajnera Docker, takže ak si myslíte o kontajneri v štýle Docker, budete myslieť na kontajner Windows Server. Tieto kontajnery sú v podstate novým typom virtuálneho stroja, ktorý má v niektorých ohľadoch menšiu izoláciu ako tradičný virtuálny stroj - najmä preto, že v mnohých prípadoch sa zdieľajú veci spoločné pre všetky kontajnery bežiace na hostiteľovi. Medzi týmito zdieľanými položkami sú súbory operačného systému, adresáre a spustené služby. To sa deje kvôli vyššej efektivite, pretože ak na hostiteľovi prevádzkujete tri rôzne kontajnery, všetky s rovnakou verziou systému Windows Server ako hostia, potrebujete v danom okamihu iba jednu kópiu adresára C: \ Windows.

Toto zdieľanie stále oddeľuje kontajnery od akejkoľvek aplikácie, ktorá by mohla bežať na hostiteľovi - ale tiež znižuje réžiu a robí kontajnery ľahšími. Vďaka tomuto zdieľaniu máte na server bežiaci viac kontajnerov, na rozdiel od spustenia tradičných virtuálnych strojov, ktoré sú izolovanejšie a nič nezdieľajú - a teda majú tendenciu k oveľa väčšej duplikácii. Všeobecne by ste tiež používali kontajnery Windows Server, keď váš hostiteľ a hosť používajú rovnaký operačný systém, aby ste mohli využívať výhody tohto zdieľania; vo výsledku nemôžete spustiť kontajner so serverom Ubuntu spusteným na hostiteľovi systému Windows Server 2016. (Pre tento typ pracovnej záťaže by ste použili tradičné virtuálne stroje. Kontajnery by na to neboli vhodné. Použili by ste iba virtuálne počítače, ktoré sú vo Windows podporované od roku 2008.)

Aby to stálo za to, v súčasnosti sú dvoma operačnými systémami image-image podporovanými kontajnermi Windows Server Server Core (Windows bez grafického používateľského rozhrania) a Windows Nano Server, radikálne preformátovaný mikroserver vhodný pre malé roly orientované na mikroslužby. (Viac o mikroslužbách v trochu.)

Ako teda Docker do toho všetkého zapadá? Docker poskytuje, ak chcete, „vrstvu riadenia“ API a motorov na správu kontajnerov - ktorá sa rýchlo stala priemyselným štandardom, dosť pravdepodobne preto, že samotný Docker je otvorený a široko používaný. Centrum Docker Hub, ktoré je k dispozícii pre kohokoľvek na internete, je skutočným úložiskom aplikácií v trhovom štýle, ktoré sú spustené v kontajneroch v štýle Dockeru.

Docker tiež poskytuje mentálny rámec, ktorý môžu vývojári použiť na priblíženie sa k skutočnej prevádzke ich kódu a na vytvorenie celých kontajnerov prostredí, ktoré ich kód vyžaduje na spustenie. Vývojári v podstate vytvárajú obrázky kontajnerov, ktoré sa potom pomerne ľahko odosielajú do prevádzok, a fungujú v podstate tak, ako sú hostia tohto hostiteľa. Aktualizácie a opravy kódov je možné rýchlo a ľahko spracovať rovnakým spôsobom.

Každý z týchto obrázkov kontajnera môže dokonca fungovať na veľmi malej časti celkovej aplikácie, ktorá komponentizuje riešenie a uľahčuje prácu v prostredí orientovanom na mikroslužby. Z pohľadu veľkého obrazu práca s kontajnermi zvyšuje zodpovednosť vývojárov za písanie dobrého kódu, ktorý funguje presne v ich prostredí. Vývojári už nemôžu písať kód, ktorý perfektne funguje na ich vývojových strojoch, ale pri nasadení na produkčný softvér spadne - pretože sú jeden a ten istý, musí kód fungovať na oboch miestach. To tiež znižuje trenie medzi operáciami a IT - IT s jeho nedotknutými serverovými prostrediami a vývojármi, ktorí očakávajú určité konfigurácie, ale často im chýbajú schopnosti alebo dôvody na zmenu produkčných prostredí tak, aby vyhovovali ich očakávaniam.

Tieto kontajnery Windows Server v štýle Windows Server naznačujú určitú dôveru - buď že ste si stiahli dôveryhodnú aplikáciu z Docker Hub, alebo že vám vaši interní vývojári alebo vývojári zmlúv poskytli dôveryhodný kód so spusteným kódom. Pre aplikácie v kontajneroch, ktoré obsahujú dôveryhodný kód, sú kontajnery Windows Server odporúčané a vhodné. Zdieľanie a projekcia súborov operačného systému by nemali byť problémom dôveryhodného kódu.

Čo sa však stane, keď je potrebné trochu viac zabezpečenia, trochu viac izolácie s menej ako úplne dôveryhodným kódom alebo aplikáciami?

Kontajnery Hyper-V

To je, keď začnete pozerať na kontajnery Hyper-V, ktoré sa spájajú s modelom izolácie a abstrakcie od tradičných virtuálnych strojov s flexibilitou, obrazom a ľahkým formátom opätovného nasadenia kontajnerov Windows Server v štýle Dockera, spolu s Docker API a nástrojmi na správu, ktoré Rozoberal som to v predchádzajúcej časti.

Mark Russinovich, CTO pre Microsoft Azure, to uviedol v minulom roku takto: Kontajnery Hyper-V „izolujú aplikácie od záruk spojených s tradičnou virtualizáciou, ale s ľahkosťou, formátom obrazu a modelom správy Windows Server Containers, vrátane podpora Docker Engine. ““ Rozdiel je v úrovni izolácie: Kontajnery Hyper-V nezdieľajú priamo súbory, procesy a služby operačného systému s hostiteľom. Windows Server skôr zabalí každý obrázok malého kontajnera do virtuálneho stroja s veľmi nízkou prevádzkou, čím sa dosiahne hranica abstrakcie a dôveryhodnosti, ktorú kontajner Windows Server v štýle Dockera nedosahuje.

Tento virtuálny stroj je však pre všetky zámery a účely transparentný pre správcu. Samotné obrázky kontajnerov, na ktorých je spustený Windows Server, chápu, že v skutočnosti sú obrázkami kontajnerov a nie bežia na bežnom nespútanom kremíku, a teda môžu využívať výhody optimalizácií pre OS, ktoré vychádzajú z tohto povedomia. Ale aj keď sú tieto obrázky kontajnerov izolovanejšie, nie sú nasadené inak ako kontajnery Windows Server. Stále používate Docker API. Stále používate klienta Docker. Stačí začiarknuť iné políčko, ale samotné obrázky kontajnerov sú zostavené a dodávané rovnakým spôsobom bez ohľadu na to, aký izolačný model ich chcete použiť.

Nevýhoda tohto prístupu: existuje viac réžie. Kvôli ďalšej izolácii sa duplikuje viac kódu a procesov. Existuje aj skutočnosť, že aj keď je ľahký obal virtuálneho stroja pre kontajner Hyper-V malý, v skutočnosti zvyšuje „daň“ za náklady na spustenie obrazu kontajnera. Takže zatiaľ čo vy môžete napchať výkonného hostiteľa plného kontajnerov Windows Serveru v štýle Dockera, kontajnery Hyper-V by boli obmedzené na určitý menší počet kontajnerov, všetky ostatné by boli hardvérovo rovnaké.

Tieto obrázky kontajnera by opäť podporovali iba Windows Server. Aj keď existuje izolácia, medzi obrázkami kontajnerov a hostiteľským operačným systémom je stále zdieľaná zhodnosť. Takže ak na vašich obrázkoch kontajnerov beží Linux, iná príchuť Unixu, BSD alebo iného alternatívneho operačného systému, žiadna z týchto nových funkcií Windows Server 2016 pre vás nebude mať význam.

Záver: Kód tretej strany, kód trhoviska alebo kód, ktorý inak nie je úplne dôveryhodný žiadnou časťou vašej organizácie, by sa mal spúšťať v kontajneroch Hyper-V. Sú tiež najlepšou voľbou pre multitenantné verejné cloudy a ďalšie podobné prostredia. Nestrácate nič iné ako kapacitu a získavate bezpečnostné výhody izolácie.

Dockerove kontajnery

Teraz, aby som dokázal, že značka je vždy najťažšou časťou akejkoľvek technológie, dovoľte mi predstaviť Dockerove kontajnery. Vyššie som spomenul, že kontajnery Windows Servera sú súčasťou open-source projektu Docker. Kontajnery Docker sú odlišné od kontajnerov Windows Server. Kontajnery Windows Server môžu využívať celú základnú technológiu Dockeru, ale existujúca sada nástrojov Dockeru na správu kontajnerov Dockeru nefunguje (aspoň v tomto vydaní) s kontajnermi Windows Servera. Ani nástroje na správu kontajnerov systému Windows Server - v tomto okamihu množstvo príkazov PowerShell - nemôžu robiť nič hodnotné so samotnými kontajnermi Docker.

Kontajnery Docker sú ich vlastnou špecifickou vecou a zatiaľ čo kontajnery systému Windows Server fungujú ako kontajnery Docker v ich schopnosti zdieľať, ale izolovať - ​​čo je dôvod, prečo som ich označil ako Docker-štýl Kontajnery Windows Server - samy o sebe nie sú kontajnermi Dockeru. To sa v budúcnosti môže zmeniť, najmä v aktualizácii Service Pack alebo v nasledujúcom vydaní systému Windows Server, zatiaľ však tieto tri typy kontajnerov, aj keď môžu byť všetky podobné, zostávajú odlišnými konceptmi. Windows Server momentálne podporuje iba dva.

Kde je technológia dnes

Podpora kontajnerov v systéme Windows Server 2016 je momentálne veľmi nedokončenou prácou. Existuje veľa pohyblivých častí do kontajnerov: Odstránenie závislostí na súboroch hostiteľa a operačného systému a konkrétne verzie a úrovne opráv; dosiahnutie správnej izolácie a zabezpečenie toho, že žiadny kódex nemôže narušiť túto hranicu bezpečnosti a dôvery; zdokonalenie príbehu vývojárov pomocou nástrojov a automatizácie, ktoré vývojárom umožňujú pracovať s kontajnermi v preferovanom integrovanom vývojovom prostredí (IDE) a „exportovať“ svoje aplikácie priamo do kontajnera; zaistenie toho, aby sa kontajnery mohli plynulo pohybovať hore a dole do verejného cloudu; a viac.

Vo všetkých týchto prípadoch je stále potrebné vyriešiť závažné chyby a chyby. Ak sú kontajnery rozhodujúce pre váš plán ponúk služieb v rámci vášho obchodu, možno budete chcieť začať testovať možnosti kontajnerov Windows Server a Hyper-V už teraz, a hlavne skontrolovať dostupné príkazy PowerShellu na povolenie kontajnerov a ich správu. na hostiteľovi systému Windows Server 2016.

Ak sú však kontajnery príjemnou voľbou, ale nie nevyhnutnosťou pre vašu organizáciu, mojím informovaným odporúčaním by bolo zdržať sa pokusov o čokoľvek okrem najzákladnejšieho prieskumu pomocou bitov Technical Preview 4. Stále je príliš veľa bradavíc - vrátane tých fatálnych chýb a chýb spomenutých skôr - na to, aby ste skutočne dostali súdržný prehľad o tom, čo sa deje.

Podpora kontajnerov bude vzrušujúcim doplnkom platformy Windows. Zostáva veľa toho príbehu, ktorý treba napísať a povedať.

Tento príbeh „Kontajnery v systéme Windows Server 2016: Čo potrebujete vedieť“ pôvodne publikoval Computerworld.

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