Kontejnery Windows serverů. Pojďme se zabývat kontejnery. Kontejnery ve Windows

Je to hotové! Pomohly buď modlitby, nebo oběti, ale nyní můžete spouštět kontejnery Docker s Windows uvnitř. Skvělá zpráva přišla s vydáním Windows Server 2016. A to nemluvíme o nějakém chytře skrytém virtuálním stroji nebo emulaci Windows na linuxovém jádře – skutečné Windows běží ve skutečném Dockeru, se spuštěným Dockerfile, docker-compose a dalším Dockerem věci .

Omezení

To ale neznamená, že nyní můžete spustit jakýkoli kontejner kdekoli. Vzhledem k tomu, že si kontejnery Docker „půjčují“ jádro operačního systému od svého hostitele (jinak by musely mít vlastní OS a proměnit se ve virtuální stroj), lze kontejnery Windows spouštět pouze na nejnovější aktualizaci Windows 10 Pro Anniversary Update a Windows Server 2016.

Druhým bodem je, že stále není možné spustit nativní linuxový kontejner na Windows. Anniversary Update má svůj vlastní linuxový subsystém (se kterým můžete spustit například skutečný Bash), ale neobstojí ani v plnohodnotném linuxovém jádru, takže stejný kontejner s Ubuntu na Windows stále potřebuje skrytý virtuální stroj.

Konečně můžete na počítači s Windows spustit oba kontejnery současně, ale s určitými obtížemi. Pokud tento příkaz spustíte na Windows Server 2016 s nainstalovaným Dockerem (před rokem bych to nazval čarodějnictví), bude fungovat:

Ale pokud se po tomto příkazu pokusíte spustit kontejner Ubuntu, Docker bude smutný:

Problém je v tom, že kontejnery Windows a Linux obsluhují různí démoni Docker, kteří však ke komunikaci s příkazovým řádkem používají stejný kanál. To znamená, že v daném okamžiku může být aktivní pouze jeden démon. Na oficiálních stránkách Dockeru je beta verze „Docker for Windows“, která se snaží problém vyřešit (zatím pouze na Windows 10 Pro a Enterprise). Ale i s tím, abyste přešli z kontejnerů Windows na Linux, musíte buď přejít do nabídky nastavení nebo komunikovat s příkazovým řádkem:

PowerShell

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

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

Obrázky systému Windows

Zatím existují pouze dva základní obrázky s kontejnerizovanými Windows:

Nemůžete si vytvořit svůj vlastní základní obrázek (scratch image).

Obraz Windows Server Core váží i 10 gigabajtů a obecně se chová jako plnohodnotný Windows Server 2016. Bez problémů se tam nainstaluje například MS SQL a plnohodnotné .NET Framework. Pokud vaše aplikace příliš nezávisí na uživatelském rozhraní, bude nainstalována.

Nano Server je o něco zajímavější. Je to vysoce optimalizovaný a zkrácený Windows Server, který váží méně než jeden koncert. Existuje ale také dostatek omezení: žádné 32bitové aplikace, uživatelské rozhraní, RDP, nasekané PowerShell atd. To vám ale nebrání v instalaci stejného IIS, .NET Core a dokonce i některých MySQL na Nano Server.

A kdo by si před pár lety dokázal představit, že v Dockerfile můžete najednou najít „Microsoft“, „Windows“ a „PowerShell“?

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

OD microsoft/windowsservercore

RUN powershell - Command . . . .

Jsou to Windows v Dockeru! Pořád to zní absurdně.

Stupně izolace

Kontejnery Windows lze spouštět ve dvou režimech izolace:

  • Kontejnery Windows Server
  • Hyper-V kontejnery

V prvním režimu Windows se kontejnery chovají stejně jako všechny ostatní kontejnery v Dockeru: sdílejí společné jádro s operačním systémem, kontejnerové procesy jsou izolované, ale stále viditelné ve stromu hostitelského procesu atd. Toto je výchozí a nejrychlejší způsob spustit kontejner v systému Windows.

Ve druhém případě kontejnery spadají do speciálního virtuálního stroje Hyper-V. To má samozřejmě špatný vliv na rychlost spouštění, ale izolace je kompletní.

Závěr

Windows na Dockeru je skvělá zpráva. I když nespěcháte s balením svých produktů do kontejnerů, je to skvělý nástroj pro izolaci vašich jednotkových testů, produkčních strojů, demo serverů, sandboxů – všeho, pro co jste dříve museli vytvořit virtuální stroj. Pokud se Microsoftu ještě podaří spustit nanoserver na Linuxu, pak jim odpustím nedávné ukončení Microsoft Band 2, který jsem si neprozřetelně koupil dva měsíce předtím.

Jak zabalit aplikaci do kontejneru Docker?

Mám aplikaci napsanou v NodeJS. Jak jej mohu zabalit do obrazu Docker, aby se spustil jako kontejner?

Docker je systém pro správu kontejnerů pro operační systémy kompatibilní s POSIX (v současné době podporované Linuxem). Zvláštností Dockeru je možnost zabalit aplikaci s veškerým potřebným prostředím tak, aby ji bylo možné spustit na jiném systému bez dlouhých a složitých procedur pro instalaci závislostí nebo budování ze zdrojů. Zabalená aplikace připravená k nasazení se nazývá „image“. Docker obrazy jsou založeny na "šablonách" - předkonfigurovaných pracovních prostředích. Můžete si to představit jako distribuce operačního systému, i když to není tak úplně pravda. Můžete si také vytvořit vlastní šablonu prostudováním dokumentace Dockeru. Výhodou tohoto přístupu je, že obraz vaší aplikace bude obsahovat pouze aplikaci samotnou a prostředí pro ni potřebné se automaticky stáhne z úložiště šablon. Docker lehce připomíná chroot nebo bsd jail, ale funguje jinak.

Je důležité rozlišovat mezi pojmy „kontejner“ a „obrázek“. Kontejner je spuštěná kopie vaší aplikace a obrázek je soubor, ve kterém je aplikace uložena a ze kterého je kontejner vytvořen.

Řekněme, že máte aplikaci NodeJS, kterou chcete kontejnerizovat. Předpokládejme, že soubor, který spouští vaši aplikaci, se nazývá server.js a aplikace naslouchá na portu 8000, aby fungovala. Jako šablonu použijeme „node:carbon“. Chcete-li aplikaci kontejnerizovat, musíte v adresáři, kde jsou umístěny soubory vaší aplikace, vytvořit soubor „Dockerfile“, který bude popisovat parametry přípravy obrazu:

$ klepněte na Dockerfile

Obsah souboru může být něco takového:

# Určete šablonu pro použití FROM node:carbon # Vytvořte pracovní adresář aplikace uvnitř kontejneru WORKDIR /usr/src/app # Nainstalujte závislosti aplikace pomocí npm # Zkopírují se soubory package.json i package-lock.json, pokud jsou k dispozici KOPÍROVAT package*.json ./ RUN npm install # Zkopírujte soubory aplikace do obrazu COPY . . # Otevřete port 8000, aby byl přístupný zvenčí kontejneru EXPOSE 8000 # Proveďte příkaz ke spuštění aplikace uvnitř kontejneru CMD [ "npm", "start" ]

Chcete-li z obrázku vyloučit nepotřebné soubory, můžete jejich názvy uvést v souboru „.dockerignore“. Můžete použít masku (*.log).

Obrázek se vytvoří pomocí následujícího příkazu:

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

$ docker images # Příklad ID TAGU REPOSITORY CREATED node carbon 1934b0b038d1 před 5 dny uživatelské jméno/node-web-app nejnovější d64d3505b0d2 před 1 minutou

Kontejner se spouští z obrázku pomocí následujícího příkazu:

$ docker run -p 49160:8000 -d uživatelské jméno/uzel-web-app

Tento příklad vytvoří kontejner z obrázku "username/node-web-app" a okamžitě jej spustí. Port aplikace 8000 je dostupný na lokálním počítači (localhost) a aby byl přístupný „venku“, je „přesměrován“ na port 49160. Můžete si vybrat libovolný volný port, navíc je možné aplikaci přesměrovat port „tak jak je“ zadáním volby „ -p 8000:8000“.

Zadáním příkazu zjistíte, že váš kontejner běží:

$ docker ps # Příklad ID IMAGE COMMAND ... PORTS ecce33b30ebf uživatelské jméno/uzel-web-app: nejnovější npm start ... 49160->8000

Kontejner lze spravovat pomocí různých příkazů zadáním ID tohoto kontejneru:

$ docker pause ecce33b30ebf - pozastavení kontejneru s ID ecce33b30ebf
$ docker obnovit ecce33b30ebf - obnovit kontejner s ID ecce33b30ebf
$ docker stop ecce33b30ebf - stop kontejner s ID ecce33b30ebf
$ docker rm ecce33b30ebf - smazat kontejner (toto smaže všechna data vytvořená aplikací uvnitř kontejneru)

Systémy *nix zpočátku implementují multitasking a nabízejí nástroje, které vám umožní izolovat a řídit procesy. Technologie jako chroot(), která poskytuje izolaci na úrovni souborového systému, FreeBSD Jail, která omezuje přístup ke strukturám jádra, LXC a OpenVZ, jsou již dlouho známé a široce používané. Impulsem pro rozvoj technologie byl ale Docker, který umožňoval pohodlnou distribuci aplikací. Nyní to samé přišlo do Windows.

Kontejnery ve Windows

Moderní servery mají nadbytečnou kapacitu a aplikace někdy jejich části ani nevyužívají. Výsledkem je, že systémy nějakou dobu „nečiní“ a ohřívají vzduch. Řešením byla virtualizace, která umožňuje provozovat několik operačních systémů na jednom serveru, zaručeně je mezi sebou oddělit a každému alokovat potřebné množství zdrojů. Pokrok ale nestojí na místě. Další fází jsou mikroslužby, kdy je každá část aplikace nasazena samostatně, jako soběstačná komponenta, kterou lze snadno škálovat na požadovanou zátěž a aktualizovat. Izolace zabraňuje jiným aplikacím zasahovat do mikroslužby. S příchodem projektu Docker, který zjednodušil proces balení a dodávání aplikací spolu s prostředím, získala architektura mikroslužeb další impuls ve vývoji.

Kontejnery jsou dalším typem virtualizace, který poskytuje samostatné prostředí pro běh aplikací, nazývané OS Virtualizace. Kontejnery jsou implementovány pomocí izolovaného jmenného prostoru, který zahrnuje všechny zdroje nezbytné pro provoz (virtualizovaná jména), se kterými můžete interagovat (soubory, síťové porty, procesy atd.) a který nemůžete opustit. To znamená, že OS zobrazuje kontejneru pouze to, co je přiděleno. Aplikace uvnitř kontejneru věří, že je jediná a běží v plnohodnotném OS bez omezení. Pokud je nutné změnit existující soubor nebo vytvořit nový, kontejner obdrží kopie z hlavního hostitelského OS, přičemž uloží pouze změněné sekce. Proto je nasazení více kontejnerů na jednom hostiteli velmi efektivní.

Rozdíl mezi kontejnery a virtuálními stroji je v tom, že kontejnery nenačítají své vlastní kopie operačního systému, knihoven, systémových souborů atd. Operační systém je jakoby sdílen s kontejnerem. Jedinou další potřebnou věcí jsou prostředky potřebné ke spuštění aplikace v kontejneru. Díky tomu se kontejner spustí během několika sekund a zatíží systém méně než při použití virtuálních strojů. Docker aktuálně nabízí v úložišti 180 tisíc aplikací a formát sjednocuje Open Container Initiative (OCI). Ale závislost na jádře znamená, že kontejnery nebudou fungovat na jiném OS. Kontejnery pro Linux vyžadují Linux API, takže Windows na Linuxu nebudou fungovat.

Až donedávna nabízeli vývojáři Windows dvě virtualizační technologie: virtuální stroje a virtuální aplikace Server App-V. Každý z nich má své vlastní místo použití, své klady a zápory. Nyní se rozsah rozšířil - kontejnery byly oznámeny v systému Windows Server 2016. A ačkoliv v době TP4 vývoj ještě nebyl dokončen, je již docela dobře možné vidět novou technologii v akci a vyvodit závěry. Nutno podotknout, že tím, že doháněli a měli po ruce hotové technologie, šli vývojáři MS v některých otázkách trochu dál, takže použití kontejnerů se stalo jednodušším a univerzálnějším. Hlavní rozdíl je v tom, že jsou nabízeny dva typy kontejnerů: kontejnery Windows a kontejnery Hyper-V. V TP3 byly k dispozici pouze první.

Kontejnery Windows používají jedno jádro s OS, které je mezi sebou dynamicky sdíleno. Distribuční proces (CPU, RAM, síť) přebírá OS. V případě potřeby můžete omezit maximální dostupné zdroje přidělené kontejneru. Soubory OS a spuštěné služby jsou mapovány do jmenného prostoru každého kontejneru. Tento typ kontejneru využívá zdroje efektivně, snižuje režii, a proto umožňuje umístění aplikací hustěji. Tento režim trochu připomíná FreeBSD Jail nebo Linux OpenVZ.

Hyper-V kontejnery poskytují další úroveň izolace pomocí Hyper-V. Každému kontejneru je přiděleno vlastní jádro a izolaci neprovádí jádro operačního systému, ale hypervizor Hyper-V. Výsledkem je stejná úroveň izolace jako u virtuálních počítačů, s menší režií než virtuální počítače, ale větší režií než u kontejnerů Windows. Chcete-li použít tento typ kontejneru, musíte na hostitele nainstalovat roli Hyper-V. Kontejnery Windows jsou vhodnější pro použití v důvěryhodném prostředí, například při spouštění aplikací ze stejné organizace na serveru. Když server používá více společností a je potřeba větší úroveň izolace, kontejnery Hyper-V budou mít pravděpodobně větší smysl.

Důležitou vlastností kontejnerů ve Win 2016 je, že typ se nevybírá při vytváření, ale při nasazení. To znamená, že jakýkoli kontejner lze spustit jako Windows i jako Hyper-V.

Ve Win 2016 je za kontejnery zodpovědná vrstva abstrakce zásobníku Container Management, která implementuje všechny potřebné funkce. Pro ukládání se používá obrazový formát pevného disku VHDX. Kontejnery se stejně jako v případě Dockeru ukládají do obrázků v úložišti. Každý navíc neukládá kompletní sadu dat, ale pouze rozdíly mezi vytvořeným obrazem a základním a v okamžiku spuštění se všechna potřebná data promítají do paměti. Virtuální přepínač se používá ke správě síťového provozu mezi kontejnerem a fyzickou sítí.

Server Core nebo Nano Server lze použít jako OS v kontejneru. První z nich obecně není po dlouhou dobu nový a poskytuje vysokou úroveň kompatibility se stávajícími aplikacemi. Druhá je ještě více okleštěná verze pro práci bez monitoru, která vám umožňuje provozovat server v minimální možné konfiguraci pro použití s ​​Hyper-V, souborovým serverem (SOFS) a cloudovými službami. Samozřejmě nechybí grafické rozhraní. Obsahuje pouze nejnutnější komponenty (.NET s CoreCLR, Hyper-V, Clustering a tak dále). Ale nakonec zabírá o 93 % méně místa a vyžaduje méně kritických oprav.

Další zajímavý bod. Ke správě kontejnerů můžete kromě tradičního PowerShellu použít také Docker. A aby bylo možné na Win spouštět nenativní nástroje, společnost MS se spojila s rozšířením Docker API a sady nástrojů. Veškerý vývoj je otevřený a dostupný na oficiálním GitHubu projektu Docker. Příkazy správy Dockeru se vztahují na všechny kontejnery, jak Win, tak Linux. I když je samozřejmě nemožné spustit kontejner vytvořený na Linuxu na Windows (stejně jako naopak). V současné době má PowerShell omezenou funkčnost a umožňuje vám pracovat pouze s místním úložištěm.

Instalační kontejnery

Azure má požadovanou bitovou kopii Windows Server 2016 Core s Containers Tech Preview 4, kterou můžete nasadit a použít k prozkoumání kontejnerů. Jinak si musíte vše nakonfigurovat sami. Pro lokální instalaci potřebujete Win 2016, a protože Hyper-V ve Win 2016 podporuje vnořenou virtualizaci, může to být buď fyzický nebo virtuální server. Samotný proces instalace komponent je standardní. Vyberte příslušnou položku v Průvodci přidáním rolí a funkcí nebo pomocí PowerShellu zadejte příkaz

PS> Install-WindowsFeature Containers

Během procesu bude také nainstalován síťový ovladač Virtual Switch, který musí být okamžitě nakonfigurován, jinak další akce vygenerují chybu. Podívejme se na názvy síťových adaptérů:

PS>Get-NetAdapter

K práci potřebujeme ovladač s typem External. Rutina New-VMSwitch má mnoho parametrů, ale pro tento příklad si vystačíme s minimálním nastavením:

PS> Nový-VMSwitch -Název externí -NetAdapterName Ethernet0

Zkontrolujeme:

PS> Get-VMSwitch | kde ($_.SwitchType –eq "Externí")

Brána firewall systému Windows zablokuje připojení ke kontejneru. Proto je nutné vytvořit povolovací pravidlo, alespoň abychom se mohli vzdáleně připojit pomocí PowerShell remotingu, povolíme TCP/80 a vytvoříme pravidlo NAT:

PS> New-NetFirewallRule -Name "TCP80" -DisplayName "HTTP on TCP/80" -Protocol tcp -LocalPort 80 -Action Allow -Enabled True PS> Add-NetNatStaticMapping -NatName "ContainerNat" -Protocol TCP -External.IPAddress.0 -. InternalIPAddress 192.168.1.2 -InternalPort 80 -ExternalPort 80

Pro jednoduché nasazení existuje ještě jedna možnost. Vývojáři připravili skript, který umožňuje automatickou instalaci všech závislostí a konfiguraci hostitele. Pokud chcete, můžete jej použít. Parametry uvnitř skriptu vám pomohou pochopit všechny mechanismy:

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

Existuje další možnost - nasadit hotový virtuální stroj s podporou kontejnerů. K tomu je na stejném prostředku skript, který automaticky provádí všechny potřebné operace. Podrobné pokyny jsou uvedeny na webu MSDN. Stáhněte a spusťte 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ázev nastavíme libovolně a -WindowsImage označuje typ shromažďovaného obrázku. Možnosti mohou být NanoServer, ServerDatacenter. Docker je také nainstalován okamžitě; za jeho nepřítomnost nebo přítomnost jsou zodpovědné parametry SkipDocker a IncludeDocker. Po spuštění začne stahování a konverze obrazu, během procesu budete muset zadat heslo pro přihlášení do VM. Samotný ISO soubor je poměrně velký, téměř 5 GB. Pokud je kanál pomalý, lze soubor stáhnout do jiného počítače, poté přejmenovat na WindowsServerTP4 a zkopírovat do C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks. Můžeme se přihlásit k nainstalovanému virtuálnímu stroji zadáním hesla zadaného při sestavování a pracovat.

Nyní můžete přejít přímo k používání kontejnerů.

Použití kontejnerů s PowerShell

Modul Kontejnery obsahuje 32 rutin PowerShell, z nichž některé jsou stále neúplné, i když obecně dostačující k tomu, aby vše fungovalo. Je snadné uvést:

PS> Kontejnery modulu Get-Command

Seznam dostupných obrázků můžete získat pomocí rutiny Get-ContainerImage, kontejnery - Get-Container. V případě kontejneru se ve sloupci Stav zobrazí jeho aktuální stav: zastavený nebo spuštěný. Ale zatímco je technologie ve vývoji, MS neposkytl úložiště, a jak již bylo zmíněno, PowerShell v současné době pracuje s lokálním úložištěm, takže pro experimenty si jej budete muset vytvořit sami.

Takže máme server s podporou, teď potřebujeme samotné kontejnery. Chcete-li to provést, nainstalujte poskytovatele balíčku ContainerProvider.

Pokračování je dostupné pouze pro členy

Možnost 1. Připojte se ke komunitě „stránky“ a přečtěte si všechny materiály na stránce

Členství v komunitě ve stanoveném období vám umožní přístup ke VŠEM hackerským materiálům, zvýší vaši osobní kumulativní slevu a umožní vám získat profesionální hodnocení Xakep Score!

V březnu 2013 Soloman Hikes oznámil zahájení projektu s otevřeným zdrojovým kódem, který se později stal známým jako Docker. V následujících měsících získal silnou podporu od linuxové komunity a na podzim 2014 Microsoft oznámil plány na implementaci kontejnerů ve Windows Server 2016. WinDocks, společnost, kterou jsem spoluzaložil, vydala nezávislou verzi open source Docker pro Windows na začátku roku 2016 se zaměřením na prvotřídní podporu kontejnerů v SQL Server. Kontejnery se rychle stávají středem pozornosti v tomto odvětví. V tomto článku se podíváme na kontejnery a jejich použití vývojáři SQL Serveru a správci databází

Principy organizace kontejnerů

Kontejnery definují nový způsob balení aplikací v kombinaci s izolací uživatelů a procesů pro aplikace s více nájemci. Různé implementace kontejnerů pro Linux a Windows existují již mnoho let, ale s vydáním Windows Server 2016 máme de facto standard Docker. Dnes jsou Docker API a formát kontejneru podporovány na veřejně dostupných AWS, Azure, Google Cloud, všech distribucích Linuxu a Windows. Elegantní struktura Dockeru má důležité výhody.

  • Přenosnost. Kontejnery obsahují závislosti aplikačního softwaru a běží beze změny na vývojářském notebooku, sdíleném testovacím serveru a jakékoli veřejné službě.
  • Kontejnerový ekosystém. Docker API je domovem průmyslových inovací s řešeními pro monitorování, protokolování, ukládání dat, orchestraci clusterů a správu.
  • Kompatibilní s veřejnými službami. Kontejnery jsou navrženy pro architektury mikroslužeb, škálování a pomíjivé úlohy. Kontejnery jsou navrženy tak, aby je bylo možné v případě potřeby odstranit a vyměnit, nikoli opravovat nebo upgradovat.
  • Rychlost a úspora. Vytvoření kontejnerů trvá několik sekund; je poskytována účinná podpora pro vícenásobné předplatné. Pro většinu uživatelů se počet virtuálních strojů sníží třikrát až pětkrát (obrázek 1).

SQL Server kontejnery

SQL Server podporuje vícenájem pojmenovaných instancí již deset let, jaká je tedy hodnota kontejnerů SQL Server?

Faktem je, že kontejnery SQL Server jsou praktičtější díky své rychlosti a automatizaci. Kontejnery SQL Server jsou pojmenované instance s daty a nastaveními zřízenými během několika sekund. Schopnost vytvářet, odstraňovat a nahrazovat kontejnery SQL Server během několika sekund je činí praktičtějšími pro vývoj, zajištění kvality a další případy použití popsané níže.

Díky rychlosti a automatizaci jsou kontejnery SQL Server ideální pro produkční vývoj a prostředí QA. Každý člen týmu spouští izolované kontejnery ve sdíleném virtuálním počítači, čímž se počet virtuálních strojů snižuje třikrát až pětkrát. V důsledku toho získáváme značné úspory na údržbě virtuálních strojů a na nákladech na licence Microsoftu. Kontejnery lze snadno integrovat do polí SAN (Storage Area Network) pomocí replik úložiště a klonů databáze (obrázek 2).

1TB připojená databáze je vytvořena na instanci kontejneru za méně než jednu minutu. Jde o významné zlepšení oproti serverům s vyhrazenými pojmenovanými instancemi nebo poskytováním virtuálních strojů pro každého vývojáře. Jedna společnost používá osmijádrový server pro obsluhu až 20 400 GB kontejnerů SQL Server. V minulosti trvalo zřízení každého virtuálního počítače déle než hodinu a instance kontejneru byly zřízeny za dvě minuty. Podařilo se tak 20krát snížit počet virtuálních strojů, 5krát snížit počet procesorových jader a výrazně snížit náklady na placení licencí Microsoftu. Kromě toho se zvýšila obchodní flexibilita a schopnost reagovat.

Použití kontejnerů SQL Server

Kontejnery jsou definovány pomocí skriptů Dockerfile, které poskytují konkrétní kroky k sestavení kontejneru. Dockerfile zobrazený na obrázku 1 určuje SQL Server 2012 s databázemi zkopírovanými do kontejneru a skriptem SQL Server pro maskování vybraných tabulek.

Každý kontejner může obsahovat desítky databází s podporou a soubory protokolu. Databáze lze zkopírovat a spustit v kontejneru nebo připojit pomocí příkazu MOUNTDB.

Každý kontejner obsahuje soukromý systém souborů, izolovaný od zdrojů hostitele. V příkladu zobrazeném na obrázku 2 je kontejner vytvořen pomocí MSSQL-2014 a venture.mdf. Vygeneruje se jedinečné ID kontejneru a port kontejneru.


Obrazovka 2. Kontejner založený na SQL Server 2014 a venture.mdf

Kontejnery SQL Server poskytují novou úroveň výkonu a automatizace, ale jejich chování je úplně stejné jako u běžných pojmenovaných prostorů. Správa zdrojů může být implementována pomocí nástrojů SQL Server nebo prostřednictvím omezení zdrojů kontejneru (obrázek 3).

Jiné aplikace

Kontejnery jsou nejběžnějším prostředkem organizace vývojových a QA prostředí, ale objevují se i další využití. Testování obnovy po havárii je jednoduchý, ale slibný případ použití. Mezi další patří kontejnerizace interního prostředí SQL Server pro starší aplikace, jako je SAP nebo Microsoft Dynamics. Kontejnerovaný backend se používá k zajištění pracovního prostředí pro podporu a průběžnou údržbu. Vyhodnocovací kontejnery se také používají k podpoře produkčních prostředí s trvalými datovými úložišti. V příštím článku budu hovořit podrobně o perzistentních datech.

WinDocks si klade za cíl ještě více zjednodušit používání kontejnerů prostřednictvím webového rozhraní. Další projekt se zaměřuje na migraci kontejnerů SQL Server v procesu DevOps nebo Continuous Integration s CI/CD potrubími založenými na Jenkins nebo Team City. Dnes si můžete vyzkoušet používání kontejnerů na všech edicích Windows 8 a Windows 10, Windows Server 2012 nebo Windows Server 2016 s podporou pro všechny edice počínaje SQL Server 2008 pomocí vaší kopie WinDocks Community Edition (https://www.windocks.com /community-docker-windows).

Studium technologie kontejnerů
Windows Server 2016

Jednou z pozoruhodných nových funkcí zavedených v systému Windows Server 2016 je podpora kontejnerů. Pojďme ji lépe poznat

Moderní systémy se již dávno vzdálily principu jeden OS – jeden server. Virtualizační technologie umožňují efektivnější využití serverových zdrojů, umožňují provozovat více operačních systémů, rozdělit je mezi sebou a zjednodušit správu. Poté se objevily mikroslužby, které umožnily nasadit izolované aplikace jako samostatnou, snadno spravovatelnou a škálovatelnou komponentu. Docker všechno změnil. Proces dodání aplikace spolu s prostředím se stal tak jednoduchým, že koncového uživatele nezaujal. Aplikace uvnitř kontejneru funguje, jako by používala plnohodnotný OS. Na rozdíl od virtuálních strojů však nenačítají vlastní kopie operačního systému, knihoven, systémových souborů atd. Kontejnery obdrží izolovaný jmenný prostor, ve kterém má aplikace přístup ke všem potřebným zdrojům, ale nemůže je překročit. Pokud potřebujete změnit nastavení, uloží se pouze rozdíly s hlavním OS. Kontejner se tedy na rozdíl od virtuálních strojů spouští velmi rychle a méně zatěžuje systém. Kontejnery využívají prostředky serveru efektivněji.

Kontejnery ve Windows

Ve Windows Server 2016 byla kromě stávajících virtualizačních technologií – virtuálních aplikací Hyper-V a Server App-V přidána podpora kontejnerů Windows Server Containers, implementovaná prostřednictvím vrstvy abstrakce zásobníku Správa kontejnerů, která implementuje všechny potřebné funkce. Technologie byla oznámena již v Technical Preview 4, ale od té doby se hodně změnilo směrem ke zjednodušení a nemusíte ani číst dříve napsané pokyny. Zároveň byly navrženy dva typy „jejich“ kontejnerů – kontejnery Windows a kontejnery Hyper-V. A pravděpodobně další hlavní příležitostí je použít ke správě kontejnerů kromě rutin PowerShellu také nástroje Docker.

Kontejnery pro Windows jsou principiálně podobné FreeBSD Jail nebo Linux OpenVZ, využívají jedno jádro s OS, které si spolu s dalšími prostředky (RAM, síť) navzájem sdílejí. OS a soubory služeb se promítají do jmenného prostoru každého kontejneru. Tento typ kontejneru využívá zdroje efektivně, snižuje režii, a proto umožňuje umístění aplikací hustěji. Protože obrazy základního kontejneru „mají“ stejné jádro jako uzel, jejich verze se musí shodovat, jinak není zaručena operace.

Hyper-V kontejnery používají další úroveň izolace a každému kontejneru je přiděleno vlastní jádro a paměť. Izolaci na rozdíl od předchozího typu neprovádí jádro OS, ale hypervizor Hyper-V (je vyžadována role Hyper-V). Výsledkem je nižší režie než u virtuálních strojů, ale větší izolace než u kontejnerů Windows. V tomto případě pro spuštění kontejneru použijte stejné jádro operačního systému. Tyto kontejnery lze také nasadit ve Windows 10 Pro/Enterprise. Zvláště stojí za zmínku, že typ kontejneru se nevybírá při vytváření, ale během nasazení. To znamená, že jakýkoli kontejner lze spustit jako Windows i jako verzi Hyper-V.

Kontejner používá jako OS oříznuté Server Core nebo Nano Server. První se objevil ve Windows Sever 2008 a poskytuje větší kompatibilitu se stávajícími aplikacemi. Druhý je ve srovnání se Server Core ještě zkrácený a je navržen tak, aby běžel bez monitoru, což vám umožňuje provozovat server v minimální možné konfiguraci pro použití s ​​Hyper-V, souborovým serverem (SOFS) a cloudovými službami, které vyžadují 93 % méně prostoru. Obsahuje pouze nejnutnější komponenty (.Net s CoreCLR, Hyper-V, Clustering atd.).

Pro ukládání se používá obrazový formát pevného disku VHDX. Kontejnery se stejně jako v případě Dockeru ukládají do obrázků v úložišti. Každý navíc neukládá kompletní sadu dat, ale pouze rozdíly mezi vytvořeným obrázkem a základním. A v okamžiku spuštění se všechna potřebná data promítnou do paměti. Virtuální přepínač se používá ke správě síťového provozu mezi kontejnerem a fyzickou sítí.