Ne ocupăm de containere. „Ambalare Windows”: explorarea tehnologiei Microsoft a containerelor Alte aplicații

În martie 2013, Soloman Hikes a anunțat lansarea unui proiect open source care ulterior a devenit cunoscut sub numele de Docker. În lunile care au urmat, a fost susținut în mod activ de comunitatea Linux și, în toamna anului 2014, Microsoft a anunțat planurile de implementare a containerelor în Windows Server 2016. WinDocks, pe care l-am cofondat, a lansat un Docker open source independent pentru Windows la începutul anului 2016 cu accent pe suportul containerelor de top. În SQL Server. Containerele devin rapid centrul atenției industriei. În acest articol, vom analiza containerele și modul în care acestea sunt utilizate de dezvoltatorii SQL Server și DBA.

Principiile organizării containerelor

Containerele definesc o nouă metodă de aplicații de ambalare, combinată cu izolarea utilizatorului și a proceselor, pentru aplicațiile multi-chiriași. Diverse implementări de containere pentru Linux și Windows există de mulți ani, dar odată cu lansarea Windows Server 2016, am obținut standardul de facto Docker. Astăzi, API-ul și formatul containerului Docker sunt acceptate pentru serviciile publice AWS, Azure, Google Cloud, toate distribuțiile Linux și Windows. Cadrul elegant al lui Docker are avantaje importante.

  • Portabilitate. Containerele conțin dependențe de aplicații software și rulează neschimbate pe laptopul dezvoltatorului, serverul de test partajat și orice serviciu public.
  • Ecosistemul containerelor. API-ul Docker este punctul central al inovațiilor din industrie, cu soluții pentru monitorizare, înregistrare, stocare date, orchestrare cluster și gestionare.
  • Compatibil cu serviciile disponibile publicului. Containerele sunt proiectate pentru arhitectura microserviciului, extinderea și sarcinile de lucru temporare. Containerele sunt proiectate astfel încât să poată fi îndepărtate și înlocuite, dacă se dorește, mai degrabă decât reparate sau actualizate.
  • Viteză și economie. Este nevoie de câteva secunde pentru a crea containere; este oferit suport eficient pentru mai mulți abonați. Pentru majoritatea utilizatorilor, numărul de mașini virtuale este redus de trei până la cinci ori (Figura 1).

Containere SQL Server

SQL Server a acceptat instanța multi-chirie numită de zece ani, deci care este valoarea containerelor SQL Server?

Acest lucru se datorează faptului că containerele SQL Server sunt mai practice datorită vitezei și automatizării lor. Containerele SQL Server sunt instanțe denumite, cu date și setări furnizate în câteva secunde. Capacitatea de a crea, renunța și înlocui containere SQL Server în câteva secunde le face mai practice pentru dezvoltare, controlul calității și alte cazuri de utilizare discutate mai jos.

Viteza și automatizarea fac ca containerele SQL Server să fie ideale pentru organizarea unui mediu de dezvoltare a producției și de asigurare a calității. Fiecare membru al echipei lucrează cu containere izolate într-o mașină virtuală partajată, cu o reducere de trei până la cinci ori a numărului de mașini virtuale. Drept urmare, obținem economii semnificative în întreținerea mașinilor virtuale și în costurile de licențiere Microsoft. Containerele pot fi integrate cu ușurință în matrice de rețea de stocare (SAN) folosind replici de stocare și clone de baze de date (Figura 2).

O bază de date atașată de 1 TB este construită într-o instanță de container în mai puțin de un minut. Aceasta este o îmbunătățire semnificativă față de serverele de instanță numite dedicate sau furnizarea de mașini virtuale pentru fiecare dezvoltator. O companie folosește un server cu opt nuclee pentru a servi până la 20 de containere SQL Server de 400 GB. În trecut, a fost nevoie de mai mult de o oră pentru fiecare mașină virtuală pentru aprovizionare, iar instanțele de container sunt aprovizionate în două minute. Astfel, am reușit să reducem numărul de mașini virtuale de 20 de ori, să reducem numărul de nuclee de procesor de 5 ori și să reducem dramatic costul plății licențelor Microsoft. În plus, flexibilitatea și capacitatea de reacție a companiei s-au îmbunătățit.

Utilizarea containerelor SQL Server

Containerele sunt definite folosind scripturi Dockerfile care iau pași specifici pentru a construi un container. Fișierul Docker din Figura 1 specifică SQL Server 2012 cu bazele de date copiate în container și scriptul SQL Server pentru a masca tabelele selectate.

Fiecare container poate conține zeci de baze de date cu fișiere auxiliare și jurnal. Bazele de date pot fi copiate și executate într-un container sau montate folosind comanda MOUNTDB.

Fiecare container conține un sistem de fișiere privat care este izolat de resursele gazdă. În exemplul prezentat în Figura 2, containerul este construit folosind MSSQL-2014 și venture.mdf. Se formează un ContainerID unic și un port container.


Figura 2: Un container bazat pe SQL Server 2014 și venture.mdf

Containerele SQL Server oferă un nou nivel de performanță și automatizare, dar se comportă exact ca spațiile denumite în mod obișnuit. Gestionarea resurselor poate fi implementată folosind instrumentele SQL Server sau prin limitele resurselor containerelor (Figura 3).

Alte utilizări

Containerele sunt cele mai comune mijloace de organizare a unui mediu de dezvoltare și control al calității, dar apar alte utilizări. Testarea recuperării în caz de dezastru este un caz de utilizare simplu, dar promițător. Printre altele, containerizarea unui mediu SQL Server intern pentru aplicații vechi precum SAP sau Microsoft Dynamics. Backend-ul containerizat este utilizat pentru a oferi un mediu de lucru pentru asistență și întreținere continuă. Containerele de evaluare sunt, de asemenea, utilizate pentru a sprijini mediile de producție cu stocări de date persistente. Într-unul din articolele următoare, voi intra în detalii despre datele persistente.

WinDocks se angajează să facă și mai ușor utilizarea containerelor printr-o interfață web. Un alt proiect se concentrează pe migrarea containerelor SQL Server într-un proces DevOps sau integrare continuă cu conducte CI / CD bazate pe Jenkins sau Team City. Astăzi puteți experimenta utilizarea containerelor pe toate edițiile de Windows 8 și Windows 10, Windows Server 2012 sau Windows Server 2016 cu suport pentru toate edițiile începând cu SQL Server 2008 folosind copia dvs. a ediției comunitare WinDocks (https: //www.windocks. Com / community-docker-windows).

S-a terminat! Fie rugăciunile au ajutat, fie sacrificii, dar acum puteți rula containere Docker cu Windows în interior. Veștile minunate au apărut odată cu lansarea Windows Server 2016. Și nu vorbim despre o mașină virtuală inteligent ascunsă sau despre emularea Windows pe un kernel Linux - Windows-ul real începe în Docker real, cu Dockerfile, docker-compose și alt docker- curele care rulează ...

Limitări

Dar asta nu înseamnă că acum puteți rula orice container oriunde. Datorită faptului că containerele Docker „îndepărtează” nucleul sistemului de operare de gazda lor (altfel ar trebui să aibă propriul sistem de operare și să se transforme într-o mașină virtuală), containerele Windows pot fi rulate numai pe cea mai recentă actualizare Windows 10 Pro Anniversary și Windows Server 2016.

Al doilea punct este încă imposibil să rulați un container Linux nativ pe Windows. Actualizarea aniversară are propriul său subsistem Linux (cu care puteți rula Bash real, de exemplu), dar nu suportă un kernel Linux complet, așa că este necesară o mașină virtuală ascunsă pentru același container Ubuntu pe Windows .

În cele din urmă, este posibil să rulați simultan ambele containere pe o mașină Windows, dar cu un dans. Dacă executați o comandă de acest fel pe Windows Server 2016 cu Docker instalat (acum un an aș fi numit astfel de vrăjitorie), funcționează:

Dar dacă încercați să porniți containerul Ubuntu după această comandă, Docker se va simți trist:

Problema este că containerele Windows și Linux sunt deservite de diferiți demoni Docker, care utilizează totuși același canal pentru a comunica cu linia de comandă. Adică, un singur demon poate fi activ la un moment dat. Site-ul oficial Docker are o versiune beta „Docker pentru Windows” care încearcă să rezolve problema (până acum doar pe Windows 10 Pro și Enterprise). Dar chiar și cu acesta, pentru a trece de la containerele Windows la Linux, trebuie fie să accesați meniul de setări, fie să vorbiți cu linia de comandă:

PowerShell

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

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

Imagini Windows

Până în prezent, există doar două imagini Windows containerizate de bază:

Nu vă puteți crea propria imagine de zero.

Imaginea Windows Server Core cântărește până la 10 concerte și, în general, se comportă ca un Windows Server 2016 complet. De exemplu, MS SQL și un .NET Framework complet sunt instalate acolo fără probleme. Dacă aplicația dvs. nu depinde în mare măsură de UI, atunci se va instala și ea.

Nano Server este puțin mai interesant. Este un Windows Server extrem de optimizat și dezbrăcat, care cântărește mai puțin de un concert. Dar există și suficiente limitări: nu există aplicații pe 32 de biți, UI, RDP, PowerShell etc. Dar acest lucru nu vă împiedică să instalați același IIS, .NET Core și chiar un fel de MySQL pe Nano Server.

Și cineva și-ar fi putut imagina acum câțiva ani că fișierul Docker ar conține „Microsoft”, „Windows” și „PowerShell”?

DIN microsoft / windowsservercore RUN powershell -Comand ....

DIN microsoft / windowsservercore

RUN powershell - Comandă. ... ... ...

Este Windows în Docker! Sună încă absurd.

Gradele de izolare

Containerele Windows pot fi rulate în două moduri de izolare:

  • Containere Windows Server
  • Containere Hyper-V

În primul mod, containerele Windows se comportă la fel ca toate celelalte containere din Docker: partajează un nucleu comun cu sistemul de operare, procesele containerelor sunt izolate, dar încă vizibile în arborele procesului gazdă, etc. Acesta este modul implicit și cel mai rapid pentru a porni containerul în Windows.

În al doilea caz, containerul primește o mașină virtuală specială Hyper-V. Acest lucru are, desigur, un efect negativ asupra vitezei de pornire, dar, pe de altă parte, izolarea este completă.

Concluzie

Windows în Docker este doar o veste minunată. Chiar și fără să vă grăbiți să vă împachetați produsele în containere, acesta este un instrument excelent pentru izolarea testelor unitare, a mașinilor de producție, a serverelor demo, a sandbox-urilor - tot pentru care trebuia să creați o mașină virtuală înainte. Dacă Microsoft reușește în continuare să ruleze nanoserver pe Linux, atunci îi voi ierta pentru întreruperea recentă a Microsoft Band 2, care a fost achiziționată din greșeală cu două luni mai devreme.

Containerele din Microsoft Windows Server 2016 sunt o extensie a tehnologiei pentru clienți. Microsoft intenționează să dezvolte clienți, să implementeze și să găzduiască acum aplicații în containere ca parte a proceselor lor de dezvoltare.

Deoarece ritmul implementării aplicației continuă să se accelereze și clienții folosesc implementările versiunilor aplicației zilnic sau chiar orar, capacitatea de a implementa rapid aplicații și validarea tastaturii dezvoltatorului pentru producție este esențială pentru succesul afacerii. Acest proces este accelerat de containere.

În timp ce mașinile virtuale au capacitatea de a migra aplicații către și de la centrul de date și spre cloud și nu numai, resursele de virtualizare sunt deblocate în continuare de containere utilizând virtualizarea sistemului de operare (software de sistem). Această soluție, datorită virtualizării, va permite livrarea rapidă a aplicațiilor.

Tehnologia Windows Container include două tipuri diferite de containere, Windows Server Container și Hyper-V Containers. Ambele tipuri de containere sunt create, gestionate și funcționează la fel. Ei produc și consumă aceeași imagine a containerului. Ele diferă între ele prin nivelul de izolare creat între container, sistemul de operare gazdă și toate celelalte containere care rulează pe gazdă.

Containere Windows Server: Mai multe instanțe de containere pot rula simultan pe o gazdă cu izolare oferită prin spații de nume, gestionarea resurselor și tehnologii de izolare a proceselor. Containerele Windows Server au același nucleu situat pe gazdă.

Containere Hyper-V: Mai multe instanțe de container pot rula simultan pe o gazdă. Cu toate acestea, fiecare container este implementat într-o mașină virtuală dedicată. Aceasta oferă izolarea la nivel de nucleu între fiecare container Hyper-V și containerul gazdă.

Microsoft a inclus în caracteristica containerului un set de instrumente Docker pentru gestionarea nu numai a containerelor Linux, ci și a containerelor Windows Server și Hyper-V. Ca parte a unei colaborări în comunitățile Linux și Windows, experiența Docker a fost extinsă prin crearea unui modul PowerShell pentru Docker, care este acum open source pentru. Modulul PowerShell poate gestiona containerele Linux și Windows Sever local sau de la distanță utilizând tehnologia Docker REST API. Dezvoltatorii sunt mulțumiți de inovația pentru clienții cu sursă deschisă pentru a ne dezvolta platforma. În viitor, este planificat să aducem tehnologie clienților noștri, împreună cu inovații precum Hyper-V.

Cumpărați Windows Server 2016

Vă sugerăm să cumpărați Windows Server 2016 la o reducere de la partenerul oficial Microsoft din Rusia - Compania DATASYSTEM. Veți avea ocazia să primiți sfaturi, precum și să descărcați gratuit Windows Server 2016 pentru testare, contactând specialiștii noștri de asistență tehnică. Prețul Windows Server 2016 la cerere. Puteți primi o ofertă comercială pentru participarea la achiziționarea Windows Server 2016 la cerere prin e-mail:

În ziua de azi Puneți o întrebare administratoruluiVă voi arăta cum să implementați o imagine într-un container pe Windows Server 2016, să creați o imagine nouă și să o încărcați în Docker.

Una dintre noile caracteristici majore din Windows Server 2016 este suportul pentru containere și Docker. Containerele oferă capabilități de virtualizare ușoare și flexibile pe care dezvoltatorii le pot utiliza pentru a implementa și actualiza rapid aplicații, fără costurile mașinilor virtuale. Și combinată cu Docker, o soluție de gestionare a containerelor, tehnologia containerelor a explodat în ultimii ani.

Acesta este un articol actualizat pentru informații care a fost inclus anterior în Implementarea și gestionarea containerelor Windows Server cu Docker și a fost relevant pentru Windows Server 2016 Preview tehnic 3. Pentru mai multe informații despre Docker, consultați Ce este Docker? și Sunt containerele Docker mai bune decât mașinile virtuale? pe Baza de cunoștințe tehnice Petri IT.

Pentru a urma instrucțiunile din acest articol, aveți nevoie de acces la un server fizic sau virtual care rulează Windows Server 2016. Puteți descărca o copie de evaluare de pe site-ul web Microsoft sau configura o mașină virtuală în Microsoft Azure. De asemenea, veți avea nevoie de un ID Docker gratuit, pe care îl puteți obține înregistrându-vă.

Instalați Docker Engine

Primul pas este instalarea suportului Docker pe Windows Server 2016.

  • Conectați-vă la Windows Server.
  • Clic Căutare pictograma și tipul barei de activități PowerShell în caseta de căutare.
  • Click dreapta Windows PowerShell în rezultatele căutării și selectați Rulat ca administrator din meniu.
  • Introduceți acreditările administratorului când vi se solicită.

Rulați următorul cmdlet PowerShell pentru a instala Docker pe Windows Server. Vi se va solicita să instalați NuGet, care descarcă modulul Docker PowerShell dintr-un depozit online de încredere.

Install-Module -Name DockerMsftProvider -Force

Acum folosește Instalare-pachet cmdlet pentru a instala motorul Docker pe Windows Server. Rețineți că este necesară o repornire la sfârșitul procesului.

Install-Package -Name docker -ProviderName DockerMsftProvider -Force Restart-Computer -Force

După repornirea serverului, rulați din nou promptul PowerShell și verificați dacă Docker este instalat executând următoarea comandă:

Versiunea Docker

Descărcați imaginea din Docker și începeți procesul de container

Acum că motorul Docker este instalat, să extragem imaginea implicită Windows Server Core din Docker:

Docker trage Microsoft / WindowsServerCore

Acum că imaginea este încărcată pe serverul dvs. local, porniți procesul de container folosind lansare docker:

Docker rulează Microsoft / windowsServerCore

Creați o imagine nouă

Acum putem crea o nouă imagine folosind imaginea Windows Server descărcată anterior ca punct de plecare. Veți avea nevoie de un ID Docker înainte de a rula. Dacă nu aveți deja unul, înscrieți-vă pentru un cont Docker.

Sponsorii

Imaginile Docker sunt de obicei generate din rețete pentru fișiere Docker, dar în scopuri demonstrative, executăm o comandă pe imaginea încărcată, creăm o imagine nouă pe baza modificării și apoi o încărcăm în Docker, astfel încât să fie accesibilă din cloud.

Vă rugăm să rețineți că în linia de comandă de mai jos -t Parametrul oferă eticheta de imagine, permițându-vă să identificați cu ușurință imaginea. De asemenea, acordați o atenție specială cratimei care apare după numele etichetei.

„FROM Microsoft / windowsservercore` n CMD echo Hello World!” | docker build -t mydockerid / windows-test-image -

După ce Docker finalizează crearea noii imagini, verificați lista imaginilor disponibile pe serverul dvs. local. Ar trebui să le vedeți pe amândouă Microsoft / windowsServerCore și mydockerid / windows-test-images pe listă.

Imagine Docker

Acum începeți o nouă imagine în container, amintindu-vă să o înlocuiți mydockerid cu numele Docker ID și ar trebui să vedeți Salut Lume! Apare la ieșire:

Docker rulează mydockerid / windows-test-images

Încărcați imaginea în Docker

Să încărcăm imaginea pe care tocmai am creat-o în Docker, astfel încât să poată fi accesată din cloud. Conectați-vă utilizând ID-ul și parola Docker:

Docker login -u mydockerid -p parola mea

folosind docker push pentru a încărca imaginea pe care am creat-o în pașii anteriori prin înlocuire mydockerid cu numele ID-ului Docker:

Docker push mydockerid / windows-test-images

În sistemele * nix, multitasking-ul este inițial implementat și sunt oferite instrumente pentru a izola și controla procesele. Tehnologii precum chroot (), care oferă izolare la nivel de sistem de fișiere, FreeBSD Jail, care restricționează accesul la structurile kernel, LXC și OpenVZ, sunt cunoscute și utilizate pe scară largă. Dar impulsul în dezvoltarea tehnologiei a fost Docker, care a făcut posibilă distribuirea convenabilă a aplicațiilor. Acum a ajuns la Windows.

Containere Windows

Serverele moderne sunt prea performante și, uneori, aplicațiile nici măcar nu folosesc părți din ele. Drept urmare, sistemele „stau în așteptare” de ceva timp, încălzind aerul. Soluția a fost virtualizarea, care vă permite să rulați mai multe sisteme de operare pe un singur server, garantat să le împărțiți între ele și să alocați cantitatea necesară de resurse fiecăruia. Dar progresul nu stă pe loc. Următoarea etapă este microserviciile, când fiecare parte a aplicației este implementată separat, ca o componentă autonomă care poate fi ușor scalată la încărcarea necesară și actualizată. Izolarea împiedică alte aplicații să interfereze cu microserviciul. Odată cu apariția proiectului Docker, care a simplificat procesul de ambalare și livrare a aplicațiilor împreună cu mediul, arhitectura microserviciilor a primit un impuls suplimentar.

Containerele sunt un alt tip de virtualizare care oferă un mediu autonom pentru rularea aplicațiilor numit OS Virtualization. Containerele sunt implementate utilizând un spațiu de nume izolat care include toate resursele necesare pentru lucru (nume virtualizate) cu care puteți interacționa (fișiere, porturi de rețea, procese etc.) și pe care nu le puteți părăsi. Adică, sistemul de operare arată containerul doar ceea ce este selectat. Aplicația din interiorul containerului crede că este singura și rulează într-un sistem de operare complet, fără restricții. Dacă un fișier existent trebuie modificat sau unul nou creat, containerul primește copii din sistemul de operare principal al gazdei, păstrând doar secțiunile modificate. Prin urmare, implementarea mai multor containere pe o singură gazdă este foarte eficientă.

Diferența dintre containere și mașini virtuale este că containerele nu își încarcă propriile copii ale sistemului de operare, bibliotecilor, fișierelor de sistem etc. Sistemul de operare este un fel de partajat cu containerul. Singurele cerințe suplimentare sunt resursele necesare pentru a rula aplicația într-un container. Ca urmare, containerul pornește în câteva secunde și încarcă sistemul mai puțin decât în \u200b\u200bcazul utilizării mașinilor virtuale. Docker oferă în prezent 180.000 de aplicații într-un depozit, iar formatul este unificat în Open Container Initiative (OCI). Dar dependența de nucleu implică faptul că containerele nu vor funcționa pe un alt sistem de operare. Containerele Linux necesită API-ul Linux, deci Windows nu va funcționa pe Linux.

Până de curând, dezvoltatorii Windows au oferit două tehnologii de virtualizare: mașini virtuale și aplicații virtuale Server App-V. Fiecare are propria sa nișă de aplicație, argumentele pro și contra. Acum sortimentul a devenit mai larg - în Windows Server 2016 s-au anunțat containere (Windows Server Containers). Și, deși la momentul TP4 dezvoltarea nu fusese încă finalizată, este deja destul de posibil să vedem noua tehnologie în acțiune și să tragem concluzii. Trebuie remarcat faptul că, recuperând ritmul și având la îndemână tehnologii gata făcute, dezvoltatorii MS au mers puțin mai departe în unele probleme, astfel încât utilizarea containerelor a devenit mai ușoară și mai universală. Principala diferență este că există două tipuri de containere oferite: containere Windows și containere Hyper-V. Numai primele erau disponibile în TP3.

Containerele Windows partajează un singur nucleu cu sistemul de operare, pe care îl împărtășesc dinamic între ele. Procesul de alocare (CPU, RAM, rețea) este preluat de sistemul de operare. Dacă este necesar, puteți limita resursele maxime disponibile alocate containerului. Fișierele OS și serviciile care rulează sunt proiectate în spațiul de nume al fiecărui container. Acest tip de container este eficient din punct de vedere al resurselor, reducând cheltuielile generale și, prin urmare, permite aplicațiilor să fie ambalate mai dens. Acest mod este oarecum similar cu FreeBSD Jail sau Linux OpenVZ.

Containerele Hyper-V oferă un strat suplimentar de izolare cu Hyper-V. Fiecărui container i se alocă propriul nucleu și memorie, izolarea nu este realizată de nucleul sistemului de operare, ci de hipervizorul Hyper-V. Rezultatul este același nivel de izolare ca și mașinile virtuale, cu mai puține cheltuieli generale în comparație cu VM-urile, dar mai mare în comparație cu containerele Windows. Pentru a utiliza acest tip de containere, trebuie să instalați rolul Hyper-V pe gazdă. Containerele Windows sunt mai potrivite pentru utilizare într-un mediu de încredere, cum ar fi atunci când rulați aplicații din aceeași organizație pe un server. Atunci când mai multe companii folosesc un server și trebuie să ofere un nivel mai mare de izolare, este probabil ca containerele Hyper-V să fie mai eficiente.

O caracteristică importantă a containerelor în Win 2016 este că tipul este selectat nu în momentul creării, ci în momentul implementării. Adică, orice container poate rula atât ca Windows, cât și Hyper-V.

În Win 2016, containerele sunt gestionate de stratul de abstractizare a stivei Container Management, care implementează toate funcțiile necesare. Folosește formatul de imagine VHDX pentru stocare. Containerele, ca în cazul Docker, sunt stocate în imagini în depozit. Mai mult, fiecare nu salvează un set complet de date, ci doar diferențele imaginii create de cea de bază, iar în momentul lansării, toate datele necesare sunt proiectate în memorie. Comutatorul virtual este utilizat pentru a controla traficul de rețea dintre container și rețeaua fizică.

Server Core sau Nano Server pot fi utilizate ca sistem de operare în container. Primul, în general, nu este nou de mult timp și oferă un nivel ridicat de compatibilitate cu aplicațiile existente. A doua este o versiune și mai redusă pentru a lucra fără monitor, permițându-vă să rulați serverul în cea mai mică configurație posibilă pentru a fi utilizat cu Hyper-V, server de fișiere (SOFS) și servicii cloud. Desigur, nu există o interfață grafică. Conține doar cele mai esențiale componente (.NET cu CoreCLR, Hyper-V, Clustering și așa mai departe). Dar, în cele din urmă, ocupă cu 93% mai puțin spațiu și necesită mai puține corecții critice.

Un alt punct interesant. În plus față de PowerShell tradițional, puteți utiliza și Docker pentru a gestiona containere. Și pentru a face posibilă rularea utilitarilor non-native pe Win, MS a colaborat pentru a extinde API-ul și cutia de instrumente Docker. Toate dezvoltările sunt open source și disponibile pe GitHub oficial al proiectului Docker. Comenzile de gestionare Docker se aplică tuturor containerelor, atât Win, cât și Linux. Deși, desigur, un container creat pe Linux nu poate fi rulat pe Windows (și invers). PowerShell este în prezent limitat în funcționalitate și funcționează numai cu un depozit local.

Instalarea containerelor

Azure are o imagine necesară Windows Server 2016 Core cu Containers Tech Preview 4 imagine pe care o puteți implementa și utiliza pentru a explora containere. În caz contrar, trebuie să configurați totul singur. Pentru instalarea locală, aveți nevoie de Win 2016 și, deoarece Hyper-V în Win 2016 acceptă virtualizarea imbricată, poate fi fie un server fizic, fie un server virtual. Procesul de instalare a componentelor în sine este standard. Selectăm elementul corespunzător din expert pentru adăugarea de roluri și caracteristici sau, folosind PowerShell, dăm comanda

PS\u003e Install-WindowsFeature Containers

În acest proces, va fi instalat și controlerul de rețea Virtual Switch, acesta trebuie să fie configurat imediat, în caz contrar, alte acțiuni vor da o eroare. Ne uităm la numele adaptoarelor de rețea:

PS\u003e Get-NetAdapter

Pentru a funcționa, avem nevoie de un controler cu tipul External. Cmdletul New-VMSwitch are o mulțime de parametri, dar, de exemplu, vom gestiona cu setări minime:

PS\u003e New-VMSwitch -Name External -NetAdapterName Ethernet0

Verificăm:

PS\u003e Get-VMSwitch | unde ($ _. SwitchType –eq "External")

Paravanul de protecție Windows va bloca conexiunile la container. Prin urmare, este necesar să creăm o regulă care să permită, cel puțin pentru a ne putea conecta de la distanță utilizând PowerShell la distanță, pentru aceasta vom permite TCP / 80 și vom crea o regulă NAT:

PS\u003e New-NetFirewallRule -Name "TCP80" -DisplayName "HTTP on TCP / 80" -Protocol tcp -LocalPort 80 -Action Allow -Enabled True PS\u003e Add-NetNatStaticMapping -NatName "ContainerNat" -Protocol TCP -ExternalIPAddress 0.0.0.0 - InternalIPAddress 192.168.1.2 -InternalPort 80 -ExternalPort 80

Există o altă opțiune pentru implementare simplă. Dezvoltatorii au pregătit un script care vă permite să instalați automat toate dependențele și să configurați gazda. O puteți folosi dacă doriți. Parametrii din script vă vor ajuta să înțelegeți toate mecanismele:

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

Există o altă opțiune - să implementați o mașină virtuală gata făcută cu suport pentru containere. Pentru a face acest lucru, pe aceeași resursă există un script care efectuează automat toate operațiunile necesare. Instrucțiuni detaliate sunt disponibile pe MSDN. Descărcați și rulați scriptul:

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

Am setat un nume arbitrar, iar -WindowsImage spune despre tipul imaginii colectate. Opțiunile pot fi NanoServer, ServerDatacenter. Docker este instalat imediat, parametrul SkipDocker și IncludeDocker este responsabil pentru absența sau prezența acestuia. După pornire, va începe descărcarea și conversia imaginii, în acest proces va trebui să specificați o parolă pentru a intra în VM. Fișierul ISO în sine este destul de mare, aproape 5 GB. Dacă canalul este lent, fișierul poate fi descărcat pe un alt computer, apoi redenumit în WindowsServerTP4 și copiat în C: \\ Users \\ Public \\ Documents \\ Hyper-V \\ Hard Hard Disks. Ne putem conecta la mașina virtuală instalată, specificând parola setată în timpul asamblării și să lucrăm.

Acum puteți merge direct la utilizarea containerelor.

Utilizarea containerelor cu PowerShell

Modulul Containere conține 32 cmdleturi PowerShell, dintre care unele sunt încă documentație incompletă, deși, în general, sunt suficiente pentru ca totul să funcționeze. Lista este ușor de afișat:

PS\u003e Containere Get-Command -module

Puteți obține o listă a imaginilor disponibile utilizând cmdletul Get-ContainerImage, containere - Get-Container. În cazul unui container, coloana Status va afișa starea sa curentă: oprit sau pornit. Dar, în timp ce tehnologia este în curs de dezvoltare, MS nu a furnizat un depozit și, după cum sa menționat, în timp ce PowerShell lucrează cu un depozit local, deci pentru experimente va trebui să o creați singur.

Deci, avem un server cu suport, acum avem nevoie de containere. Pentru a face acest lucru, am pus furnizorul de pachete ContainerProvider.

Continuarea este disponibilă numai membrilor

Opțiunea 1. Alăturați-vă comunității „site” pentru a citi toate materialele de pe site

Calitatea de membru în comunitate în perioada specificată vă va deschide accesul la TOATE materialele hackerului, vă va crește reducerea cumulativă personală și vă va permite să acumulați un scor Xakep profesional!



Drepturi de autor © 2021 Dacha World. Un site despre o fermă privată.