Definire containere
Pe măsură ce Contoso migrează și virtualizează diverse sarcini de lucru, poate apărea o opțiune de a containeriza unele dintre sarcinile de lucru. Administratorul Windows Server va evalua containerele, va înțelege cum funcționează și care sunt avantajele utilizării lor. Printre beneficii se numără mobilitatea, agilitatea, eficiența sporită și densitățile serverului. Toate aceste beneficii contribuie la sarcinile de lucru de server mai optimizate și consistența mediilor de dezvoltare.
Ce sunt containerele?
Un container este utilizat pentru a împacheta o aplicație împreună cu toate dependențele sale și a-l abstract din sistemul de operare gazdă în care va rula. Containerele oferă un mediu ușor de dezvoltare și rulare în care aplicațiile pot fi rulate și partajate cu ușurință în timpul dezvoltării. Nu numai că este un container izolat de sistemul de operare gazdă, ci și este izolat de alte containere. Containerele izolate oferă un timp de rulare virtual, care poate îmbunătăți, de asemenea, securitatea și fiabilitatea aplicațiilor care rulează în cadrul lor.
În mod tradițional, o aplicație software este dezvoltată pentru a rula pe o platformă acceptată de procesor, hardware și sistem de operare. Aplicațiile software necesită de obicei codare suplimentară pentru a oferi asistență pentru diferite platforme runtime. Cu atât de multe sisteme informatice diverse, este necesară o platformă de dezvoltare și gestionare a software-ului mai eficientă pentru a sprijini portabilitatea între mai multe medii informatice. Containerele vă ajută să furnizați o astfel de portabilitate.
Avantajele utilizării containerelor
Printre avantajele utilizării containerelor se numără următoarele:
Capacitatea de a rula oriunde. Containerele pot rula pe diferite platforme, cum ar fi Linux, Windows și sisteme de operare Mac. Acestea pot fi găzduite pe o stație de lucru locală, pe servere din centre de date locale sau pot fi asigurate în cloud.
Izolare. Într-o aplicație, un container pare să fie un sistem de operare complet. Resursele CPU, memorie, stocare și rețea sunt virtualizate în interiorul containerului și sunt izolate de platforma gazdă și alte aplicații.
Eficiență sporită. Containerele pot fi implementate, actualizate și scalate rapid pentru a accepta o dezvoltare, un test și un ciclu de viață al producției mai agile. Deoarece acestea sunt mai eficiente în ceea ce privește resursele pe care le consumă, amprenta lor este mai mică, ceea ce permite o densitate mai mare pe servere.
Un mediu de dezvoltare unitar. Dezvoltatorii utilizează containere ca un mediu de dezvoltare consistent și previzibil care acceptă diverse limbi de dezvoltare, cum ar fi Java, .NET, Python și Node.js. Dezvoltatorii știu că, indiferent unde este implementată aplicația, containerul va asigura că aplicația rulează așa cum intenționați.
Cum funcționează containerele
Procesorul dintr-un computer Windows standard are două moduri diferite: un mod kernel și un mod utilizator. Componentele sistemului de operare de bază și majoritatea driverelor de dispozitiv rulează în modul kernel, în timp ce aplicațiile rulează în modul utilizator.
Atunci când instalați tehnologia containerului pe un computer, fiecare container creează un siloz izolat și ușor utilizat pentru rularea unei aplicații pe sistemul de operare gazdă. Un container se bazează pe și partajează majoritatea kernelului sistemului de operare gazdă pentru a obține acces la sistemul de fișiere și la registry.
Fiecare container are propria copie a fișierelor de sistem ale modului utilizator, care sunt izolate de alte containere și de mediul propriu al modului de utilizator al gazdei. Capacitatea de a izola modul de utilizator este furnizată de o imagine de bază container, care constă în fișierele de sistem ale modului de utilizator care sunt necesare pentru a accepta o aplicație împachetată. Șabloanele imagine de bază container oferă un strat fundamental de servicii de sistem de operare utilizate de aplicația containerizată care nu sunt furnizate (sau restricționate) din stratul de mod kernel al gazdei.
Stratul în care se efectuează modificări de aplicație și cod se află deasupra acestor straturi imagine de bază ale sistemului de operare de bază al containerului. Aceste straturi de sistem de operare de bază sunt dezvoltate și actualizate separat de straturile container care sunt utilizate activ pentru modificări de aplicații sau de cod. Straturile de bază sunt trase în jos la mediul de lucru local fără a fi actualizate, apoi lucrul este pornit în straturi container care rulează pe straturile de bază. Acest lucru permite medii de dezvoltare mai mici, mai ușoare și mai portabile.
Atunci când construiți propria imagine container pentru a găzdui aplicația, începeți prin a valorifica o imagine de sistem de operare de bază a containerului sau o imagine container predefinită care are dependențele de care aveți nevoie. În partea de sus a acestor straturi, vă construi propriile straturi cu aplicația pe care doriți să o rulați într-un container. Fiecare operațiune pentru a crea o versiune a imaginii containerului se bazează pe ultima. Acest lucru adaugă la dimensiunea imaginii, dar vă permite să segregați în mod convenabil sistemul de operare, cadrul, dependențele și straturile aplicației.
Containere și micro-servicii
Aplicațiile de micro-servicii sunt definite ca o abordare arhitecturală nativă în cloud, în care o singură aplicație este compusă din multe componente mai mici și implementabile independent, mai mici sau servicii. Fiecare dintre aceste componente sau servicii mai mici poate fi reprezentat printr-un container. Cu toate acestea, containerele nu implementează neapărat o arhitectură de micro-servicii.
Un container poate găzdui o aplicație monolitică, dar acestea nu au fost proiectate pentru această intenție. În mod implicit, Docker (sau un alt container runtime), precum și orchestratorul de containere va presupune că un container poate fi întotdeauna șters/eliminat în siguranță și un alt container poate pur și simplu să aibă loc, dacă este necesar. Pe un VM, dacă configurați o aplicație pentru a scrie pe discul VM, puteți opri și porni în siguranță VM, iar datele vor persista pe disc, la fel ca în cazul în care VM va boota în siguranță și continua funcționarea acestuia. Cu containere, dacă eliminați un container și aduceți altul în locul său, numai straturile existente ale acelei imagini container vor fi acolo. Într-un mediu de micro-servicii, aceasta nu ar trebui să fie o problemă dacă aveți persistența stării și datelor.
Deși puteți să rulați un container și să îl gestionați foarte asemănător unui sistem virtual, se recomandă să adoptați practicile de separare a stării și datelor și să vă asigurați că containerul poate susține ștergerea. Acest lucru vă va permite să beneficiați de alte practici, cum ar fi DevOps.
În practică, nu ar trebui să stocați date sau stări în interiorul imaginii containerului și în straturile sale. În schimb, ar trebui să utilizați spațiu de stocare persistent extern care permite oricărei instanțe container să o acceseze.