Serverové kontajnery Windows. Ako zabaliť aplikáciu do kontajnera Docker? SQL Server kontajnery

Kontajnery v systéme Microsoft Windows Server 2016 sú rozšírením technológie pre zákazníkov. Microsoft plánuje zákaznícky vývoj, nasadenie a teraz aj kontajnerový hosting aplikácií ako súčasť ich vývojového procesu.

Keďže miera nasadzovania aplikácií sa neustále zvyšuje a zákazníci využívajú nasadzovanie verzií aplikácií na dennej alebo dokonca hodinovej báze, schopnosť rýchleho nasadenia aplikácií na overenie vývojárskej klávesnice do produkcie je rozhodujúca pre obchodný úspech. Tento proces urýchľujú kontajnery.

Zatiaľ čo VM majú schopnosť presúvať aplikácie v dátových centrách a do az cloudu, virtualizačné zdroje sú ďalej odomykané kontajnermi prostredníctvom virtualizácie OS (systémový softvér). Toto riešenie, vďaka virtualizácii umožní rýchle dodanie aplikácií.

Windows Technology Container obsahuje dva rôzne druhy kontajnery, kontajnery Windows Server a kontajnery Hyper-V. Oba typy kontajnerov sa vytvárajú, spravujú a fungujú rovnakým spôsobom. Dokonca vyrábajú a konzumujú rovnaký obrázok kontajnera. Líšia sa medzi sebou úrovňou izolácie vytvorenej medzi kontajnerom, hostiteľským operačným systémom a všetkými ostatnými kontajnermi bežiacimi na hostiteľovi.

Kontajnery Windows Server: Na hostiteľovi môže bežať súbežne viacero inštancií kontajnera s izoláciou poskytovanou prostredníctvom názvového priestoru, správy zdrojov a technológií izolácie procesov. Windows Server Containers zdieľajú rovnaké jadro, sú hosťované.

Hyper-V kontajnery: Na hostiteľovi môže bežať súbežne viacero inštancií kontajnera. Každý kontajner je však implementovaný vo vyhradenom virtuálnom stroji. To poskytuje izoláciu na úrovni jadra medzi každým kontajnerom Hyper-V a hostiteľským kontajnerom.

Microsoft zahrnutý v kontajneri obsahuje sadu nástrojov Docker na správu nielen kontajnerov Linuxu, ale aj kontajnerov Windows Server a Hyper-V. V rámci spolupráce v rámci komunít Linuxu a Windowsu bola skúsenosť s Docker rozšírená vytvorením modulu PowerShell pre Docker, ktorý je teraz otvoreným zdrojom. Modul PowerShell môže spravovať kontajnery Linux a Windows Sever lokálne alebo vzdialene pomocou rozhrania Docker REST API. Vývojári sú spokojní s inováciami pre zákazníkov prostredníctvom open source vývoja našej platformy. V budúcnosti plánujeme priniesť našim zákazníkom technológiu spolu s inováciami, ako je Hyper-V.

Kúpte si Windows Server 2016

Ponúkame vám možnosť zakúpiť si Windows Server 2016 so zľavou od Oficiálny partner Microsoft v Rusku - spoločnosti DATASYSTEM. Budete mať možnosť získať radu a tiež si bezplatne stiahnuť Windows Server 2016 na testovanie kontaktovaním našich špecialistov technickej podpory. Cena Windows Server 2016 na vyžiadanie. Komerčná ponuka na účasť na kúpe Windows Server 2016 môžete na požiadanie dostať e-mailom:

Skúmanie technológie kontajnerov
Windows Server 2016

Jednou z pozoruhodných nových funkcií zavedených v systéme Windows Server 2016 je podpora kontajnerov. Poďme ju lepšie spoznať

Moderné systémy sa už dávno vzdialili od princípu jeden OS - jeden server. Virtualizačné technológie umožňujú efektívnejšie využitie zdrojov servera, umožňujú prevádzkovať viacero operačných systémov, oddeľujú ich od seba a zjednodušujú správu. Potom tu boli mikroslužby, ktoré vám umožňujú nasadiť izolované aplikácie ako samostatný, ľahko spravovateľný a škálovateľný komponent. Docker všetko zmenil. Proces dodania aplikácie spolu s prostredím sa stal tak jednoduchým, že koncového používateľa nezaujal. Aplikácia vo vnútri kontajnera funguje ako keby používala plnohodnotný OS. Ale na rozdiel od virtuálnych strojov nenačítavajú svoje vlastné kópie OS, knižnice, systémové súbory atď. Kontajnery dostanú izolovaný priestor názvov, v ktorom sú pre aplikáciu dostupné všetky potrebné zdroje, ale ktorý nemožno ukončiť. Ak potrebujete zmeniť nastavenia, uložia sa iba rozdiely s hlavným OS. Preto sa kontajner na rozdiel od virtuálnych strojov spúšťa veľmi rýchlo a menej zaťažuje systém. Kontajnery využívajú prostriedky servera efektívnejšie.

Kontajnery v systéme Windows

V systéme Windows Server 2016 bola okrem existujúcich virtualizačných technológií - virtuálnych aplikácií Hyper-V a Server App-V pridaná podpora kontajnerov Windows Server Containers implementovaná prostredníctvom vrstvy abstrakcie zásobníka správy kontajnerov, ktorá implementuje všetky potrebné funkcie. Technológia bola oznámená už v Technical Preview 4, no odvtedy sa veľa zmenilo smerom k zjednodušeniu a pokyny napísané skôr sa nedajú ani prečítať. Zároveň boli navrhnuté dva typy „vlastných“ kontajnerov – Windows kontajnery a Hyper-V kontajnery. A pravdepodobne ďalšou hlavnou príležitosťou je použitie nástrojov Docker okrem cmdletov PowerShell na správu kontajnerov.

Windows kontajnery v princípe pripomínajú FreeBSD Jail alebo Linux OpenVZ, využívajú jedno jadro s OS, ktoré si spolu s ďalšími zdrojmi (RAM, sieť) medzi sebou zdieľajú. Súbory a služby OS sú mapované do menného priestoru každého kontajnera. Tento typ kontajnera využíva zdroje efektívne, znižuje réžiu, a preto umožňuje hustejšie umiestnenie aplikácií. Keďže základné obrázky kontajnera „majú“ jedno jadro s uzlom, ich verzie sa musia zhodovať, inak nie je zaručená prevádzka.

Hyper-V kontajnery používajú ďalšiu izolačnú vrstvu a každému kontajneru je pridelené vlastné jadro a pamäť. Izoláciu na rozdiel od predchádzajúceho typu nevykonáva jadro OS, ale hypervízor Hyper-V (vyžaduje rolu Hyper-V). Výsledkom je menšia réžia ako virtuálne stroje, ale väčšia izolácia ako kontajnery Windows. V tomto prípade na spustenie kontajnera musíte mať rovnaké jadro OS. Tieto kontajnery je možné nasadiť aj na Windows 10 Pro/Enterprise. Zvlášť stojí za zmienku, že typ kontajnera sa nevyberá v čase vytvorenia, ale v čase nasadenia. To znamená, že akýkoľvek kontajner môže byť spustený ako Windows aj ako variant Hyper-V.

Ako operačný systém v kontajneri sa používa orezané jadro servera alebo nano server. Prvý sa objavil vo Windows Sever 2008 a poskytuje väčšiu kompatibilitu s existujúcimi aplikáciami. Druhý je ešte skromnejší ako Server Core a je navrhnutý tak, aby fungoval bez monitora, čo vám umožňuje spustiť server v najmenšej možnej konfigurácii na použitie s Hyper-V, súborovým serverom (SOFS) a cloudovými službami, ktoré vyžadujú o 93 % menej miesta. Obsahuje len tie najnutnejšie komponenty (.Net s CoreCLR, Hyper-V, Clustering a pod.).

Na ukladanie sa používa obrazový formát. pevný disk vhdx. Kontajnery, ako v prípade Docker, sú uložené ako obrázky v úložisku. V čom každý neukladá kompletný súbor údajov, ale iba rozdiely vytvorený obrázok zo základne. A v čase spustenia sa všetky potrebné údaje premietajú do pamäte. Virtuálny prepínač sa používa na riadenie sieťovej prevádzky medzi kontajnerom a fyzickou sieťou.

Ako zabaliť aplikáciu do kontajnera Docker?

Mám aplikáciu napísanú v NodeJS. Ako ho môžem zabaliť do obrazu Docker, aby sa spustil ako kontajner?

Docker je systém správy kontajnerov pre operačné systémy kompatibilné s POSIX (v súčasnosti je podporovaný Linux). Funkciou Dockera je schopnosť zabaliť aplikáciu so všetkým potrebným prostredím tak, aby ju bolo možné spustiť na inom systéme bez dlhých a zložitých procedúr inštalácie závislostí alebo budovania zo zdroja. Zbalená aplikácia pripravená na nasadenie sa nazýva „image“. Obrázky Docker sú založené na "šablónach" - predkonfigurovaných pracovných prostrediach. Možno ich považovať za distribúcie operačného systému, aj keď to nie je úplne pravda. Môžete si tiež vytvoriť vlastnú šablónu prečítaním si dokumentácie Docker. Výhodou tohto prístupu je, že obrázok vašej aplikácie bude obsahovať iba samotnú aplikáciu a prostredie pre ňu potrebné sa automaticky stiahne z úložiska šablón. Docker je niečo ako väzenie chroot alebo bsd, ale funguje inak.

Je dôležité rozlišovať medzi pojmami „kontajner“ a „obrázok“. Kontajner je spustená kópia vašej aplikácie a obrázok je súbor, v ktorom je uložená aplikácia a z ktorého je kontajner vytvorený.

Povedzme, že máte aplikáciu NodeJS, ktorú chcete zabaliť do kontajnera. Predpokladajme, že súbor, ktorý spúšťa vašu aplikáciu, sa volá server.js a aplikácia počúva na spustenie na porte 8000. Ako šablónu použijeme „node:carbon“. Ak chcete aplikáciu kontajnerizovať, musíte v adresári, kde sa nachádzajú súbory vašej aplikácie, vytvoriť súbor „Dockerfile“, ktorý bude popisovať parametre na prípravu obrázka:

$ dotknite sa súboru Dockerfile

Obsah súboru môže vyzerať asi takto:

# Špecifikujte šablónu na použitie FROM node:carbon # Vytvorte pracovný adresár aplikácie v kontajneri WORKDIR /usr/src/app # Nainštalujte závislosti aplikácie pomocou npm # Skopírujte súbor package.json aj package-lock.json, ak je prítomný KOPÍROVAŤ balík*.json ./ SPUSTITE inštaláciu npm # Skopírujte súbory aplikácie do obrázka. . # Otvorte port 8000, aby bol prístupný mimo kontajnera EXPOSE 8000 # Vykonajte príkaz na spustenie aplikácie v kontajneri CMD [ "npm", "start" ]

Ak chcete z obrázka vylúčiť nepotrebné súbory, môžete ich názvy uviesť v súbore „.dockerignore“. Môžete použiť masku (*.log).

Obraz je vytvorený pomocou nasledujúceho príkazu:

$ docker build -t username/node-web-app .

$ docker images # Príklad ID ZNAČKY REPOSITORY CREATED node carbon 1934b0b038d1 pred 5 dňami používateľské meno/node-web-app najnovšie d64d3505b0d2 pred 1 minútou

Spustenie kontajnera z obrázka sa vykonáva nasledujúcim príkazom:

$ docker run -p 49160:8000 -d užívateľské meno/uzol-web-app

Tento príklad vytvorí kontajner z obrázka „username/node-web-app“ a okamžite sa spustí. Aplikačný port 8000 je dostupný na lokálnom stroji (localhost) a aby bol dostupný „vonku“, je „presmerovaný“ na port 49160. Môžete si vybrať ľubovoľný voľný port, navyše je možné preposlať aplikačný port „tak ako je“ zadaním možnosti „-p 8000:8000“.

Môžete vidieť, že váš kontajner je spustený zadaním príkazu:

$ docker ps # Príklad ID IMAGE COMMAND ... PORTS ecce33b30ebf username/node-web-app:posledný npm štart ... 49160->8000

Kontajner je možné spravovať pomocou rôznych príkazov, ktoré špecifikujú ID tohto kontajnera:

$ docker pause ecce33b30ebf - pozastavenie kontajnera s ID ecce33b30ebf
$ docker životopis ecce33b30ebf – ID kontajnera obnovenia ecce33b30ebf
$ docker stop ecce33b30ebf - stop kontajner s ID ecce33b30ebf
$ docker rm ecce33b30ebf - odstráňte kontajner (tým sa odstránia všetky údaje vytvorené aplikáciou v kontajneri)

Hotovo! Pomohli buď modlitby, alebo obete, ale teraz môžete spustiť kontajnery Docker s Windowsom vo vnútri. Skvelá správa prišla spolu s vydaním Windows Server 2016. A to nehovoríme o nejakom šikovne ukrytom virtuálnom stroji alebo emulácii Windowsu na linuxovom jadre – skutočný Windows je spustený v skutočnom Dockeri, s funkčným Dockerfile, docker-compose a iným docker-stray.

Obmedzenia

To však neznamená, že teraz môžete spustiť akýkoľvek kontajner kdekoľvek. Vzhľadom na to, že kontajnery Docker „presunú“ jadro operačného systému zo svojho hostiteľa (inak by museli mať vlastný OS a zmeniť sa na virtuálny stroj), je možné kontajnery Windows spustiť iba na najnovšej aktualizácii Windows 10 Pro Anniversary Update a Windows Server 2016.

Druhým bodom je, že stále nie je možné spustiť natívny kontajner Linuxu v systéme Windows. Anniversary Update má svoj vlastný linuxový subsystém (s ktorým môžete spustiť napríklad skutočný Bash), ale zaostáva za plnohodnotným linuxovým jadrom, takže pre rovnaký kontajner s Ubuntu na Windows je stále potrebný skrytý virtuálny stroj.

Nakoniec môžete na počítači so systémom Windows spustiť oba kontajnery súčasne, ale s tancom. Ak spustíte tento príkaz v systéme Windows Server 2016 s nainštalovaným Dockerom (pred rokom by som to nazval čarodejníctvom), bude fungovať:

Ak sa však po tomto príkaze pokúsite spustiť kontajner Ubuntu, Docker bude smutný:

Problém je v tom, že kontajnery Windows a Linux sú obsluhované rôznymi démonmi Docker, ktorí však používajú rovnaký kanál na komunikáciu s príkazovým riadkom. To znamená, že súčasne môže byť aktívny iba jeden démon. Na oficiálnej stránke Docker je beta verzia „Docker for Windows“, ktorá sa pokúša problém vyriešiť (zatiaľ len na Windows 10 Pro a Enterprise). Ale aj s tým, aby ste prešli z kontajnerov Windows na Linux, musíte buď vyliezť do ponuky nastavení alebo komunikovať s príkazovým riadkom:

PowerShell

& "C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon

& "C:\Program Files\Docker\Docker\DockerCli.exe"-SwitchDaemon

Obrázky systému Windows

Zatiaľ existujú iba dva základné obrázky s kontajnerizovanými Windows:

Nemôžete si vytvoriť svoj vlastný základný obrázok (scratch image).

Imidž Windows Server Core váži aj 10 giga a celkovo sa správa ako plnohodnotný Windows Server 2016. Bez problémov sa tam nainštaluje napríklad MS SQL a plnohodnotný .NET Framework. Ak sa vaša aplikácia vo veľkej miere nespolieha na používateľské rozhranie, nainštaluje sa tiež.

Nano Server je o niečo zaujímavejší. Ide o veľmi optimalizovaný a zredukovaný Windows Server, ktorý váži menej ako jeden koncert. Obmedzení je však dosť: žiadne 32-bitové aplikácie, používateľské rozhranie, RDP, orezaný PowerShell atď. To však nebráni inštalácii rovnakého IIS, .NET Core a dokonca aj nejakého MySQL na Nano Server.

A vedel by si niekto pred pár rokmi predstaviť, že v Dockerfile bude možné naraz stretnúť „Microsoft“, „Windows“ a „PowerShell“?

Z microsoft/windowsservercore RUN powershell -Command....

Z microsoft/windowsservercore

RUN powershell-Command . . . .

Je to Windows v Dockeri! Stále to znie absurdne.

Stupne izolácie

Kontajnery Windows môžu bežať v dvoch režimoch izolácie:

  • Kontajnery Windows Server
  • Hyper-V kontajnery

V prvom režime Windows sa kontajnery správajú rovnako ako všetky ostatné kontajnery v Dockeri: zdieľajú spoločné jadro s operačným systémom, kontajnerové procesy sú izolované, ale stále viditeľné v strome hostiteľského procesu atď. Toto je predvolené a väčšina rýchly spôsob spustiť kontajner na oknách.

V druhom prípade sa kontajner dostane do špeciálneho virtuálneho počítača Hyper-V. To má, samozrejme, zlý vplyv na rýchlosť spúšťania, ale izolácia je úplná.

Záver

Windows v Dockeri je len skvelá správa. Aj keď sa neponáhľate s kontajnerovaním svojich produktov, je to skvelý nástroj na izoláciu vašich jednotkových testov, produkčných strojov, demo serverov, sandboxov – všetkého, na čo ste si predtým museli vytvoriť virtuálny stroj. Ak sa Microsoftu ešte podarí spustiť nanoserver na Linuxe, potom im odpustím nedávne ukončenie Microsoft Band 2, ktorý bol neprezieravo kúpený dva mesiace predtým.

*systémy nix natívne implementujú multitasking a ponúkajú nástroje na izoláciu a kontrolu procesov. Technológie ako chroot(), ktorá poskytuje izoláciu na úrovni súborového systému, FreeBSD Jail, ktorá obmedzuje prístup k štruktúram jadra, LXC a OpenVZ, sú už dlho známe a široko používané. Impulzom vo vývoji technológie bol ale Docker, ktorý umožnil pohodlnú distribúciu aplikácií. Teraz sa to dostalo do systému Windows.

Kontajnery v systéme Windows

Moderné servery majú nadmernú výkonnosť a aplikácie niekedy nevyužívajú ani ich časti. Výsledkom je, že systémy nejaký čas „nečinia“ a ohrievajú vzduch. Riešením bola virtualizácia, ktorá umožňuje prevádzkovať niekoľko operačných systémov na jednom serveri, zaručene ich zdieľať medzi sebou a každému prideliť správne množstvo zdrojov. Pokrok však nestojí na mieste. Ďalšou fázou sú mikroslužby, kedy je každá časť aplikácie nasadená samostatne, ako sebestačný komponent, ktorý možno jednoducho škálovať na požadovanú záťaž a aktualizovať. Izolácia zabraňuje iným aplikáciám zasahovať do mikroslužby. S príchodom projektu Docker, ktorý zjednodušil proces balenia a doručovania aplikácií spolu s prostredím, dostala architektúra mikroslužieb ďalší impulz vo vývoji.

Kontajnery sú ďalším typom virtualizácie, ktorý poskytuje samostatné prostredie pre spustenie aplikácií, nazývané OS Virtualizácia. Kontajnery sa implementujú pomocou izolovaného priestoru názvov, ktorý zahŕňa všetky zdroje (virtualizované názvy) potrebné na prácu, s ktorými môžete interagovať (súbory, sieťové porty, procesy atď.) a ktoré nemôžete prekročiť. To znamená, že operačný systém zobrazuje kontajneru iba to, čo je vybraté. Aplikácia vo vnútri kontajnera si myslí, že je jediná a beží v plnohodnotnom OS bez akýchkoľvek obmedzení. Ak je potrebné zmeniť existujúci súbor alebo vytvoriť nový, kontajner dostane kópie z hlavného hostiteľského OS, pričom si ponechá len zmenené časti. Preto je nasadenie viacerých kontajnerov na jednom hostiteľovi veľmi efektívne.

Rozdiel medzi kontajnermi a virtuálnymi strojmi je v tom, že kontajnery nenačítavajú svoje vlastné kópie OS, knižnice, systémové súbory atď. operačný systém akoby zdieľané s kontajnerom. Jedinou dodatočnou požiadavkou sú zdroje potrebné na spustenie aplikácie v kontajneri. Vďaka tomu sa kontajner spustí v priebehu niekoľkých sekúnd a zaťaží systém menej ako v prípade virtuálnych strojov. Docker momentálne ponúka 180 000 aplikácií v repozitári a formát zjednocuje Open Container Initiative (OCI). Ale závislosť od jadra znamená, že kontajnery nebudú fungovať v inom OS. Kontajnery pre Linux vyžadujú Linux API, takže Windows nebude fungovať na Linuxe.

Až donedávna vývojári Windows ponúkali dve virtualizačné technológie: virtuálne stroje a virtuálne aplikácie Server App-V. Každý z nich má svoju vlastnú oblasť použitia, svoje výhody a nevýhody. Teraz sa rozsah rozšíril - kontajnery (Windows Server Containers) boli oznámené v systéme Windows Server 2016. A hoci v čase TP4 vývoj ešte nebol dokončený, už je celkom možné vidieť novú technológiu v akcii a vyvodiť závery. Treba podotknúť, že dobiehajúc zameškané a po ruke už hotové technológie zašli vývojári MS v niektorých otázkach trochu ďalej, takže používanie kontajnerov sa stalo jednoduchším a všestrannejším. Hlavným rozdielom je, že sú ponúkané dva typy kontajnerov: kontajnery Windows a kontajnery Hyper-V. V TP3 boli dostupné len prvé.

Kontajnery Windows používajú rovnaké jadro ako OS, ktoré je medzi sebou dynamicky zdieľané. Distribučný proces (CPU, RAM, sieť) preberá OS. Voliteľne môžete obmedziť maximálne dostupné zdroje pridelené kontajneru. Súbory OS a spustené služby sú mapované do menného priestoru každého kontajnera. Tento typ kontajnera využíva zdroje efektívne, znižuje réžiu, a preto umožňuje hustejšie umiestnenie aplikácií. Tento režim trochu pripomína FreeBSD Jail alebo Linux OpenVZ.

Hyper-V kontajnery poskytujú ďalšiu vrstvu izolácie s Hyper-V. Každému kontajneru je pridelené vlastné jadro a pamäť, izoláciu nevykonáva jadro OS, ale hypervízor Hyper-V. Výsledkom je rovnaká úroveň izolácie ako pri virtuálnych počítačoch, s menšou réžiou ako pri virtuálnych počítačoch, no viac ako pri kontajneroch Windows. Ak chcete použiť tento typ kontajnera, musíte na hostiteľa nainštalovať rolu Hyper-V. Kontajnery Windows sú vhodnejšie na použitie v dôveryhodnom prostredí, napríklad keď sú na serveri spustené aplikácie z rovnakej organizácie. Keď server používa veľa spoločností a je potrebná väčšia izolácia, kontajnery Hyper-V budú mať pravdepodobne väčší zmysel.

Dôležitou vlastnosťou kontajnerov vo Win 2016 je, že typ sa nevyberá v čase vytvárania, ale v čase nasadenia. To znamená, že akýkoľvek kontajner môže byť spustený ako Windows aj ako Hyper-V.

Vo Win 2016 je za kontajnery zodpovedná vrstva abstrakcie zásobníka Container Management, ktorá implementuje všetky potrebné funkcie. Na ukladanie sa používa obrazový formát pevného disku VHDX. Kontajnery, ako v prípade Docker, sú uložené ako obrázky v úložisku. Každý navyše neukladá kompletný súbor údajov, ale iba rozdiely medzi vytvoreným obrázkom a základným obrázkom a v čase spustenia sa všetky potrebné údaje premietajú do pamäte. Virtuálny prepínač sa používa na riadenie sieťovej prevádzky medzi kontajnerom a fyzickou sieťou.

OS v kontajneri môže byť Server Core alebo Nano Server. Prvý, vo všeobecnosti, už dlho nie je novinkou a poskytuje vysoký stupeň kompatibilita s existujúcimi aplikáciami. Druhou je ešte viac oklieštená verzia bez monitora, ktorá vám umožňuje prevádzkovať server v najmenšej možnej konfigurácii na použitie s Hyper-V, súborovým serverom (SOFS) a cloudovými službami. Grafické rozhranie, samozrejme, chýba. Obsahuje len tie najnutnejšie komponenty (.NET s CoreCLR, Hyper-V, Clustering a pod.). V konečnom dôsledku však zaberá o 93 % menej miesta a vyžaduje menej kritických opráv.

Ďalší zaujímavý bod. Na správu kontajnerov môžete okrem tradičného prostredia PowerShell použiť aj Docker. A aby bolo možné na Win spúšťať nenatívne pomocné programy, spoločnosť MS sa spojila s rozšírením Docker API a sady nástrojov. Všetok vývoj je otvorený a dostupný na oficiálnom GitHub projektu Docker. Príkazy správy Dockera sa vzťahujú na všetky kontajnery, Win aj Linux. Aj keď, samozrejme, kontajner vytvorený na Linuxe nie je možné spustiť na Windows (rovnako ako naopak). V súčasnosti má PowerShell obmedzenú funkčnosť a umožňuje vám pracovať iba s lokálnym úložiskom.

Inštalácia kontajnerov

Azure má požadovaný Windows Server 2016 Core s obrázkom Containers Tech Preview 4, ktorý môžete nasadiť a použiť na preskúmanie kontajnerov. V opačnom prípade musíte všetko nakonfigurovať sami. Pre lokálnu inštaláciu potrebujete Win 2016 a keďže Hyper-V vo Win 2016 podporuje vnorenú virtualizáciu (vnorená virtualizácia), môže ísť o fyzický alebo virtuálny server. Proces inštalácie komponentu je štandardný. Vyberte príslušnú položku v Sprievodcovi pridaním rolí a funkcií alebo pomocou prostredia PowerShell zadajte príkaz

PS>Inštalovať-kontajnery funkcií systému Windows

V tomto procese sa nainštaluje aj sieťový ovládač Virtual Switch, ktorý musí byť okamžite nakonfigurovaný, inak ďalšie akcie vygenerujú chybu. Pozrime sa na názvy sieťových adaptérov:

PS> Get-NetAdapter

Na fungovanie potrebujeme ovládač typu External. Rutina cmdlet New-VMSwitch má veľa parametrov, ale pre príklad si vystačíme s minimálnymi nastaveniami:

PS> Nový-VMSwitch -Názov externého -NetAdapterName Ethernet0

Kontrolujeme:

PS> Získajte VMSwitch | kde ($_.SwitchType –eq "Externé")

Brána firewall systému Windows zablokuje pripojenia ku kontajneru. Preto musíte vytvoriť pravidlo povolenia, aspoň pre možnosť vzdialeného pripojenia pomocou vzdialenej komunikácie PowerShell, preto povolíme TCP / 80 a vytvoríme pravidlo NAT:

PS> Nové-NetFirewallRule -Názov "TCP80" -Zobrazený názov "HTTP na TCP/80" -Protokol tcp -LocalPort 80 -Povolenie akcie -Povolené True ternalPort 80

Existuje ďalšia jednoduchá možnosť nasadenia. Vývojári pripravili skript, ktorý vám umožní automaticky nainštalovať všetky závislosti a nakonfigurovať hostiteľa. Môžete ho použiť, ak chcete. Parametre v skripte vám pomôžu pochopiť všetky mechanizmy:

PS> https://aka.ms/tp4/Install-ContainerHost -OutFile C:\Install-ContainerHost.ps1 PS> C:\Install-ContainerHost.ps1

Existuje ďalšia možnosť - nasadiť hotový virtuálny stroj s podporou kontajnerov. Na tento účel je na tom istom zdroji skript, ktorý automaticky vykoná všetko požadované operácie. podrobné pokyny uvedené na MSDN. Stiahnite si a spustite skript:

PS> wget -uri https://aka.ms/tp4/New-ContainerHost -OutFile c:\New-ContainerHost.ps1 PS> C:\New-ContainerHost.ps1 –VmName WinContainer -WindowsImage ServerDatacenterCore

Názov je ľubovoľný a -WindowsImage označuje typ vytváraného obrazu. Možnosti môžu byť NanoServer, ServerDatacenter. Okamžite sa nainštaluje aj Docker, za jeho absenciu či prítomnosť je zodpovedný parameter SkipDocker a IncludeDocker. Po spustení sa obraz začne načítavať a konvertovať, v tomto procese budete musieť zadať heslo na vstup do VM. Samotný ISO súbor je pomerne veľký, takmer 5 GB. Ak je kanál pomalý, súbor je možné stiahnuť na iný počítač, potom ho premenovať na WindowsServerTP4 a skopírovať do C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks. Môžeme sa prihlásiť do nainštalovaného virtuálneho stroja zadaním hesla nastaveného počas zostavovania a pracovať.

Teraz môžete prejsť priamo k použitiu kontajnerov.

Používanie kontajnerov s PowerShell

Modul Kontajnery obsahuje 32 cmdletov PowerShell, z ktorých dokumentácia k niektorým je stále neúplná, aj keď vo všeobecnosti stačí na to, aby všetko fungovalo. Zoznam sa dá ľahko získať:

PS> Kontajnery modulu Get-Command

Zoznam dostupných obrázkov môžete získať pomocou cmdlet Get-ContainerImage, kontajnerov – Get-Container. V prípade kontajnera sa v stĺpci Stav zobrazí jeho aktuálny stav: zastavený alebo spustený. Ale zatiaľ čo je technológia vo vývoji, MS neposkytol úložisko, a ako už bolo spomenuté, zatiaľ čo PowerShell pracuje s lokálnym úložiskom, takže si ho budete musieť na experimenty vytvoriť sami.

Takže máme server s podporou, teraz potrebujeme samotné kontajnery. Aby sme to dosiahli, nastavili sme poskytovateľa balíka ContainerProvider.

Pokračovanie dostupné len pre členov

Možnosť 1. Pripojte sa ku komunite „stránky“ a prečítajte si všetky materiály na stránke

Členstvo v komunite počas určeného obdobia vám umožní prístup ku VŠETKÝM materiálom Hackerov, zvýši vašu osobnú kumulatívnu zľavu a umožní vám získať profesionálne hodnotenie Xakep Score!