Programiranje

Kaj je Docker? Iskra za revolucijo posod

Docker je programska platforma za izdelavo aplikacij, ki temeljijo na posode - majhna in lahka izvedbena okolja, ki uporabljajo jedro operacijskega sistema v skupni rabi, sicer pa delujejo ločeno. Čeprav zabojniki kot koncept obstajajo že nekaj časa, je odprtokodni projekt Docker, ki se je začel leta 2013, pomagal popularizirati tehnologijo in prispeval k trendu kontejnerizacija in mikro storitve pri razvoju programske opreme, ki je postala znana kot razvoj v oblaku.

Kaj so posode?

Eden od ciljev sodobnega razvoja programske opreme je, da aplikacije na istem gostitelju ali gruči ostanejo med seboj izolirane, tako da ne bodo neupravičeno motile medsebojno delovanje ali vzdrževanje. To je lahko težko zaradi paketov, knjižnic in drugih komponent programske opreme, potrebnih za njihovo delovanje. Ena od rešitev tega problema je bila navidezni stroji, ki ohranjajo aplikacije na isti strojni opremi povsem ločene in konflikte med programskimi komponentami in konkurenco za strojne vire zmanjšujejo na minimum. Toda navidezni stroji so obsežni - vsak zahteva svoj operacijski sistem, tako da je običajno velikost gigabajtov - in jih je težko vzdrževati in nadgraditi.

Zabojnikinasprotno pa ločujejo izvedbena okolja aplikacij med seboj, vendar si delijo osnovno jedro OS. Običajno se merijo v megabajtih, porabijo veliko manj virov kot VM in zaženejo skoraj takoj. Na isti strojni opremi jih je mogoče veliko bolj pakirati in vrteti gor in dol množično z veliko manj truda in stroškov. Zabojniki zagotavljajo zelo učinkovit in zelo razdrobljen mehanizem za združevanje programskih komponent v vrste aplikacijskih in servisnih skladov, ki so potrebni v sodobnem podjetju, ter za posodabljanje in vzdrževanje teh programskih komponent.

Docker

Kaj je Docker?

Docker je odprtokodni projekt, ki olajša ustvarjanje vsebnikov in aplikacij na osnovi vsebnikov. Prvotno izdelan za Linux, Docker zdaj deluje tudi v sistemih Windows in MacOS. Da bi razumeli, kako deluje Docker, si oglejmo nekatere komponente, ki bi jih uporabili za ustvarjanje aplikacij v vsebniku Docker.

Dockerfile

Vsak Dockerjev vsebnik se začne z Dockerfile. Dockerfile je besedilna datoteka, napisana v razumljivi sintaksi, ki vključuje navodila za izdelavo Dockerja slike (več o tem v trenutku). Dockerfile določa operacijski sistem, ki bo temelj vsebniku, skupaj z jeziki, okoljskimi spremenljivkami, lokacijami datotek, omrežnimi vrati in drugimi komponentami, ki jih potrebuje - in seveda, kaj bo vsebnik dejansko počel, ko ga zaženemo.

Paige Niedringhaus pri ITNext ima dobro razčlenitev skladnje Dockerfile.

Slika Dockerja

Ko imate zapisano Dockerfile, prikličete Docker graditi pripomoček za ustvarjanje slike na podlagi te datoteke Dockerfile. Dockerfile je nabor navodil, ki pove graditi kako narediti sliko, je Dockerjeva slika prenosna datoteka, ki vsebuje specifikacije, za katere programske komponente bo zabojnik deloval in kako. Ker bo datoteka Docker verjetno vsebovala navodila o zajemanju nekaterih paketov programske opreme iz spletnih skladišč, bodite pozorni, da izrecno določite ustrezne različice, sicer pa lahko datoteka Docker ustvari neskladne slike, odvisno od tega, kdaj je poklicana. Ko pa je slika enkrat ustvarjena, je statična. Codefresh ponuja podrobnejši pogled na to, kako zgraditi sliko.

Docker teči

Docker's teči pripomoček je ukaz, ki dejansko zažene vsebnik. Vsaka posoda je primer slike. Posode so zasnovane tako, da so prehodne in začasne, vendar jih je mogoče ustaviti in znova zagnati, kar posodo zažene v enako stanje, kot je bilo ustavljeno. Poleg tega je mogoče istočasno zagnati več primerkov vsebnika iste slike (če ima vsak vsebnik edinstveno ime). Code Review vsebuje veliko razčlenitev različnih možnosti za teči ukaz, da boste dobili občutek, kako deluje.

Docker Hub

Čeprav je gradnja zabojnikov enostavna, si ne predstavljajte, da boste morali vsako sliko zgraditi iz nič. Docker Hub je skladišče SaaS za skupno rabo in upravljanje vsebnikov, kjer boste našli uradne Dockerjeve slike odprtokodnih projektov in prodajalcev programske opreme ter neuradne slike širše javnosti. Lahko prenesete slike vsebnikov, ki vsebujejo uporabno kodo, ali naložite svojo, jih odkrito delite ali namesto tega naredite zasebne. Če želite, lahko ustvarite tudi lokalni Dockerjev register. (Docker Hub je imel v preteklosti težave s slikami, ki so bile naložene z vgrajenimi zakulisnimi vrati.)

Docker motor

Docker Engine je jedro Dockerja, osnovne odjemalsko-strežniške tehnologije, ki ustvarja in vodi vsebnike. Na splošno, ko nekdo reče Docker in ne govori o podjetju ali celotnem projektu, mislijo na Docker Engine. V ponudbi sta dve različici Docker Engine: Docker Engine Enterprise in Docker Engine Community.

Docker Community Edition

Docker je izdal svoj Enterprise Edition leta 2017, vendar njegova prvotna ponudba, preimenovana v Docker Community Edition, ostaja odprtokodna in brezplačna ter v tem procesu ni izgubila nobene funkcije. Namesto tega je Enterprise Edition, ki stane 1500 USD na vozlišče na leto, dodal napredne funkcije upravljanja, vključno s kontrolami za upravljanje z gručami in slikami ter spremljanje ranljivosti. Blog BoxBoat vsebuje povzetek razlik med izdajami.

Kako je Docker osvojil svet kontejnerjev

Zamisel, da je dani postopek mogoče izvajati z določeno stopnjo izolacije od preostalega operacijskega okolja, je bila že desetletja vgrajena v operacijske sisteme Unix, kot sta BSD in Solaris. Izvirna tehnologija zabojnikov Linux, LXC, je metoda virtualizacije na ravni OS za zagon več izoliranih sistemov Linux na enem gostitelju. LXC sta omogočili dve funkciji Linuxa: imenski prostori, ki zavijejo nabor sistemskih virov in jih predstavijo procesu, da je videti, kot da so temu namenjeni; in cgroups, ki urejajo izolacijo in uporabo sistemskih virov, kot sta CPU in pomnilnik, za skupino procesov.

Vsebniki ločujejo aplikacije od operacijskih sistemov, kar pomeni, da imajo uporabniki lahko čist in minimalen operacijski sistem Linux, vse ostalo pa zaženejo v enem ali več izoliranih vsebnikih. In ker je operacijski sistem abstraktno oddaljen od vsebnikov, lahko vsebnik premaknete prek katerega koli strežnika Linux, ki podpira okolje izvajanja vsebnika.

Docker je v LXC uvedel nekaj pomembnih sprememb, zaradi katerih so posode bolj prenosne in prilagodljive za uporabo. Z Dockerjevimi vsebniki lahko razmestite, kopirate, premaknete in varnostno kopirate delovno obremenitev še hitreje in enostavneje, kot lahko to storite z navideznimi stroji. Docker prinaša oblačno fleksibilnost v katero koli infrastrukturo, ki lahko izvaja zabojnike. Dockerjeva orodja za slike posod so bila tudi napredek v primerjavi z LXC, saj so razvijalcu omogočala, da je zgradil knjižnice slik, sestavil programe iz več slik in jih zagnal na lokalni ali oddaljeni infrastrukturi.

Docker Compose, Docker Swarm in Kubernetes

Docker tudi olajša usklajevanje vedenja med kontejnerjev in tako zgraditi svežnje aplikacij tako, da jih zataknete. Docker Compose je ustvaril Docker za poenostavitev postopka razvoja in preizkušanja aplikacij z več vsebniki. To je orodje ukazne vrstice, ki spominja na odjemalca Docker, ki v posebno oblikovano datoteko deskriptorja sestavi programe iz več vsebnikov in jih usklajeno zažene na enem gostitelju. (Če želite izvedeti več, si oglejte vadnico Docker Compose.)

Naprednejše različice tega vedenja - kaj se imenuje orkestracija zabojnikov—Na voljo so z drugimi izdelki, kot sta Docker Swarm in Kubernetes. Toda Docker ponuja osnove. Čeprav je Swarm zrasel iz projekta Docker, je Kubernetes postal de facto Izbrana platforma za orkestracijo Docker.

Docker prednosti

Docker zabojniki ponujajo način za izdelavo poslovnih in poslovnih aplikacij, ki jih je lažje sestaviti, vzdrževati in premikati kot običajni kolegi. 

Docker posode omogočajo izolacijo in dušenje

Vsebniki Dockerja ne shranjujejo aplikacij le med seboj, temveč tudi od osnovnega sistema. To ne omogoča samo čistejšega nabora programske opreme, temveč tudi lažje narekuje, kako določena vsebniška aplikacija uporablja sistemske vire - CPU, GPU, pomnilnik, V / I, omrežje itd. Prav tako olajša zagotavljanje ločenosti podatkov in kode. (Glejte »Spodnji zabojniki so brez državljanstva in nespremenljivi« spodaj.)

Docker posode omogočajo prenosljivost

Vsebnik Docker se izvaja na katerem koli računalniku, ki podpira izvajalno okolje vsebnika. Programov ni treba vezati na gostiteljski operacijski sistem, zato lahko tako aplikacijsko okolje kot osnovno operacijsko okolje ostanejo čisti in minimalni.

Na primer, vsebnik MySQL za Linux bo deloval v večini katerega koli sistema Linux, ki podpira vsebnike. Vse odvisnosti za aplikacijo so običajno dostavljene v istem vsebniku.

Aplikacije, ki temeljijo na vsebnikih, je mogoče enostavno premakniti iz predhodnih sistemov v oblačna okolja ali iz prenosnih računalnikov razvijalcev na strežnike, če ciljni sistem podpira Docker in katero koli drugo orodje, ki je morda v uporabi z njim, na primer Kubernetes (glejte »Spodnji kontejnerji olajšajo orkestracijo in skaliranje«, spodaj).

Običajno morajo biti slike vsebnikov Dockerja zgrajene za določeno platformo. Na primer vsebnik Windows ne bo deloval v Linuxu in obratno. Prej je bil en način izogibanja tej omejitvi zagon navideznega računalnika, ki je zagnal primerek potrebnega operacijskega sistema, in zagon vsebnika v navideznem računalniku.

Vendar pa je ekipa Dockerja od takrat oblikovala bolj elegantno rešitev, imenovanomanifestira, ki omogočajo, da se slike za več operacijskih sistemov pakirajo vzporedno v isto sliko. Manifesti se sicer še vedno štejejo za eksperimentalne, vendar namigujejo na to, kako lahko vsebniki postanejo rešitev za več platform in tudi za okolje. 

Docker posode omogočajo komponiranje

Večina poslovnih aplikacij je sestavljena iz več ločenih komponent, organiziranih v sklad - spletnega strežnika, baze podatkov in predpomnilnika v pomnilniku. Posode omogočajo sestavljanje teh kosov v funkcionalno enoto z lahko spremenljivimi deli. Vsak kos ima druga posoda in ga je mogoče vzdrževati, posodabljati, zamenjati in spreminjati neodvisno od drugih.

To je v bistvu model mikro storitev za oblikovanje aplikacij. Z razdelitvijo funkcionalnosti aplikacij v ločene samostojne storitve model mikro storitev ponuja protistrup za upočasnitev tradicionalnih razvojnih procesov in neprilagodljivih monolitnih aplikacij. Lahki in prenosni zabojniki olajšajo izdelavo in vzdrževanje aplikacij, ki temeljijo na mikro storitvah.

Docker posode olajšajo orkestracijo in skaliranje

Ker so zabojniki lahki in nimajo veliko stroškov, jih je mogoče v določenem sistemu sprožiti veliko več. Toda zabojnike je mogoče uporabiti tudi za razširitev aplikacije po grozdih sistemov in za povečanje ali dviganje storitev, da bi zadostili hitrim povpraševanjem ali prihranili vire.

Največ različic orodij za razmestitev, upravljanje in spreminjanje vsebnikov za podjetja, ki so na voljo v podjetjih, je na voljo v okviru projektov drugih proizvajalcev. Glavni med njimi je Googlov Kubernetes, sistem za avtomatizacijo namestitve in spreminjanja vsebnikov, pa tudi povezovanja, uravnoteženosti in upravljanja. Kubernetes ponuja tudi načine za ustvarjanje in ponovno uporabo definicij aplikacij z več vsebniki ali »grafikonov Helm«, tako da je mogoče na zahtevo zgraditi in upravljati zapletene svežnje aplikacij.

Docker vključuje tudi lasten vgrajen sistem orkestracije, način Swarm, ki se še vedno uporablja za primere, ki so manj zahtevni. Kljub temu je Kubernetes postal nekaj privzete izbire; pravzaprav je Kubernetes v paketu z Docker Enterprise Edition.

Docker opozorila

Zabojniki rešujejo veliko težav, vendar niso zdravila za vse. Nekatere pomanjkljivosti so zasnovane, druge pa so stranski produkti njihovega oblikovanja.

Docker zabojniki niso navidezni stroji

Najpogostejša konceptualna napaka, ki jo ljudje storijo s kontejnerji, je enačenje z virtualnimi stroji. Ker pa zabojniki in navidezni stroji uporabljajo različne izolacijske mehanizme, imajo izrazito različne prednosti in slabosti.

Navidezni stroji zagotavljajo visoko stopnjo izolacije za procese, saj se izvajajo v lastnem primerku operacijskega sistema. Tudi ta operacijski sistem ne sme biti enak tistemu, ki se izvaja na gostitelju. Navidezni stroj Windows lahko deluje na hipervizorju Linux in obratno.

Nasprotno pa vsebniki uporabljajo nadzorovane dele virov gostiteljskega operacijskega sistema; številne aplikacije imajo isto jedro OS na zelo vodljiv način. Kot rezultat, kontejnerske aplikacije niso tako temeljito izolirane kot navidezni stroji, vendar zagotavljajo dovolj izolacije za veliko večino delovnih obremenitev.

Docker posode ne omogočajo hitrosti kovine

$config[zx-auto] not found$config[zx-overlay] not found