Programovanie

Čo potrebujete vedieť o Docker vo Windows

Koniec minulého týždňa som strávil na londýnskej konferencii vývojárov v Monki Gras zameranej na remeslo vývoja softvéru. Je to fascinujúca udalosť a tento rok sa zamerala na spôsob balenia softvéru.

Nie je prekvapením, že veľa rečníkov hovorilo o úlohe kontajnerov pri vývoji a nepretržitom dodávaní. Existovala však všeobecná mylná predstava o podpore kontajnerov Windows, ktorá sa všeobecne charakterizovala ako podpora pre Docker bežiaci na Linuxových VM.

To nie je pravda: Windows má svoje vlastné kontajnerové technológie, ktoré vychádzajú z Dockeru, ale dajú mu jedinečnú rotáciu od spoločnosti Microsoft. To je pravdepodobne zdroj zmätku, keď systém Windows 10 pridal podporu pre podsystém Linux a Microsoft pridal nástroje systému Docker na Windows Server 2016 zhruba v rovnakom čase. Obidve sú súčasťou prístupu spoločnosti Microsoft k vývoju natívnych cloudových aplikácií, ktorý je kľúčovým prvkom jej platformy Azure do budúcnosti.

Záväzok spoločnosti Microsoft v oblasti kontajnerov, ktorý je jedným z najdôležitejších medziodvetvových vývojových trendov za posledných pár rokov, by nemal byť prekvapujúci. Asi najlepšie sa dá považovať za spôsob zapuzdrenia celej používateľskej krajiny procesov a menných priestorov, aby sa izoloval od ostatných inštancií bežiacich na rovnakom serveri, a kontajnery sa rýchlo stali kľúčovou súčasťou devops a implementácií nepretržitej integrácie. Spoločnosť Microsoft si interne rýchlo osvojila tieto prístupy a ako vždy, jej nástroje odrážajú to, ako Redmond používa softvér a ako vytvára aplikácie.

Porozumenie kontajnerom

Oddelením služieb, ktoré aplikácia používa, od služieb, ktoré OS potrebuje, sa moderné kontajnery stali výkonným nástrojom na balenie a nasadenie aplikácií na serveroch. Kontajnery ponúkajú prenosnosť medzi vývojovými, miestnymi dátovými centrami a súkromnými, hybridnými a verejnými cloudmi. Aplikácie zabalené v kontajneri sú nezávislé od hostiteľského OS a môžu bežať na akomkoľvek podobnom hostiteľovi kontajnera bez zmien.

Zabalenie aplikácie do kontajnera znamená, že je ľahké ho nasadiť spolu so všetkými príslušnými konfiguračnými súbormi a závislosťami: Ak je kontajner spustený na vývojovom stroji alebo prejde všetkými vašimi integračnými testami, bude bežať na serveri bez akýchkoľvek zmien. Môžete zmeniť kontajner pre novú verziu bez ovplyvnenia základného operačného systému a môžete presunúť kontajner zo servera na server bez ovplyvnenia vášho kódu. Je to logický koncový bod modelu Devops, ktorý vám umožňuje samostatne nasadiť infraštruktúru a aplikácie - a spravovať ich osobitne.

Pôvodne sálová technológia, kontajnery (alebo aspoň podobné formy menného priestoru a izolácie procesov) sa dali nájsť v mnohých operačných systémoch Unix, vrátane Linuxu a Solarisu.

Vo vnútri kontajnerov Windows

Teraz, s vydaním Windows Server 2016, má Windows svoju vlastnú technológiu kontajnerov. Je založená na populárnej kontajnerovej službe Docker s otvoreným zdrojom, ale pridáva podporu pre použitie príkazového riadku PowerShell a pre ďalšiu izoláciu pomocou kombinácie tenkého kontajnera zameraného na Nano Server a Hyper-V Containers.

Docker zostáva jadrom kontajnerovej stratégie spoločnosti Microsoft. Jeho nástroje, napríklad Swarm a Machine, sú široko používané a jeho produkt Data Center dokáže spravovať kontajnery Windows aj Linux. Môžete dokonca použiť klienta Dockera z prostredia Bash, ktorý je súčasťou systému Windows 10, a nainštalovať ho do subsystému Windows pre Linux. Tento prístup vyžaduje, aby ste žonglovali s certifikátmi, takže môžete radšej použiť aplikáciu Windows Dockeru ako vývojový a základný nástroj na správu kontajnerov so systémom Windows aj Linux.

Kontajnery systému Windows sú, podobne ako mnoho funkcií systému Windows Server, úlohou, ktorú je možné nainštalovať buď prostredníctvom známeho dialógového okna funkcií systému Windows, alebo prostredníctvom prostredia PowerShell. Prechod na cestu PowerShell má najväčší zmysel, pretože existuje modul OneGet PowerShell, ktorý inštaluje funkciu kontajnerov Windows aj Docker, na začiatok je potrebný iba jeden reštart. (Ak chcete používať kontajnery Hyper-V, musíte tiež povoliť virtualizáciu Hyper-V.)

Pre kontajnery Windows existuje prekvapivé množstvo nadšenia vývojových aj operačných tímov; Spoločnosť Microsoft oznámila viac ako 1 milión stiahnutí základných obrázkov systému Windows z knižnice kontajnerov Docker's Hub, odkedy bol Windows Server 2016 všeobecne dostupný.

Budovanie a nasadenie kontajnerov v systéme Windows

Kontajnery nie sú iba serverovým nástrojom; profesionálna a podniková verzia systému Windows 10 Anniversary Edition podporuje aj kontajnery. Budete ich musieť povoliť v dialógovom okne Funkcie systému Windows, ale akonáhle budú povolené, môžete pomocou rozhrania PowerShell inštalovať a spravovať kontajnery systému Windows na vývojovom počítači. Pretože Windows 10 podporuje iba kontajnery Hyper-V, budete si musieť nainštalovať aj Hyper-V.

Po povolení kontajnerov Windows si budete musieť stiahnuť a nainštalovať Docker Engine a klienta Docker a nainštalovať základné obrazy, ktoré budete musieť pre svoju aplikáciu nakonfigurovať.

Microsoftom navrhovaným základným imidžom pre novostavené kontajnery Windows je Nano Server, implementácia servera zameraného na cloud s nízkymi nárokmi. Nano Server dáva zmysel ako kontajnerová základňa: Je malý a rýchly, bez používateľského rozhrania, takže sa dá rýchlo nasadiť a je relatívne bezpečný.

Jedna dôležitá poznámka: Aj keď ho môžete použiť na hosťovanie runtime ako Node.js, Nano Server je určený na hosťovanie aplikácií .Net Core, vrátane ASP.Net Core, takže nezískate všetky funkcie .Net, na ktoré ste zvyknutí . V porovnaní so známym Windows Serverom je dosť rozdielov, že je asi najlepšie myslieť na kontajnery Windows hostované na Nano Serveri ako nástroj pre nové aplikácie a nie ako hostiteľ pre existujúci kód.

Tieto rozdiely vysvetľujú, prečo mnohé podniky používajú Windows Server Core ako základný obrázok. Aj keď je Windows Server Core väčší a jeho nasadenie trvá dlhšie ako Nano Server, ponúka podporu pre súčasné súpravy Windows SDK a úplnú implementáciu .Net. Je oveľa jednoduchšie rýchlo presunúť existujúci kód do serverového jadra, čo vám dáva možnosť, ako to Taylor Lead Manager pre Windows Server a Hyper-V Containers nazýva, „zdvihnúť a presunúť“ z existujúcich serverov na kontajnery, takže ' znovu nasaditeľné kdekoľvek chcete. Len čo je aplikácia v kontajneri, môžu ju vývojári ďalej rozložiť; napríklad presunutie konektorov API do vlastných kontajnerov na báze Nano Server, aby sa zjednodušila údržba aplikácií.

Podpora kontajnerov sa integruje do nástrojov systému Windows na najnižšej úrovni, pričom kontajnery Windows sú teraz cieľom nasadenia pre Visual Studio 2017. Môžete vytvárať a doručovať aplikácie ako kontajner, pripravený na test. Vytvorenie kontajnerov jednoduchým kliknutím myšou je dôležitý krok.

Vďaka tomu, že Windows Azure čoskoro podporí vnorenú virtualizáciu, schopnosť pridať väčšiu izoláciu do verejného cloudu pomôže regulovaným odvetviam ospravedlniť prechod do oboch kontajnerov a do cloudu.

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