Programavimas

Kodėl turėtumėte naudoti „Docker“ ir konteinerius

Knyga, išleista 1981 m., PavadintaPrikalti želę medžiui, programinę įrangą apibūdina kaip „miglotą ir sunkiai pasiekiamą“. Tai buvo tiesa 1981 m., Ir tai ne mažiau tiesa beveik keturis dešimtmečius nuo to laiko. Programinę įrangą, nesvarbu, ar tai programa, kurią įsigijote, ar tokią, kurią pats sukūrėte, išlieka sunku įdiegti, sunku valdyti ir paleisti.

„Docker“ konteineriai suteikia galimybę pasinaudoti programine įranga. Galite naudoti „Docker“, kad apgaubtumėte programą taip, kad būtų sprendžiamos jos diegimo ir vykdymo trukmės problemos - kaip atskleisti ją tinkle, kaip valdyti saugyklos ir atminties bei įvesties / išvesties naudojimą, kaip valdyti prieigos teises. už pačios programos ribų ir nuosekliai visose „sudėtinėse“ programose. „Docker“ talpyklą galite paleisti bet kuriame su OS suderinamame pagrindiniame kompiuteryje („Linux“ arba „Windows“), kuriame įdiegtas „Docker“ vykdymo laikas.

„Docker“ siūlo daugybę kitų privalumų, be šio patogaus sujungimo, izoliavimo, perkeliamumo ir valdymo. „Docker“ talpyklos yra mažos (megabaitų). Jie prasideda akimirksniu. Jie turi savo įmontuotus versijų ir komponentų pakartotinio naudojimo mechanizmus. Juos galima lengvai bendrinti per viešąjį „Docker Hub“ arba privačią saugyklą.

Šiame straipsnyje aš išnagrinėsiu, kaip „Docker“ konteineriai palengvina programinės įrangos kūrimą ir diegimą - problemos konteineriai sprendžiami, kaip jie juos sprendžia, kada jie teisingai atsako į problemą ir kada ne.

Prieš „Docker“ konteinerius

Jau daugelį metų įmonės programinė įranga paprastai yra diegiama „ant pliko metalo“ (t. Y. Įdiegta operacinėje sistemoje, kuri visiškai kontroliuoja pagrindinę aparatinę įrangą) arba virtualioje mašinoje (ty įdiegta operacinėje sistemoje, kuri dalijasi pagrindine aparatine įranga). su kitomis „svečių“ operacinėmis sistemomis). Natūralu, kad įdiegus ant pliko metalo, programinę įrangą buvo sunku judėti ir ją buvo sunku atnaujinti - tai buvo du apribojimai, dėl kurių IT buvo sunku mikliai reaguoti į verslo poreikių pokyčius.

Tada atėjo virtualizacija. Virtualizacijos platformos (taip pat žinomos kaip „hipervizoriai“) leido kelioms virtualioms mašinoms dalytis viena fizine sistema, kiekviena virtuali mašina izoliuotai imituoja visos sistemos, kartu su savo operacine sistema, saugykla ir įvesties / išvesties, elgseną. . IT dabar galėtų efektyviau reaguoti į verslo reikalavimų pokyčius, nes VM galima klonuoti, kopijuoti, perkelti ir sukti aukštyn arba žemyn, kad būtų patenkinta paklausa arba tausojami ištekliai.

Virtualios mašinos taip pat padėjo sumažinti išlaidas, nes daugiau VM būtų galima sutelkti į mažiau fizinių mašinų. Senesnės sistemos, naudojančios senesnes programas, galėtų būti paverstos VM ir fiziškai nutraukiamos, kad būtų galima sutaupyti dar daugiau pinigų.

Tačiau virtualios mašinos vis tiek turi savo problemų. Virtualiosios mašinos yra didelės (gigabaitais), kiekvienoje iš jų yra visa operacinė sistema. Tik tiek virtualių programų galima sujungti į vieną sistemą. VM teikimas vis tiek užima nemažai laiko. Galiausiai, VM perkeliamumas yra ribotas. Po tam tikro momento VM nesugeba pasiekti tokio greičio, judrumo ir taupymo, kokio reikalauja greitai besikeičiančios įmonės.

„Docker“ konteinerio privalumai

Konteineriai veikia šiek tiek panašiai kaip VM, tačiau kur kas specifiškesni ir smulkesni. Jie išskiria vieną programą ir jos priklausomybes - visas išorines programinės įrangos bibliotekas, kurias reikia paleisti programai - tiek iš pagrindinės operacinės sistemos, tiek iš kitų talpyklų. Visose talpyklose esančiose programose yra viena bendra operacinė sistema („Linux“ arba „Windows“), tačiau jos yra suskirstytos viena nuo kitos ir iš visos sistemos.

„Docker“ konteinerių nauda pasireiškia daug kur. Štai keletas pagrindinių „Docker“ ir konteinerių privalumų:

„Docker“ leidžia efektyviau naudoti sistemos išteklius

Konteinerių programų egzemplioriai naudoja kur kas mažiau atminties nei virtualios mašinos, jos paleidžiamos ir sustoja greičiau, jas galima žymiai tankiau supakuoti į pagrindinio kompiuterio aparatinę įrangą. Visa tai reiškia mažesnes išlaidas IT.

Sutaupytos sąnaudos skirsis priklausomai nuo to, kokios programos yra žaidžiamos ir kiek jos gali reikalauti daug išteklių, tačiau konteineriai visada efektyvesni nei VM. Taip pat galima sutaupyti programinės įrangos licencijų išlaidas, nes norint paleisti tuos pačius darbo krūvius, reikia daug mažiau operacinės sistemos egzempliorių.

„Docker“ leidžia greičiau atlikti programinės įrangos pristatymo ciklus

Įmonės programinė įranga turi greitai reaguoti į kintančias sąlygas. Tai reiškia ir lengvą mastelio keitimą, kad būtų patenkinta paklausa, ir lengvą atnaujinimą, kad pridėtumėte naujų funkcijų, kurių reikalauja verslas.

„Docker“ konteineriai leidžia lengvai greitai įdiegti naujas programinės įrangos versijas su naujomis verslo funkcijomis ir, jei reikia, greitai grįžti prie ankstesnės versijos. Jie taip pat palengvina tokių strategijų įgyvendinimą, kaip mėlynos / žalios spalvos diegimas.

„Docker“ leidžia perkelti programas

Svarbu, kur vykdote įmonės programą - už ugniasienės, kad daiktai būtų arti ir saugūs; arba viešajame debesyje, kad būtų lengva visuomenei pasiekti ir didelis išteklių elastingumas. Kadangi „Docker“ talpyklose kaupiama viskas, ko reikia paleisti programai (ir tik tiems dalykams), jie leidžia lengvai perjungti programas tarp skirtingų aplinkų. Bet kuris kompiuteris, kuriame įdiegtas „Docker“ vykdymo laikas - tiek kūrėjo nešiojamas kompiuteris, tiek viešas debesies egzempliorius, gali paleisti „Docker“ sudėtinį rodinį.

„Docker“ spindi mikropaslaugų architektūra

Lengvi, nešiojamieji ir savarankiški „Docker“ konteineriai palengvina programinės įrangos kūrimą pagal ateities mąstymą, kad nebandytumėte išspręsti rytojaus problemų vakarykščiais kūrimo metodais.

Vienas iš programinės įrangos šablonų palengvina mikropaslaugas, kai programas sudaro daug laisvai sujungtų komponentų. Išskaidžius tradicines „monolitines“ programas į atskiras paslaugas, mikropaslaugos leidžia skirtingas verslo linijos programos dalis keisti, modifikuoti ir aptarnauti atskirai - atskiromis komandomis ir atskirais laiko planais, jei tai tinka įmonės poreikiams. verslo.

Konteineriai nėra būtini diegiant mikropaslaugas, tačiau jie puikiai tinka mikroservisų požiūriui ir judriems kūrimo procesams apskritai.

Problemos, kurių „Docker“ konteineriai neišsprendžia

Pirmas dalykas, kurį reikia atsiminti apie konteinerius, yra tas pats patarimas, kuris taikomas bet kuriai programinės įrangos technologijai: tai nėra sidabrinė kulka. Docker konteineriai patys negali išspręsti kiekvienos problemos. Visų pirma:

„Docker“ neišspręs jūsų saugos problemų

Programinė įranga, esanti talpykloje, pagal numatytuosius nustatymus gali būti saugesnė nei programinė įranga, veikianti ant pliko metalo, tačiau tai panašu, kad namas, kurio durys yra užrakintos, yra saugesnis nei namas, kurio durys neužrakintos. Nieko nepasako apie kaimynystės būklę, matomą vagį viliojančių vertingų daiktų buvimą, ten gyvenančių žmonių rutiną ir pan. Konteineriai gali pridėti prie programos saugumo sluoksnį, bet tik kaip bendros programos apsaugos kontekste dalį.

„Docker“ stebuklingai nepaverčia programų mikroservėmis

Jei konteineriuose kaupiate esamą programą, tai gali sumažinti jos išteklių sunaudojimą ir palengvinti diegimą. Bet tai automatiškai nekeičia dizainas arba kaip jis sąveikauja su kitomis programomis. Šios naudos suteikia tik kūrėjo laikas ir pastangos, o ne tik mandatas viską perkelti į konteinerius.

Į konteinerį įdėkite senosios mokyklos monolitinę ar SOA stiliaus programą ir galų gale seną programą į konteinerį. Tai nepadaro jūsų darbu naudingesnio; jei kas, tai gali padaryti tai mažiau naudinga.

„Docker“ nėra virtualių mašinų pakaitalas

Vienas iš atkaklių mitų apie konteinerius yra tas, kad dėl jų VM pasensta. Daugelis programų, kurios anksčiau veikė VM gali būti perkeltas į konteinerį, bet tai nereiškia visi iš jų gali arba turėtų. Pavyzdžiui, jei dirbate pramonėje, kurioje yra griežti reguliavimo reikalavimai, negalėsite pakeisti konteinerių į VM, nes VM suteikia daugiau izoliacijos nei talpyklos.

„Docker“ konteinerių dėklas

Įmonių plėtros darbai garsėja tuo, kad yra slepiami ir lėtai reaguoja į pokyčius. Įmonių kūrėjai visą laiką trinasi nuo tokių suvaržymų - IT jiems taikomų apribojimų, viso verslo keliamų reikalavimų. „Docker“ ir konteineriai suteikia kūrėjams daugiau laisvės, kurios jie trokšta, ir tuo pačiu suteikia būdų kurti verslo programas, kurios greitai reaguotų į besikeičiančias verslo sąlygas.