LFCA: Léiert d'Basiskonzepter fir Container ze benotzen - Deel 22


Mat der Zäit, wéi d'Nofro fir séier Testen an Deployment vun Uwendungen mat méi séiere Geschäftszyklen gewuess ass, goufen Organisatiounen gezwongen ze innovéieren fir mat dem schnelle Geschäftsëmfeld ze halen.

D'Sich no Uwendungen ze moderniséieren an nei ze bauen fir agile Workflows ze kreéieren huet zum Konzept gefouert Container ze benotzen. Containeriséierungstechnologie ass bal sou al wéi Virtualiséierung. Wéi och ëmmer, d'Container hunn net vill Opreegung gespuert bis Docker an d'Szen am Joer 2013 explodéiert ass an e frenziéierten Interessi ënner Entwéckler an aner IT Fachleit erwächt.

De Moment sinn all déi rieseg Tech Entitéite wéi Google, Amazon, Microsoft, a Red Hat fir e puer ze nennen op de Wagon gesprongen.

Firwat Container?

Ee vun den Erausfuerderungen, déi d'Entwéckler konfrontéiert hunn, ass den Ënnerscheed am Informatikëmfeld an all Etapp vun der Softwareentwécklung. Themen entstinn wann d'Softwareëmfeld vun enger Etapp op déi nächst anescht ass.

Zum Beispill kann eng Applikatioun nahtlos op engem Testëmfeld lafen mat Python 3.6. Wéi och ëmmer, d'Applikatioun behält sech komesch, bréngt e puer Feeler zréck oder krass ganz wann se an e Produktiounsëmfeld portéiert ginn mat Python 3.9.

Container koumen op d'Szene fir dës Erausfuerderung unzegoen an ze garantéieren datt Uwendungen zouverlässeg lafen wann se vun engem Computerëmfeld op déi nächst an all Etapp vun der Softwareentwécklung geplënnert sinn - vum PC vum Entwéckler bis zum Produktiounsëmfeld. An et ass net nëmmen d'Software-Ëmfeld, déi esou Inkonsistenz ka bréngen, awer och d'Ënnerscheeder an der Sécherheetspolitik.

Wat sinn Container?

E Container ass eng isoléiert Software Eenheet déi all binäre Code, Bibliothéiken, Ausféierbaren, Ofhängegkeeten a Konfiguratiounsdateien an engem eenzege Package packt sou datt d'Applikatioun glat leeft wann se vun engem Computerëmfeld an en anert portéiert ginn. Et kënnt net mat engem Betribssystembild wat et liicht a liicht portabel mécht.

E Containerbild ass e Standalone, liicht an ausführbare Package deen alles bündelt fir d'Applikatioun auszeféieren. Beim Runtime transforméiert e Containerbild an e Container. Am Fall vun Docker, zum Beispill, gëtt en Docker Bild en Docker Container wann se op Docker Engine ausgefouert ginn. Docker ass e Runtime Ëmfeld dat benotzt gëtt fir containeriséiert Uwendungen ze bauen.

Container lafen a komplett Isolatioun vum ënnerierdesche Betribssystem, a containeriséiert Uwendungen lafen ëmmer konsequent onofhängeg vun der Rechenëmfeld oder der Infrastruktur. Et ass aus dësem Grond datt en Entwéckler eng Applikatioun aus dem Komfort vun dësem Laptop kann entwéckelen a se einfach op engem Server ofsetzen.

D'Konsistenz an d'Zouverlässegkeet vu lafende Container ginn d'Entwéckler Fridden vum Geescht ze wëssen datt hir Uwendungen wéi erwaart lafen egal wou se ofgesat ginn.

Wéi ënnerscheede Container sech vu virtuelle Maschinnen?

Eng gemeinsam Saach déi Container a virtuelle Maschinnen deelen ass datt se an engem virtualiséierten Ëmfeld funktionnéieren. Containeriséierung, an engem Sënn, ass eng Form vu virtualiséierter Technologie. Wéi och ëmmer, Container ënnerscheede sech vu virtuelle Maschinnen op méi Manéier wéi ee.

Eng virtuell Maschinn och als virtuell Instanz oder VM kuerz bezeechent ass eng Emulatioun vun engem kierperleche Server oder PC. Virtualiséierung ass eng Technologie déi et méiglech mécht virtuell Maschinnen ze kreéieren. D'Konzept vun der Virtualiséierung staamt aus de fréien 1970er Joren an huet de Grondlag fir déi éischt Generatioun vu Cloud Technologie geluecht.

An der Virtualiséierung gëtt eng Abstraktiounsschicht uewen op engem Bare-Metal Server oder Computer Hardware erstallt. Dëst mécht et méiglech datt d'Hardwareressourcen vun engem eenzege Server iwwer verschidde virtuelle Maschinnen gedeelt ginn.

D'Software benotzt fir d'Abstraktiounsschicht ze maachen gëtt als Hypervisor bezeechent. Den Hypervisor abstrakt d'virtuell Maschinn an de Gaascht OS vun der aktueller Bare Metal oder Computer Hardware. Also sëtzt eng virtuell Maschinn uewen um Hypervisor deen d'Hardware Ressourcen verfügbar mécht dank der Abstraktiounsschicht.

Virtuell Maschinnen lafen e komplette Betribssystem (Gaascht OS) deen onofhängeg vum ënnerierdesche Betribssystem (Host OS) ass, op deem den Hypervisor installéiert ass. De Gaascht OS bitt dann eng Plattform fir Uwendungen niewent hire Bibliothéiken a Binären ze bauen, ze testen an z'installéieren.

[ Dir kënnt och gär hunn: Wéi installéiere ech KVM op CentOS/RHEL 8 ]

Et ginn zwou Zorte vun Hypervisoren:

Dësen Hypervisor gëtt direkt op engem kierperleche Server oder der Basisdaten Hardware installéiert. Et gëtt kee Betribssystem deen tëscht dem Hypervisor an der Computerhardware sëtzt, dofir den Tag Numm Bare-Metal Hypervisor. Et bitt exzellent Ënnerstëtzung well Ressourcen net mam Hostbetriebssystem gedeelt ginn.

Wéinst hirer Effizienz gi Typ 1 Hypervisoren meeschtens an Enterprise Ëmfeld benotzt. Typ 1 Hypervisor Ubidder enthalen VMware Esxi a KVM.

Dëst gëtt och als gehoste Hypervisor ugesinn. Et gëtt uewen um Hostbetriebssystem installéiert an deelt déi ënnerierdesch Hardwareressourcen mam Host OS.

Typ 2 Hypervisoren sinn ideal fir kleng Informatikëmfeld a gi meeschtens benotzt fir Betribssystemer a Fuerschung ze testen. Typ 2 Hypervisor Ubidder enthalen VMware Workstation Pro.

Virtuell Maschinnen tendéieren enorm an der Gréisst (Kënnen e puer GBs ophuelen), lues unzefänken an ze stoppen a vill Systemressourcen opzegoen, déi zu Hang-ups a lues Leeschtung wéinst limitéierter Ressourcen féieren. Als esou gëtt eng virtuell Maschinn als voluminös ugesinn an ass mat héije Overheadkäschten assoziéiert.

Container

Am Géigesaz zu enger virtueller Maschinn erfuerdert e Container keen Hypervisor. E Container sëtzt op engem physesche Server a säi Betribssystem an deelt dee selwechte Kernel wéi den OS ënner anerem wéi Bibliothéiken a Binären. Multiple Container kënnen um selwechte System lafen, jidderee leeft säin eegene Set vun Uwendungen a Prozesser aus dem Rescht. Populär Containerplattformen enthalen Docker a Podman.

Am Géigesaz zu virtuelle Maschinnen lafen Container komplett isoléiert vum ënnerierdesche Betribssystem. Container sinn aussergewéinlech liicht - just e puer Megabytes - huelen manner Plaz op a si ressourcefrëndlech. Si sinn einfach ze starten an ze stoppen a kënne méi Uwendungen handhaben wéi eng virtuell Maschinn.

Container bidden e praktesche Wee fir Uwendungen vun Ärem PC direkt an e Produktiounsëmfeld ze designen, testen an z'installéieren, sief et op der Viraussetzung oder Cloud. Hei sinn e puer vun de Virdeeler fir containeriséiert Uwendungen ze benotzen.

Virun Container hu mir den almoudeschen monolithesche Modell, wou eng ganz Applikatioun aus béide Frontend- a Backend Komponenten an engem eenzege Package gebündelt gëtt. Container maachen et méiglech eng Applikatioun a verschidde eenzel Komponenten opzedeelen déi matenee kënne kommunizéieren.

Op dës Manéier kënnen d'Entwécklungséquipen op verschiddenen Deeler vun enger Applikatioun kollaboréieren, soulaang keng gréisser Ännerunge gemaach gi fir wéi d'Applikatioune matenee interagéieren.

Dëst ass wat d'Konzept vu Mikroservicer baséiert op.

Méi Modularitéit bedeit méi Produktivitéit well d'Entwéckler fäeg sinn op eenzel Komponente vun der Applikatioun ze schaffen a Feeler vill méi séier ze debuggen wéi virdrun.

Am Verglach mat virtuelle Maschinnen an aner konventionell Informatikëmfeld benotze Container manner Systemressourcen well se keen Betribssystem enthalen. Dëst vermeit onnéideg Ausgaben fir deier Serveren ze kafen fir Uwendungen ze bauen an ze testen.

Wéinst hirem klenge Foussofdrock sinn containeriséiert Uwendungen einfach a verschidde Rechenëmfeld/Betribssystemer ofgesat ginn.

Container erlaaben e séieren Détachement an d'Skaléierung vun Uwendungen. Si bidden och déi néideg Flexibilitéit fir Uwendungen a verschidde Software-Ëmfeld z'installéieren.

Wéi profitéiere Container DevOps Teams?

Container spillen eng Schlësselroll an DevOps an et wier onméiglech virzestellen wéi d'Situatioun ouni containeriséierte Applikatiounen wier. Also, wat bréngen d'Container op den Dësch?

Als éischt ënnersträichen d'Container d'Mikroservicearchitektur, wat et erlaabt datt d'Bausteng vun enger ganzer Applikatioun onofhängeg entwéckelt, ofgebaut a skaléiert ginn. Wéi erwähnt, mécht dëst eng méi grouss Zesummenaarbecht a séier Uwendung vun Uwendungen.

Containeriséierung spillt och eng grouss Roll fir d'CI/CD Pipelines z'erliichteren andeems se e kontrolléiert a konsequent Ëmfeld fir Gebaierapplikatiounen ubidden. All d'Bibliothéiken an d'Ofhängegkeete ginn zesumme mam Code an eng eenzeg Eenheet verpackt fir méi séier a méi einfach Deployment. Déi getest Applikatioun wäert déi exakt Software sinn déi an der Produktioun ofgesat gëtt.

Zousätzlech verbesseren d'Container d'Rollout vu Patches an Updates wann eng Applikatioun a verschidde Mikroservicer opgedeelt ass, jidderee an engem getrennten Container. Eenzel Container kënnen iwwerpréift, gefléckt an nei gestart ginn ouni de Rescht vun der Applikatioun z'ënnerbriechen.

All Organisatioun, déi Reife sicht an DevOps z'erreechen, sollt berécksiichtegt d'Kraaft vu Container fir agile an nahtlos Deployementer ze profitéieren. D'Erausfuerderung läit an der Wësse wéi se konfiguréieren, sécheren an nahtlos a verschidde Ëmfeld ofsetzen.