Vsebniki strežnika Windows. Ukvarjajmo se s kontejnerji. Vsebniki v sistemu Windows

Končano je! Pomagale so bodisi molitve ali žrtve, zdaj pa lahko poganjate vsebnike Docker z operacijskim sistemom Windows. Odlične novice so prišle skupaj z izdajo Windows Server 2016. In ne govorimo o nekem spretno skritem virtualnem stroju ali emulaciji sistema Windows v jedru Linuxa – pravi Windows deluje v pravem Dockerju, z delujočim Dockerfile, docker-compose in drugim Dockerjem stvari

Omejitve

Toda to ne pomeni, da lahko zdaj poganjate kateri koli vsebnik kjer koli. Ker Docker vsebniki »posodijo« jedro operacijskega sistema od svojega gostitelja (sicer bi morali imeti lasten OS in se spremeniti v virtualni stroj), lahko Windows vsebnike poganjate samo na najnovejši Windows 10 Pro Anniversary Update in Windows Server 2016.

Druga točka je, da je še vedno nemogoče zagnati izvorni vsebnik Linuxa v sistemu Windows. Anniversary Update ima lasten podsistem Linux (s katerim lahko na primer izvajate pravi Bash), vendar ne zdrži popolnega jedra Linuxa, zato isti vsebnik z Ubuntujem v sistemu Windows še vedno potrebuje skriti virtualni stroj.

Končno lahko oba vsebnika zaženete na računalniku Windows hkrati, vendar z nekaj težavami. Če zaženete ta ukaz v sistemu Windows Server 2016 z nameščenim Dockerjem (pred letom dni bi temu rekel čarovništvo), bo delovalo:

Toda če po tem ukazu poskusite zagnati vsebnik Ubuntu, bo Docker postal žalosten:

Težava je v tem, da vsebnike Windows in Linux strežejo različni demoni Docker, ki pa uporabljajo isti kanal za komunikacijo z ukazno vrstico. To pomeni, da je v danem trenutku lahko aktiven samo en demon. Na uradnem spletnem mestu Docker je na voljo različica beta »Docker za Windows«, ki poskuša rešiti težavo (za zdaj samo v sistemih Windows 10 Pro in Enterprise). Toda tudi z njim, če želite preklopiti z vsebnikov Windows na Linux, morate iti v meni z nastavitvami ali komunicirati z ukazno vrstico:

PowerShell

& "C:\Programske datoteke\Docker\Docker\DockerCli.exe" -SwitchDaemon

& "C:\Programske datoteke\Docker\Docker\DockerCli.exe"-SwitchDaemon

Windows slike

Zaenkrat obstajata samo dve osnovni sliki s kontejnerskimi Windowsi:

Ne morete narediti svoje osnovne slike (scratch slike).

Slika Windows Server Core tehta kar 10 gigov in se na splošno obnaša kot polnopravni Windows Server 2016. Tja sta na primer brez težav nameščena MS SQL in polnopravni .NET Framework. Če vaša aplikacija ni močno odvisna od uporabniškega vmesnika, bo nameščena.

Nano Server je malo bolj zanimiv. To je zelo optimiziran in okrnjen Windows Server, ki tehta manj kot en gig. Vendar je tudi dovolj omejitev: brez 32-bitnih aplikacij, uporabniškega vmesnika, RDP, sesekljanega PowerShell-a itd. Toda to vam ne preprečuje namestitve istega IIS, .NET Core in celo nekaj MySQL na Nano Server.

In kdo bi si lahko pred nekaj leti predstavljal, da lahko v datoteki Dockerfile naenkrat najdete »Microsoft«, »Windows« in »PowerShell«?

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

IZ microsoft/windowsservercore

ZAGENI powershell - ukaz. . . .

To je Windows v Dockerju! Še vedno se sliši absurdno.

Stopnje izolacije

Vsebnike Windows lahko izvajate v dveh izolacijskih načinih:

  • Windows Server Containers
  • Vsebniki Hyper-V

V prvem načinu Windows se vsebniki obnašajo enako kot vsi drugi vsebniki v Dockerju: delijo skupno jedro z operacijskim sistemom, procesi vsebnika so izolirani, vendar še vedno vidni v drevesu gostiteljskih procesov itd. To je privzeti in najhitrejši način za zagonski vsebnik v sistemu Windows.

V drugem primeru vsebniki padejo v poseben virtualni stroj Hyper-V. To seveda slabo vpliva na hitrost zagona, a izolacija je popolna.

Zaključek

Windows on Docker je odlična novica. Tudi če ne hitite pakirati svojih izdelkov v zabojnike, je to odlično orodje za izolacijo vaših testov enot, proizvodnih strojev, demo strežnikov, peskovnikov – vsega, za kar ste prej morali ustvariti virtualni stroj. Če bo Microsoftu še uspelo zagnati nanoserver na Linuxu, mu bom oprostil nedavno ukinitev Microsoft Band 2, ki sem ga nespametno kupil dva meseca pred tem.

Kako pakirati aplikacijo v vsebnik Docker?

Imam aplikacijo, napisano v NodeJS. Kako ga lahko zapakiram v sliko Dockerja, da se izvaja kot vsebnik?

Docker je sistem za upravljanje vsebnikov za operacijske sisteme, združljive s POSIX (trenutno podpira Linux). Posebna značilnost Dockerja je zmožnost zapakiranja aplikacije z vsem potrebnim okoljem tako, da jo je mogoče zagnati v drugem sistemu brez dolgih in zapletenih postopkov nameščanja odvisnosti ali gradnje iz virov. Zapakirana aplikacija, pripravljena za uvedbo, se imenuje "slika". Docker slike temeljijo na "predlogah" - vnaprej konfiguriranih delovnih okoljih. Lahko si jih predstavljate kot distribucije operacijskega sistema, čeprav to ni povsem res. Svojo predlogo lahko ustvarite tudi tako, da pregledate dokumentacijo Dockerja. Prednost tega pristopa je, da bo slika vaše aplikacije vsebovala samo aplikacijo, okolje, potrebno zanjo, pa bo samodejno preneseno iz repozitorija predlog. Docker rahlo spominja na chroot ali bsd jail, vendar deluje drugače.

Pomembno je razlikovati med pojmoma "vsebnik" in "slika". Vsebnik je tekoča kopija vaše aplikacije, slika pa je datoteka, v kateri je aplikacija shranjena in iz katere je vsebnik ustvarjen.

Recimo, da imate aplikacijo NodeJS, ki jo želite pospraviti v vsebnik. Predpostavimo, da se datoteka, ki poganja vašo aplikacijo, imenuje server.js in da aplikacija posluša na vratih 8000. Kot predlogo bomo uporabili "node:carbon". Če želite svojo aplikacijo pretvoriti v kontejner, morate v imeniku, kjer se nahajajo vaše aplikacije, ustvariti datoteko »Dockerfile«, ki bo opisala parametre priprave slike:

$ dotaknite se datoteke Docker

Vsebina datoteke je lahko nekaj takega:

# Določite predlogo za uporabo FROM node:carbon # Ustvarite delovni imenik aplikacije znotraj vsebnika WORKDIR /usr/src/app # Namestitev odvisnosti aplikacije z uporabo npm # Datoteki package.json in package-lock.json sta kopirani, če sta prisotni KOPIRAJ package*./ RUN npm install # Kopirajte svoje datoteke aplikacije na sliko COPY. . # Odprite vrata 8000, tako da so dostopna zunaj vsebnika EXPOSE 8000 # Izvedite ukaz za zagon aplikacije znotraj vsebnika CMD [ "npm", "start" ]

Če želite iz slike izključiti nepotrebne datoteke, lahko njihova imena navedete v datoteki ».dockerignore«. Uporabite lahko masko (*.log).

Slika je zgrajena z naslednjim ukazom:

$ docker build -t uporabniško ime/node-web-app.

$ docker slike # Primer REPOZITORIJ OZNAKA ID USTVARJENO vozlišče carbon 1934b0b038d1 pred 5 dnevi uporabniško ime/node-web-app najnovejše d64d3505b0d2 pred 1 minuto

Vsebnik se zažene iz slike z naslednjim ukazom:

$ docker run -p 49160:8000 -d uporabniško ime/node-web-app

Ta primer ustvari vsebnik iz slike "username/node-web-app" in ga takoj zažene. Vrata aplikacije 8000 so na voljo na lokalnem računalniku (localhost) in da je dostopna "zunaj", se "posreduje" na vrata 49160. Izberete lahko katera koli prosta vrata, poleg tega je možno aplikacijo posredovati vrata "kot so" tako, da podate možnost " -p 8000:8000".

Da vaš vsebnik deluje, lahko vidite tako, da vnesete ukaz:

$ docker ps # ID primera SLIKA UKAZ ... PORTS ecce33b30ebf uporabniško ime/node-web-app: najnovejši npm start ... 49160->8000

Vsebnik lahko upravljate z različnimi ukazi, tako da podate ID tega vsebnika:

$ docker pause ecce33b30ebf - zaustavi vsebnik z ID-jem ecce33b30ebf
$ docker resume ecce33b30ebf - nadaljujte vsebnik z ID-jem ecce33b30ebf
$ docker stop ecce33b30ebf - zaustavi vsebnik z ID-jem ecce33b30ebf
$ docker rm ecce33b30ebf - izbrišite vsebnik (to izbriše vse podatke, ki jih je ustvarila aplikacija znotraj vsebnika)

Sistemi *nix na začetku izvajajo večopravilnost in ponujajo orodja, ki vam omogočajo izolacijo in nadzor procesov. Tehnologije, kot so chroot(), ki zagotavlja izolacijo na ravni datotečnega sistema, FreeBSD Jail, ki omejuje dostop do struktur jedra, LXC in OpenVZ, so že dolgo znane in široko uporabljene. Toda spodbuda za razvoj tehnologije je bil Docker, ki je omogočil priročno distribucijo aplikacij. Zdaj je ista stvar prišla v Windows.

Vsebniki v sistemu Windows

Sodobni strežniki imajo presežne zmogljivosti, aplikacije pa včasih niti ne uporabljajo delov le-teh. Posledično sistemi nekaj časa "mirujejo" in ogrevajo zrak. Rešitev je bila virtualizacija, ki omogoča poganjanje več operacijskih sistemov na enem strežniku, ki jih zagotovljeno loči med seboj in vsakemu dodeli potrebno količino virov. Toda napredek ne miruje. Naslednja stopnja so mikrostoritve, ko je vsak del aplikacije razporejen posebej, kot samozadostna komponenta, ki jo je mogoče enostavno prilagoditi zahtevani obremenitvi in ​​posodobiti. Izolacija preprečuje, da bi druge aplikacije motile mikrostoritev. S prihodom projekta Docker, ki je poenostavil proces pakiranja in dostave aplikacij skupaj z okoljem, je mikrostoritvena arhitektura dobila dodaten zagon v razvoju.

Vsebniki so druga vrsta virtualizacije, ki zagotavlja ločeno okolje za izvajanje aplikacij, imenovano OS Virtualization. Vsebniki so implementirani z uporabo izoliranega imenskega prostora, ki vključuje vse vire, potrebne za delovanje (virtualizirana imena), s katerimi lahko komunicirate (datoteke, omrežna vrata, procesi itd.) in ki jih ne morete zapustiti. To pomeni, da OS prikaže vsebniku samo tisto, kar je dodeljeno. Aplikacija znotraj vsebnika verjame, da je edina in deluje v polnem OS brez kakršnih koli omejitev. Če je treba spremeniti obstoječo datoteko ali ustvariti novo, vsebnik prejme kopije iz glavnega gostiteljskega OS, pri čemer shrani samo spremenjene razdelke. Zato je postavitev več vsebnikov na enem gostitelju zelo učinkovita.

Razlika med vsebniki in virtualnimi stroji je v tem, da vsebniki ne nalagajo lastnih kopij operacijskega sistema, knjižnic, sistemskih datotek itd. Operacijski sistem je tako rekoč v skupni rabi z vsebnikom. Edina dodatna stvar, ki je potrebna, so viri, potrebni za izvajanje aplikacije v vsebniku. Posledično se vsebnik zažene v nekaj sekundah in manj obremenjuje sistem kot pri uporabi virtualnih strojev. Docker trenutno ponuja 180 tisoč aplikacij v repozitoriju, format pa poenoti Open Container Initiative (OCI). Toda odvisnost od jedra pomeni, da vsebniki ne bodo delovali v drugem OS. Vsebniki Linux zahtevajo API za Linux, zato Windows ne bo deloval v sistemu Linux.

Do nedavnega so razvijalci sistema Windows ponujali dve virtualizacijski tehnologiji: virtualne stroje in virtualne aplikacije Server App-V. Vsak ima svojo nišo uporabe, svoje prednosti in slabosti. Zdaj je obseg postal širši - vsebniki so bili napovedani v Windows Server 2016. In čeprav v času TP4 razvoj še ni bil zaključen, je že povsem mogoče videti novo tehnologijo v akciji in narediti zaključke. Treba je opozoriti, da so razvijalci MS, ki so dohiteli in imeli na voljo že pripravljene tehnologije, pri nekaterih vprašanjih šli nekoliko dlje, tako da je uporaba vsebnikov postala lažja in bolj univerzalna. Glavna razlika je v tem, da sta na voljo dve vrsti vsebnikov: vsebniki Windows in vsebniki Hyper-V. V TP3 so bili na voljo le prvi.

Vsebniki Windows uporabljajo eno jedro z OS, ki se dinamično deli med seboj. Proces distribucije (CPU, RAM, omrežje) prevzame OS. Po potrebi lahko omejite največ razpoložljivih virov, dodeljenih vsebniku. Datoteke OS in delujoče storitve so preslikane v imenski prostor vsakega vsebnika. Ta vrsta vsebnika učinkovito uporablja vire, zmanjšuje režijske stroške in zato omogoča, da so aplikacije bolj gosto nameščene. Ta način nekoliko spominja na FreeBSD Jail ali Linux OpenVZ.

Vsebniki Hyper-V zagotavljajo dodatno raven izolacije z uporabo Hyper-V. Vsakemu vsebniku je dodeljeno lastno jedro in pomnilnik ne izvaja jedro OS, ampak hipervizor Hyper-V. Rezultat je enaka stopnja izolacije kot virtualni stroji, z manj obremenitve kot navidezni stroji, vendar več obremenitve kot vsebniki Windows. Če želite uporabljati to vrsto vsebnika, morate na gostitelja namestiti vlogo Hyper-V. Vsebniki Windows so primernejši za uporabo v zaupanja vrednem okolju, na primer pri izvajanju aplikacij iz iste organizacije na strežniku. Ko strežnik uporablja več podjetij in je potrebna večja stopnja izolacije, bodo vsebniki Hyper-V verjetno bolj smiselni.

Pomembna značilnost vsebnikov v Win 2016 je, da vrsta ni izbrana v času ustvarjanja, ampak v času uvajanja. To pomeni, da je vsak vsebnik mogoče zagnati kot Windows in kot Hyper-V.

V Win 2016 je za vsebnike odgovoren sloj abstrakcije sklada Container Management, ki izvaja vse potrebne funkcije. Format slike trdega diska VHDX se uporablja za shranjevanje. Vsebniki se, tako kot v primeru Dockerja, shranijo v slike v repozitoriju. Poleg tega vsaka ne shrani celotnega nabora podatkov, temveč le razlike med ustvarjeno sliko in osnovno, ob zagonu pa se vsi potrebni podatki projicirajo v pomnilnik. Navidezno stikalo se uporablja za upravljanje omrežnega prometa med vsebnikom in fizičnim omrežjem.

Server Core ali Nano Server se lahko uporablja kot OS v vsebniku. Prvi na splošno že dolgo ni nov in zagotavlja visoko stopnjo združljivosti z obstoječimi aplikacijami. Druga je še bolj okrnjena različica za delo brez monitorja, ki vam omogoča zagon strežnika v minimalni možni konfiguraciji za uporabo s Hyper-V, datotečnim strežnikom (SOFS) in storitvami v oblaku. Grafičnega vmesnika seveda ni. Vsebuje samo najbolj potrebne komponente (.NET s CoreCLR, Hyper-V, Clustering itd.). Toda na koncu zavzame 93 % manj prostora in zahteva manj kritičnih popravkov.

Še ena zanimiva točka. Za upravljanje vsebnikov lahko poleg tradicionalnega PowerShell uporabite tudi Docker. In da bi zagotovil možnost izvajanja tujerodnih pripomočkov v Win, je MS sodeloval pri razširitvi Docker API in kompleta orodij. Ves razvoj je odprt in na voljo na uradnem GitHubu projekta Docker. Ukazi za upravljanje Dockerja veljajo za vse vsebnike, tako Win kot Linux. Čeprav je seveda nemogoče zagnati vsebnik, ustvarjen v Linuxu, v sistemu Windows (kot tudi obratno). Trenutno je PowerShell omejen v funkcionalnosti in vam omogoča samo delo z lokalnim repozitorijem.

Namestitveni kontejnerji

Azure ima zahtevano sliko Windows Server 2016 Core with Containers Tech Preview 4, ki jo lahko uvedete in uporabite za raziskovanje vsebnikov. V nasprotnem primeru morate vse konfigurirati sami. Za lokalno namestitev potrebujete Win 2016 in ker Hyper-V v Win 2016 podpira ugnezdeno virtualizacijo, je lahko fizični ali virtualni strežnik. Sam postopek namestitve komponent je standarden. Izberite ustrezen element v čarovniku za dodajanje vlog in funkcij ali pa z lupino PowerShell izdajte ukaz

PS> Install-WindowsFeature Containers

Med postopkom bo nameščen tudi omrežni krmilnik Virtual Switch, ki ga je treba konfigurirati takoj, sicer bodo nadaljnja dejanja povzročila napako. Poglejmo imena omrežnih adapterjev:

PS>Get-NetAdapter

Za delovanje potrebujemo krmilnik tipa External. Cmdlet New-VMSwitch ima veliko parametrov, vendar se bomo zaradi tega primera zadovoljili z minimalnimi nastavitvami:

PS> New-VMSwitch -Name External -NetAdapterName Ethernet0

Preverjamo:

PS> Get-VMSwitch | kjer ($_.SwitchType –eq "Zunanji")

Požarni zid Windows bo blokiral povezave do vsebnika. Zato je potrebno ustvariti dovoljeno pravilo, vsaj da se lahko povežemo na daljavo z uporabo PowerShell na daljavo; za to bomo dovolili TCP/80 in ustvarili pravilo 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 -ExternalIPAddress 0.0.0.0 - InternalIPAddress 192.168.1.2 -InternalPort 80 -ExternalPort 80

Obstaja še ena možnost za preprosto uvajanje. Razvijalci so pripravili skript, ki vam omogoča samodejno namestitev vseh odvisnosti in konfiguracijo gostitelja. Lahko ga uporabite, če želite. Parametri v skriptu vam bodo pomagali razumeti vse mehanizme:

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

Obstaja še ena možnost - uvesti že pripravljen virtualni stroj s podporo za vsebnike. Za to obstaja skript na istem viru, ki samodejno izvaja vse potrebne operacije. Podrobna navodila so na voljo na MSDN. Prenesite in zaženite skript:

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

Ime nastavimo poljubno, -WindowsImage pa označuje tip slike, ki se zbira. Možnosti so lahko NanoServer, ServerDatacenter. Docker se prav tako namesti takoj; za njegovo odsotnost ali prisotnost sta odgovorna parametra SkipDocker in IncludeDocker. Po zagonu se bosta začela prenos in pretvorba slike, med postopkom boste morali določiti geslo za prijavo v VM. Sama datoteka ISO je precej velika, skoraj 5 GB. Če je kanal počasen, lahko datoteko prenesete v drug računalnik, jo nato preimenujete v WindowsServerTP4 in kopirate v C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks. Lahko se prijavimo v nameščen virtualni stroj, določimo geslo, določeno med sestavljanjem, in delamo.

Zdaj lahko preidete neposredno na uporabo vsebnikov.

Uporaba vsebnikov s PowerShell

Modul Containers vsebuje 32 cmdletov PowerShell, od katerih so nekateri še nepopolni, čeprav na splošno zadostujejo, da vse deluje. Enostavno je našteti:

PS> Get-Command - vsebniki modulov

Seznam razpoložljivih slik lahko dobite s cmdletom Get-ContainerImage, vsebniki - Get-Container. V primeru vsebnika bo v stolpcu Status prikazano njegovo trenutno stanje: ustavljeno ali delujoče. Medtem ko je tehnologija v razvoju, MS ni zagotovil repozitorija in, kot že omenjeno, PowerShell trenutno deluje z lokalnim repozitorijem, tako da ga boste morali za poskuse ustvariti sami.

Torej, imamo strežnik s podporo, zdaj potrebujemo same kontejnerje. Če želite to narediti, namestite ponudnika paketov ContainerProvider.

Nadaljevanje je na voljo samo članom

Možnost 1. Pridružite se skupnosti »site«, da preberete vsa gradiva na spletnem mestu

Članstvo v skupnosti v določenem obdobju vam bo omogočilo dostop do VSEH hekerskih gradiv, povečalo vaš osebni kumulativni popust in vam omogočilo, da si naberete profesionalno oceno Xakep Score!

Marca 2013 je Soloman Hikes napovedal začetek odprtokodnega projekta, ki je kasneje postal znan kot Docker. V naslednjih mesecih je prejel močno podporo skupnosti Linux in jeseni 2014 je Microsoft objavil načrte za implementacijo vsebnikov v Windows Server 2016. WinDocks, podjetje, ki sem ga soustanovil, je izdalo neodvisno različico odprtokodnega Dockerja za Windows v začetku leta 2016, s poudarkom na prvovrstni vsebniški podpori v SQL Serverju. Zabojniki hitro postajajo središče pozornosti v industriji. V tem članku si bomo ogledali vsebnike in njihovo uporabo s strani razvijalcev SQL Server in skrbnikov baze podatkov

Načela organizacije kontejnerjev

Vsebniki določajo novo metodo pakiranja aplikacij v kombinaciji z izolacijo uporabnikov in procesov za aplikacije z več najemniki. Različne izvedbe vsebnikov za Linux in Windows obstajajo že vrsto let, vendar z izdajo Windows Server 2016 imamo de facto standard Docker. Danes sta Docker API in oblika vsebnika podprta v javno dostopnih AWS, Azure, Google Cloud ter vseh distribucijah Linuxa in Windows. Dockerjeva elegantna struktura ima pomembne prednosti.

  • Prenosljivost. Vsebniki vsebujejo odvisnosti aplikacijske programske opreme in se nespremenjeno izvajajo na prenosnem računalniku razvijalca, skupnem testnem strežniku in kateri koli javni storitvi.
  • Kontejnerski ekosistem. Docker API je dom industrijskih inovacij z rešitvami za spremljanje, beleženje, shranjevanje podatkov, orkestracijo gruče in upravljanje.
  • Združljivo z javnimi storitvami. Vsebniki so zasnovani za arhitekture mikrostoritev, skaliranje in kratkotrajne delovne obremenitve. Zabojniki so zasnovani tako, da jih je mogoče po želji odstraniti in zamenjati, ne pa krpati ali nadgrajevati.
  • Hitrost in prihranek. Ustvarjanje vsebnikov traja nekaj sekund; zagotovljena je učinkovita podpora za več naročnin. Pri večini uporabnikov se število virtualnih strojev zmanjša za tri do petkrat (slika 1).

Vsebniki SQL Server

SQL Server že deset let podpira večnajemništvo imenovanih primerkov, kakšna je torej vrednost vsebnikov SQL Server?

Dejstvo je, da so kontejnerji SQL Server bolj praktični zaradi svoje hitrosti in avtomatizacije. Vsebniki SQL Server so poimenovani primerki s podatki in nastavitvami, ki so omogočeni v nekaj sekundah. Zmožnost ustvarjanja, brisanja in zamenjave vsebnikov SQL Server v nekaj sekundah jih naredi bolj praktične za razvoj, zagotavljanje kakovosti in druge primere uporabe, ki so obravnavani spodaj.

S hitrostjo in avtomatizacijo so vsebniki SQL Server idealni za razvoj proizvodnje in okolja za zagotavljanje kakovosti. Vsak član ekipe izvaja izolirane vsebnike v skupnem virtualnem stroju, kar zmanjša število virtualnih strojev za tri do petkrat. Posledično smo deležni znatnih prihrankov pri vzdrževanju virtualnih strojev in stroških Microsoftovih licenc. Vsebnike je mogoče enostavno integrirati v nize pomnilniškega omrežja (SAN) z uporabo replik shranjevanja in klonov baze podatkov (slika 2).

1TB povezana baza podatkov je ustvarjena na primerku vsebnika v manj kot eni minuti. To je pomembna izboljšava v primerjavi s strežniki z namenskimi poimenovanimi primerki ali zagotavljanjem virtualnih strojev za vsakega razvijalca. Eno podjetje uporablja osemjedrni strežnik za oskrbo do 20 vsebnikov SQL Server velikosti 400 GB. V preteklosti je vsak virtualni stroj potreboval več kot eno uro za zagotavljanje, primerki vsebnika pa so bili oskrbovani v dveh minutah. Tako je bilo mogoče zmanjšati število virtualnih strojev za 20-krat, zmanjšati število procesorskih jeder za 5-krat in močno zmanjšati stroške plačevanja Microsoftovih licenc. Poleg tega se je povečala fleksibilnost in odzivnost poslovanja.

Uporaba vsebnikov SQL Server

Vsebniki so definirani s skripti Dockerfile, ki zagotavljajo posebne korake za izdelavo vsebnika. Datoteka Dockerfile, prikazana na sliki 1, določa SQL Server 2012 z bazami podatkov, kopiranimi v vsebnik, in skriptom SQL Server za maskiranje izbranih tabel.

Vsak vsebnik lahko vsebuje na desetine baz podatkov s podporo in dnevniškimi datotekami. Baze podatkov je mogoče kopirati in izvajati v vsebniku ali namestiti z ukazom MOUNTDB.

Vsak vsebnik vsebuje zasebni datotečni sistem, izoliran od virov gostitelja. V primeru, prikazanem na sliki 2, je vsebnik zgrajen z uporabo MSSQL-2014 in venture.mdf. Ustvarjena sta edinstven ID vsebnika in vrata vsebnika.


Zaslon 2. Vsebnik, ki temelji na SQL Server 2014 in venture.mdf

Vsebniki SQL Server zagotavljajo novo raven zmogljivosti in avtomatizacije, vendar je njihovo vedenje popolnoma enako običajnim poimenovanim prostorom. Upravljanje virov je mogoče izvesti z uporabo orodij SQL Server ali prek omejitev virov vsebnika (slika 3).

Druge aplikacije

Vsebniki so najpogostejše sredstvo za organizacijo razvojnih in QA okolij, vendar se pojavljajo tudi druge uporabe. Testiranje obnovitve po katastrofi je preprost, a obetaven primer uporabe. Drugi vključujejo kontejnerizacijo notranjega okolja strežnika SQL Server za podedovane aplikacije, kot sta SAP ali Microsoft Dynamics. Kontejnersko zaledje se uporablja za zagotavljanje delovnega okolja za podporo in tekoče vzdrževanje. Ocenjevalni vsebniki se uporabljajo tudi za podporo proizvodnih okolij s trajnimi shrambami podatkov. V prihodnjem članku bom podrobno govoril o trajnih podatkih.

WinDocks želi še olajšati uporabo vsebnikov prek spletnega vmesnika. Drugi projekt je osredotočen na selitev vsebnikov SQL Server v procesu DevOps ali Continuous Integration s cevovodi CI/CD, ki temeljijo na Jenkinsu ali Team Cityju. Danes lahko izkusite uporabo vsebnikov v vseh izdajah Windows 8 in Windows 10, Windows Server 2012 ali Windows Server 2016 s podporo za vse izdaje, začenši s SQL Server 2008, z uporabo vaše kopije WinDocks Community Edition (https://www.windocks. com /skupnost-docker-windows).

Študij tehnologije kontejnerjev
Windows Server 2016

Ena od pomembnih novih funkcij, uvedenih v Windows Server 2016, je podpora za vsebnike. Spoznajmo jo bolje

Sodobni sistemi so se že dolgo oddaljili od načela en OS - en strežnik. Tehnologije virtualizacije omogočajo učinkovitejšo uporabo strežniških virov, kar vam omogoča, da poganjate več operacijskih sistemov, jih razdelite med seboj in poenostavite administracijo. Nato so se pojavile mikrostoritve, ki so omogočale uvajanje izoliranih aplikacij kot ločene, enostavno upravljane in razširljive komponente. Docker je spremenil vse. Proces dostave aplikacije skupaj z okoljem je postal tako preprost, da ni mogel kaj, da ne bi zanimal končnega uporabnika. Aplikacija znotraj vsebnika deluje, kot da bi uporabljala polnopravni OS. Toda za razliko od virtualnih strojev ne nalagajo lastnih kopij operacijskega sistema, knjižnic, sistemskih datotek itd. Vsebniki prejmejo izoliran imenski prostor, v katerem ima aplikacija dostop do vseh potrebnih virov, vendar jih ne more preseči. Če morate spremeniti nastavitve, se shranijo samo razlike z glavnim OS. Zato se vsebnik za razliko od virtualnih strojev zažene zelo hitro in manj obremenjuje sistem. Vsebniki učinkoviteje uporabljajo vire strežnika.

Vsebniki v sistemu Windows

V sistemu Windows Server 2016 je poleg obstoječih virtualizacijskih tehnologij – virtualnih aplikacij Hyper-V in Server App-V dodana podpora za vsebnike Windows Server Containers, implementirana prek abstraktne plasti sklada Container Management, ki izvaja vse potrebne funkcije. Tehnologija je bila napovedana že v Technical Preview 4, vendar se je od takrat marsikaj spremenilo v smeri poenostavitve in vam niti ni treba brati prej napisanih navodil. Hkrati sta bili predlagani dve vrsti "njihovih" vsebnikov - vsebniki Windows in vsebniki Hyper-V. Verjetno je še ena glavna priložnost uporaba orodij Docker poleg cmdletov PowerShell za upravljanje vsebnikov.

Windows kontejnerji so načeloma podobni FreeBSD Jail ali Linux OpenVZ; uporabljajo eno jedro z OS, ki si ga skupaj z drugimi viri (RAM, omrežje) delijo med seboj. OS in storitvene datoteke so projicirane v imenski prostor vsakega vsebnika. Ta vrsta vsebnika učinkovito uporablja vire, zmanjšuje režijske stroške in zato omogoča, da so aplikacije bolj gosto nameščene. Ker imajo slike osnovnega vsebnika »isto jedro kot vozlišče«, se morata njihovi različici ujemati, sicer delovanje ni zagotovljeno.

Vsebniki Hyper-V uporabljajo dodatno raven izolacije in vsakemu vsebniku je dodeljeno lastno jedro in pomnilnik. Izolacijo, za razliko od prejšnje vrste, ne izvaja jedro OS, temveč hipervizor Hyper-V (potrebna je vloga Hyper-V). Rezultat so nižji stroški kot pri virtualnih strojih, vendar večja izolacija kot vsebniki Windows. V tem primeru morate imeti za zagon vsebnika isto jedro OS. Te vsebnike je mogoče namestiti tudi v Windows 10 Pro/Enterprise. Posebej velja poudariti, da vrsta vsebnika ni izbrana med ustvarjanjem, temveč med uvajanjem. To pomeni, da je vsak vsebnik mogoče zagnati kot različico Windows in Hyper-V.

Vsebnik kot OS uporablja skrajšano Server Core ali Nano Server. Prvi se je pojavil v sistemu Windows Sever 2008 in zagotavlja večjo združljivost z obstoječimi aplikacijami. Drugi je še bolj okrnjen v primerjavi s Server Core in je zasnovan tako, da deluje brez monitorja, kar vam omogoča, da strežnik izvajate v najmanjši možni konfiguraciji za uporabo s Hyper-V, datotečnim strežnikom (SOFS) in storitvami v oblaku, kar zahteva 93 % manj prostora. Vsebuje samo najbolj potrebne komponente (.Net z CoreCLR, Hyper-V, Clustering itd.).

Format slike trdega diska VHDX se uporablja za shranjevanje. Vsebniki se, tako kot v primeru Dockerja, shranijo v slike v repozitoriju. Poleg tega vsaka ne shrani celotnega nabora podatkov, ampak le razlike med ustvarjeno sliko in osnovno. In v trenutku zagona se vsi potrebni podatki projicirajo v pomnilnik. Navidezno stikalo se uporablja za upravljanje omrežnega prometa med vsebnikom in fizičnim omrežjem.