Když jste byli malí, bylo jedno z vašich životních přání býti popelářem? Obdivovali jste ty chlapce, co elegantně koulejí hliníkovou kulatinu po silnici směrem k rachotícímu autu, které bezpečně dokázalo všem v ulici připomenout, že už je čas vstávat? Včetně těch, kteří to tak úplně v plánu neměli? Ano, popelář je překvapivě jedno z nejčastěji obdivovaných povolání, když jsme děti. A protože si čtete tento článek, tak bych si dovolil hádat, že jste se jím nestali. Avšak někdy se nám v IT přihodí, že při řešení tíživých situací či snad po těžkých schůzkách zvoláme „že jsem se raději nestal tím popelářem!“. Nezoufejte! Dobrá zpráva! Windows kontejnery jsou tu :-). Ano, i z nás ITíků se mohou stát správci kontejnerů a obsluhovat kdysi kýžené předměty. Ano, tento článek se bude zabývat novinkou v připravovaných Windows Server 2016 – containers.
Ve zkratce, co to vlastně jsou kontejnery? A teď už opravdu nemyslím ty fyzické velké přepravní boxy, které tak rádi vídáme pohybující se kosmickou rychlostí na dálnici v levém pruhu. Kontejnerizace sama o sobě není zase tak velkou novinkou, ostatně ve světě UNIX jsou kontejnery známou věcí již dlouhou dobu. Nicméně jejich čas, co do rozšíření a průniku do povědomí odborné veřejnosti, přišel až s technologií Docker. Docker je Open-Source projekt, který spatřil světlo světa počátkem roku 2013. Ten přinesl API a nástroje pro správu a nasazení kontejnerových image Linux a dále přinesl DockerHub, což je veřejný repositář kontejnerových image.
Ale pro začátek trochu obecně: kontejnerizace přináší v podstatě typ virtuálního stroje, který sdílí více prostředků než klasický virtuální stroj. Jak říká sám Mark Russinovich, kontejnerizace je velmi účinná, sdílí se velká řada souborů operačního systému, adresáře či běžící služby mezi kontejnery a zpřístupňují se každému kontejnerovému Namespace. Kontejner je izolovaný, přenositelný operační systém s kontrolovanými zdroji. Jedná se tedy o oddělený prostor, kde běžící aplikace nemůže zasahovat do zbytku běžícího systému a běžící systém nemůže ovlivňovat aplikaci. Je to další stupeň evoluce virtualizace. Hlavním důvodem pro kontejnerizaci je například mnohem vyšší stupeň bezpečnosti díky izolaci nebo kompatibilita a efektivita nasazení aplikace.
Inu dobrá, teď si možná říkáte, to je samý UNIX, Linux a přístavní dělníci (Dockers), ale co s tím má společného technologie Microsoftu? Kde je to místo?
Microsoft a kontejnerizace
I když by se dalo na jednu stranu říci, že vývojáři Microsoftu trochu zaspali, co se týče podpory kontejnerizace v Hyper-V, není to až tak úplně správný pohled. Microsoft přišel se svou opravdovou serverovou virtualizací jako jeden z posledních (v porovnání s největšími hráči na trhu), a tak se musel nejdřív soustředit na jiné funkce Hyper-V, které naopak jiní výrobci nemají. Leč právě připravovaný Windows Server 2016, který je aktuálně ve fázi veřejně testované Technical Preview 3, bude obsahovat funkci kontejnerizace v Hyper-V. A nejen to, Microsoft do Windows Serveru portoval i Docker samotný, tedy již zmíněné Docker API a nástroje se budou moci využít s Windows kontejnery. Ale neznamená to, že existující image Linux poběží na Windows jinak než skrze virtuální stroje Linux jako dříve. A není to jen o připravovaném Windows Serveru, Microsoft implementuje tuto technologii rovněž do prostředí cloudové platformy Azure.
A jak to ve Windows Serveru vypadá? Kde to najdeme? Skrze Server Manager můžete kontejnerizaci přidat jako funkci.
Základní pojmy v IT popelářství
Ve chvíli, kdy se člověk začne potkávat s kontejnerizací, dříve nebo později objeví velké množství podobností mezi klasickým virtuálním strojem a kontejnerem. I v kontejneru běží operační systém, má souborový systém a může být přístupný skrze síť. Stejně jako fyzický nebo virtuální stroj.
- Container Host – Fyzický nebo virtuální stroj, kde je konfigurována funkce Windows Container. Na této „skládce“ je uložen (běží) jeden či více kontejnerů.
- Container Image – Modifikace, které jsou tvořeny v rámci souborového systému nebo registrů kontejneru, například kvůli instalaci softwaru, jsou zachytávány v sandboxu. V mnoha případech pak můžete chtít tento stav zachytit tak, abyste jej mohli použít v budoucnu, tedy že nové kontejnery tyto provedené změny „zdědí“. No a to je image. Trochu jinak řečeno, taková šablona nebo snapshot VM. Ale to berte jen jako přirovnání. Jakmile je pak kontejner zastaven, můžete změny zahodit nebo z nich vytvořit novou image. Příklad: Máte kontejner s Microsoft Windows Core OS, do kterého instalujete MySQL. Vytvořenou novou image bude možno využít při příští tvorbě dalšího kontejneru. Avšak image bude obsahovat pouze změny, které byly provedeny, tedy instalaci MySQL. Tato image dále poběží jako vrstva nad kontejnerem s operačním systémem.
- Sandbox – Jakmile je kontejner spuštěn, všechny operace zápisu, jako například úpravy souborového systému, úpravy registrů, instalace software, jsou zachyceny v „Sandbox“ vrstvě.
- Container OS image – Jak již bylo řečeno, kontejnery jsou nasazovány z image. Záměrně nechci používat český překlad „obrazů“. Container OS image je první vrstvou z potenciálně mnoha vrstev, které mohou sestavit kontejner. Tato vrstva poskytuje prostředí operačního systému a je nezměnitelná, tedy nemůže být modifikována.
- Container repository – Pokaždé, když je vytvořena image kontejneru, je spolu se svými závislostmi uložena v lokálním repositáři. Tyto image mohou být mnohokráte znovu použity na Container Hostovi. Image kontejneru mohou být uloženy v privátním, ale i veřejném repositáři. Jedním takovým je například DockerHUB. Tím se image stávají přenositelnými mezi více Container Hosty.
- Container Management Technology – Jak to celé spravovat? Windows Server Containers se dají spravovat pomocí PowerShellu nebo Dockeru. Užitím jednoho z těchto nástrojů můžete vytvářet nové kontejnery, image kontejnerů, stejně tak spravovat životní cyklus kontejneru.
No, a když už jsme u té správy, tak například jedna z cest, jak vytvářet Docker virtuální stroje, je Visual Studio Tools for Docker. Tento nástroj umí jak kontejnery v cloudovém prostředí Azure, tak zároveň i non-Azure hosty.
Popelnice pro vývojáře
Z počítače vývojáře na testovací stroje a dále na produkční desktopy se Docker image vytváří a identicky nasazuje napříč prostředími. Takto vzniká velký a rostoucí ekosystém aplikací zabalených v Docker kontejnerech. Zmíněn byl DockerHUB: zde je již dnes publikováno okolo 180 000 aplikací. Pokud se řekne kontejnerizovaná aplikace, tak jen taková aplikace a její potřebné komponenty jsou kombinovány v image. Kontejnery se následně vytvářejí z těchto image podle potřeby. Vývojář může vzít image kontejneru a vytvořit z ní „baseline“ pro vytvoření jiné image, a to celý proces neskutečně urychluje. Více kontejnerů může sdílet stejnou image, což vede k tomu, že kontejnery velmi rychle startují a hlavně užívají mnohem méně zdrojů (procesor, paměť atd.). Protože kontejnery obsahují vše potřebné pro běh aplikace, jsou ideální pro přenositelnost. Mohou běžet na jakémkoliv stroji, který bude mít Windows Server 2016. Kupříkladu můžete lokálně vytvářet a testovat kontejnery, následně stejnou image kontejneru nasadit ve vlastním privátním cloudu nebo veřejném cloudu či u svého poskytovatele služby. S kontejnery může vývojář tvořit aplikace v jakémkoliv programovacím jazyce a provozovat je kdekoliv, na notebooku, desktopu, serveru v privátním či veřejném cloudu, bez nutnosti měnit kód. Kontejnery tak vývojářům usnadňují a zrychlují vytváření a distribuci kvalitních aplikací.
Popelnice pro IT profíky
Pro IT profesionály je asi nejzajímavější možnost vytvořit krásné, standardizované prostředí (či infrastrukturu, chcete-li), které budou moci velmi jednoduše aktualizovat, spravovat, tedy udržovat v chodu. Správci se tak už nemusí starat o komplexní instalační nebo konfigurační kroky. Svět pro ně bude krásnější, jednodušší. A možná to i pomůže mezilidským vztahům. Vývojáři občas nebývají pochváleni za kreativitu vloženou do způsobu instalace nebo aktualizace aplikace a IT profesionál brblá, že by to určitě udělal lépe. No a vývojáři zase brblají, že IT Pro nemá ten správný pohled na jejich dílo, a mají pocit, že se z nich stávají nepochopení umělci.
A co teď?
Chcete si kontejnerizaci vyzkoušet? Je více cest, jak kontejnerizaci od Microsoft nasadit. Jednou z nich je Windows Server 2016 a druhou Windows 10. Požadavky jsou:
- Systém s Windows Server 2016 TP2 a vyšší nebo Windows 10
- Povolená role Hyper-V (není nutné ve Windows Serveru)
- 20 GB pro Container Host Image, OS Base Image a skripty
- Práva administrátora na Hyper-V hostu
Celkový technický popis pro nasazení najdete v článku MSDN, který se jmenuje „Preparing Windows Server Technical Preview for Windows Server Containers“. Obsahuje řadu odkazů na specifické konfigurace, jako jsou implementace do fyzického prostředí nebo do vlastního Hyper-V VM popřípadě do Azure.
Závěrem
Kontejnerizace je v IT obor oslavovaný jako nástupce klasické virtualizace, tak jak ji známe dnes. Však například na nedávno proběhlé VMWare konferenci se snad žádné jiné slovo neskloňovalo častěji. Je to slibná technologie a je to budoucnost. Cíl cvičení, tedy přinést do firem daleko jednodušší a průhlednější deployment aplikací a více spolehlivosti, je snem snad každého, kdo s IT pracuje. Počínaje vývojářem, kterému se velkou měrou rozvazují ruce co do transportovatelnosti a portovatelnosti aplikace, přes IT profesionála, kterému se zjednoduší deployment a správa dané aplikace, až po uživatele, pro kterého bude důležité, že aplikace je třeba rychlejší nebo není tak náchylná na pády. Však uživatel ve výsledku, už z podstaty pojmenování této mnohdy proklínané role, nechce nic jiného než užívat. Nechce řešit, co a jak, potřebuje pracovat. Od správy, nasazení, vytváření, testování, od toho jsme tu my, IT náčelníci a indiáni.
Jan Pilař | KPCS CZ