În * nix-sisteme, multitasking este inițial implementat și sunt oferite instrumente care permit izolarea și controlul proceselor. Tehnologii precum chroot (), care asigură izolarea la nivel de sistem de fișiere, FreeBSD Jail, limitarea accesului la structurile de bază, LXC și OpenVZ, sunt bine cunoscute și utilizate pe scară largă. Dar impulsul în dezvoltarea tehnologiei a fost Docker, ceea ce a facilitat distribuirea aplicațiilor. Acum trebuie să Windows.
Containerele din Windows
Serverele moderne au performanțe redundante, iar aplicațiile uneori nu utilizează nici măcar o parte din acestea. Ca urmare, sistemul "inactiv" pentru un timp, incalzirea aerului. Rezultatul a fost virtualizarea, care vă permite să rulați mai multe sisteme de operare pe un singur server, garantându-vă că le împărțiți între ele și alocând fiecare cantitate necesară de resurse. Dar progresul nu se oprește. Următorul pas îl reprezintă microservicii, în care fiecare parte a aplicației este implementată separat, ca o componentă autonomă, care se adaptează cu ușurință la sarcina necesară și este actualizată. Izolarea previne interferențele în funcționarea microservicii din alte aplicații. Odată cu apariția proiectului Docker. a simplificat procesul de ambalare și livrare a aplicațiilor împreună cu mediul, sa dezvoltat în continuare arhitectura serviciilor micro.
Containerele sunt un alt tip de virtualizare care oferă un mediu separat pentru rularea aplicațiilor, denumit Virtualizare OS. Containerele puse în aplicare prin utilizarea de spațiu de nume stand-alone, inclusiv toate resursele necesare de lucru (nume virtualizate), cu care pot interacționa (fișiere, porturi de rețea, procese, etc.) și nu poate merge dincolo de asta. Asta este, sistemul de operare arată containerului numai ceea ce este alocat. Aplicarea în interiorul containerului consideră că este singurul lucru și să fie difuzate într-un sistem de operare completă fără restricții. Dacă doriți să modificați un fișier existent sau de a crea un nou container primește o copie a sistemului principal de operare gazdă, păstrând doar porțiunile modificate. Prin urmare, desfășurarea mai multor containere pe aceeași gazdă este foarte eficientă.
Diferența dintre containere și mașinile virtuale constă în faptul că containerele nu își încarcă propriile copii ale sistemului de operare, biblioteci, fișiere de sistem și așa mai departe. Sistemul de operare este împărțit într-un container. Singura cerință suplimentară este resursele necesare pentru a rula aplicația în container. Ca rezultat, containerul începe în câteva secunde și încarcă mai puțin din sistem decât în cazul mașinilor virtuale. Docker oferă în prezent 180.000 de aplicații în depozit, iar formatul este unificat în Open Container Initiative (OCI). Dar dependența de kernel implică faptul că într-un alt sistem de operare, containerele nu vor funcționa. Containerele Linux necesită un API Linux, astfel încât Windows în Linux nu va funcționa.
Containerele Windows utilizează un singur nucleu cu un sistem de operare, care este distribuit dinamic între ele. Procesul de alocare (CPU, RAM, rețea) este asumat de OS. Dacă este necesar, puteți limita resursele disponibile maxime alocate containerului. Fișierele OS și serviciile de rulare sunt proiectate în spațiul de nume al fiecărui container. Acest tip de container utilizează eficient resursele, reducând cheltuielile generale, ceea ce înseamnă că vă permite să plasați aplicațiile mai strâns. Acest mod în ceva seamănă cu FreeBSD Jail sau Linux OpenVZ.
Containerele Hyper-V asigură un nivel suplimentar de izolare utilizând Hyper-V. Fiecare recipient este alocat de bază și memoria, izolația nu trebuie nucleu OS și Hyper-V hypervisor. Rezultatul este același nivel de izolație precum și în mașinile virtuale cu mai puțin deasupra capului, comparativ cu VM, dar mai mare în comparație cu containere pentru Windows. Pentru a utiliza acest tip de container, trebuie să instalați rolul Hyper-V pe gazdă. Containerele Windows sunt mai potrivite pentru utilizarea într-un mediu de încredere, cum ar fi când aplicațiile de pe același server rulează pe server. Când serverul utilizat de multe companii și necesitatea de a asigura un nivel mai ridicat de izolare, containere Hyper-V, susceptibile de a fi mai rațional.
OS-ul din container poate fi Server Core sau Nano Server. Primul, în general, de mult timp nu este o noutate și oferă un nivel ridicat de compatibilitate cu aplicațiile existente. în al doilea rând - chiar și mai dezbracata versiune pentru a funcționa fără un monitor, vă permite să rulați serverul în cel mai scurt configurație posibilă pentru utilizarea cu Hyper-V, un server de fișiere (SOFS) și servicii cloud. Interfața grafică, desigur, lipsește. Conține numai componentele cele mai necesare (.NET cu CoreCLR, Hyper-V, Clustering și așa mai departe). Dar, în cele din urmă, ocupă 93% mai puțin spațiu, necesită reparații critice mai puțin.
Un alt punct interesant. Pentru a gestiona containerele, pe lângă PowerShell tradițional, puteți utiliza Docker-ul. Și pentru a oferi posibilitatea de a rula unelte non-native pe Win, MS a încheiat un acord de parteneriat pentru a extinde API-ul Docker și setul de instrumente. Toate dezvoltările sunt deschise și disponibile în proiectul oficial GitHub al proiectului Docker. Comenzile de control Docker sunt aplicabile tuturor containerelor, atât Win, cât și Linux. Deși, desigur, un container creat pe Linux nu poate fi pornit pe Windows (și invers). În acest moment, PowerShell este limitat în funcții și vă permite să lucrați numai cu un depozit local.
Instalarea containerelor
Instalarea componentei Containere în Managerul de ServerÎn acest proces, controlerul de rețea Virtual Switch este instalat, acesta trebuie configurat imediat, altfel acțiunile viitoare vor produce o eroare. Ne uităm la numele adaptoarelor de rețea:
Pentru lucru avem nevoie de un controler cu tipul External. Clicul New-VMSwitch are o mulțime de parametri, dar, pentru exemplu, vom gestiona setările minime:
Configurarea comutatorului virtualParavanul de protecție Windows va bloca conexiunile la container. Prin urmare, este necesar să creați o regulă de activare, cel puțin pentru abilitatea de a vă conecta de la distanță folosind remiterea PowerShell, pentru aceasta vom permite TCP / 80 și vom crea o regulă NAT:
Există o altă opțiune pentru o implementare simplă. Dezvoltatorii au pregătit un script care vă permite să setați automat toate dependențele și să configurați gazda. Dacă doriți, îl puteți folosi. Parametrii din interiorul scriptului vor ajuta la înțelegerea tuturor mecanismelor:
Există încă o opțiune - pentru a implementa o mașină virtuală deja pregătită cu suport pentru containere. Pentru a face acest lucru, pe aceeași resursă, există un script care efectuează automat toate operațiile necesare. Instrucțiuni detaliate sunt furnizate pe MSDN. Descărcați și executați scriptul:
Numele este arbitrar și -WindowsImage indică tipul de imagine care este compilată. Opțiunile pot fi NanoServer, ServerDatacenter. Pune imediat și Docker, pentru absența sau prezența sa este parametrul de răspuns SkipDocker și IncludeDocker. După ce a început pornește descărcarea și procesul de conversie a imaginii va trebui să furnizeze o parolă pentru a vă conecta la VM. Fișierul ISO în sine este destul de mare, aproape 5 GB. În cazul în care link-ul este lent, puteți descărca fișierul la un alt calculator, și apoi redenumiți WindowsServerTP4 și copiați în C: \ Users \ Public \ Documents \ Hyper-V \ Hard Discuri virtuale. Putem intra în mașina virtuală instalată, specificând parola specificată în timpul asamblării și lucrăm.
Acum puteți merge direct la utilizarea containerelor.
Utilizarea containerelor cu PowerShell
Modulele Containere conțin 32 cmdleturi PowerShell, documentația pentru unii este încă incompletă, deși, în general, pentru a face totul să funcționeze, este suficient. Lista este simplă:
Lista cmdlet-urilor modulului ContainereIa-o listă de imagini disponibile, puteți utiliza cmdlet-ul Get-ContainerImage, containere - Ia-container. În cazul unui container, coloana Stare va afișa starea curentă: oprită sau pornită. Dar, în timp ce tehnologia este încă în curs de dezvoltare, MS nu a furnizat un depozit, și, după cum sa menționat mai înainte PowerShell funcționează cu un depozit local, astfel încât experimentele sale trebuie să creeze singur.
Deci, avem un server cu suport, acum avem nevoie de containere. Pentru a face acest lucru, am pus furnizorul de pachete ContainerProvider.