Programiranje

Zabojniki 101: Osnove Dockerja

Docker je začel leta 2012 kot odprtokodni projekt, prvotno imenovan dotcloud, za izdelavo zabojnikov z eno aplikacijo Linux. Od takrat je Docker postal izjemno priljubljeno razvojno orodje, ki se vedno bolj uporablja kot izvajalno okolje. Le malo tehnologij - če sploh - jih je razvijalce ujelo tako hitro kot Docker.

Eden od razlogov, zakaj je Docker tako priljubljen, je, da prinaša obljubo, da se »enkrat razvije, teči kjer koli«. Docker ponuja preprost način za pakiranje aplikacije in njenih odvisnosti med izvajanjem v en vsebnik; ponuja tudi abstrakcijo med izvajanjem, ki omogoča zabojniku, da se izvaja v različnih različicah jedra Linuxa.

Z uporabo Dockerja lahko razvijalec na svoji delovni postaji naredi kontejnersko aplikacijo, nato pa vsebnik enostavno namesti na kateri koli Dockerjev omogočen strežnik. Ni treba ponovno preizkusiti ali preurediti vsebnika za strežniško okolje, bodisi v oblaku ali v prostorih.

Poleg tega Docker ponuja mehanizem za skupno rabo in distribucijo programske opreme, ki razvijalcem in operativnim skupinam omogoča enostavno skupno rabo in ponovno uporabo vsebine vsebnika. Ta distribucijski mehanizem skupaj s prenosljivostjo med stroji pomaga pri pojasnjevanju priljubljenosti Dockerja pri operativnih skupinah in razvijalcih.

Komponente dockerja

Docker je hkrati razvojno orodje in izvajalno okolje. Da bi razumeli Docker, moramo najprej razumeti koncept slike Dockerjevega vsebnika. Posoda se vedno začne s sliko in se šteje za primerek te slike. Slika je statična specifikacija, kaj naj bo vsebnik med izvajanjem, vključno s kodo aplikacije znotraj nastavitev vsebnika in nastavitvami za izvajanje. Slike Dockerja vsebujejo sloje samo za branje, kar pomeni, da se slika, ki jo ustvari, nikoli ne spremeni.

Slika 1 prikazuje primer slike posode. Ta slika prikazuje sliko Ubuntuja z namestitvijo Apache. Slika je sestavljena iz treh osnovnih slojev Ubuntuja in sloja za posodobitev, na vrhu pa sloj Apache in datoteka po meri.

Zagnani Dockerjev vsebnik je primer slike. Vsebniki, ki izhajajo iz iste slike, so med seboj enaki glede na kodo aplikacije in odvisnosti med izvajanjem. Toda v nasprotju s slikami, ki so samo za branje, delujoči vsebniki vsebujejo plast, ki jo je mogoče zapisovati (plast vsebnika) na vrh vsebine samo za branje. Spremembe med izvajanjem, vključno s pisanjem in posodobitvami podatkov in datotek, se shranijo v plast vsebnika. Tako lahko več hkrati delujočih vsebnikov, ki si delijo isto osnovno sliko, vsebuje plasti vsebnikov, ki se bistveno razlikujejo.

Ko izbrišete tekoči vsebnik, se izbriše tudi plast za zapisljiv vsebnik, ki ne bo obstajala. Edini način, da vztrajate pri spremembah, je, da naredite eksplicitno docker storiti ukaz pred brisanjem vsebnika. Ko naredite a docker storitise vsebina tekočega vsebnika, vključno s plastjo za zapis, zapiše v novo sliko vsebnika in shrani na disk. To postane nova slika, ki se razlikuje od slike, s katero je bil ustvarjen primerek vsebnika.

Z uporabo tega eksplicitnega docker storiti Ukaz lahko ustvari zaporedni, ločeni nabor Dockerjevih slik, ki so zgrajeni nad prejšnjo sliko. Poleg tega Docker uporablja strategijo kopiranja in pisanja, da zmanjša odtis shranjevalnikov in slik, ki imajo iste osnovne komponente. To pomaga optimizirati prostor za shranjevanje in zmanjšati čas zagona posode.

Slika 2 prikazuje razliko med sliko in tekočim vsebnikom. Upoštevajte, da ima lahko vsak tekoči vsebnik drugačen sloj, na katerega lahko pišete.

Poleg koncepta slike ima Docker nekaj posebnih komponent, ki se razlikujejo od tistih v tradicionalnih vsebnikih Linuxa.

  • Docker demon. Demon Docker, znan tudi kot Docker Engine, je tanka plast med vsebniki in jedrom Linuxa. Dacker Docker je trajno izvajalno okolje, ki upravlja vsebnike aplikacij. Kateri koli Dockerjev vsebnik se lahko izvaja na katerem koli strežniku, ki ima omogočen Docker-demon, ne glede na osnovni operacijski sistem.
  • Dockerfile. Razvijalci s pomočjo Dockerfiles gradijo slike vsebnikov, ki nato postanejo osnova delujočih vsebnikov. Dockerfile je besedilni dokument, ki vsebuje vse informacije o konfiguraciji in ukaze, potrebne za sestavo slike vsebnika. Z Dockerfile lahko demon Docker samodejno izdela sliko vsebnika. Ta postopek močno poenostavi korake za ustvarjanje vsebnika.

Natančneje, v datoteki Docker najprej določite osnovno sliko, s katere se začne postopek gradnje. Nato določite zaporedje ukazov, po katerem je mogoče zgraditi novo sliko vsebnika.

  • Dockerjeva orodja za vmesniške ukazne vrstice. Docker ponuja nabor ukazov CLI za upravljanje življenjskega cikla vsebnikov na osnovi slik. Dockerjevi ukazi obsegajo razvojne funkcije, kot so gradnja, izvoz in označevanje, pa tudi izvajalne funkcije, kot so zagon, brisanje, zagon in zaustavitev vsebnika in še več.

Dockerjeve ukaze lahko izvajate proti določenemu Dockerjevemu demonu ali registru. Na primer, če izvedete datoteko docker -ps Docker vrne seznam vsebnikov, ki se izvajajo na demonu.

Distribucija vsebine z Dockerjem

Poleg izvajalnega okolja in formatov vsebnikov Docker ponuja mehanizem za distribucijo programske opreme, splošno znan kot register, ki olajša odkrivanje in distribucijo vsebine vsebnika.

Koncept registra je ključnega pomena za uspeh Dockerja, saj ponuja nabor pripomočkov za pakiranje, pošiljanje, shranjevanje, odkrivanje in ponovno uporabo vsebine vsebnika. Podjetje Docker vodi javni brezplačni register, imenovan Docker Hub.

  • Register. Dockerjev register je mesto, kjer se slike vsebnikov objavljajo in shranjujejo. Register je lahko oddaljen ali krajeven. Lahko je javen, zato ga lahko uporabljajo vsi ali zasebni, omejen na organizacijo ali nabor uporabnikov. Dockerjev register ima nabor pogostih API-jev, ki uporabnikom omogočajo izdelavo, objavo, iskanje, prenos in upravljanje slik vsebnikov.
  • Docker Hub. Docker Hub je javni register vsebnikov v oblaku, ki ga upravlja Docker. Docker Hub nudi podporo za odkrivanje, distribucijo in potek dela sodelovanja. Poleg tega ima Docker Hub nabor uradnih slik, ki jih potrdi Docker. To so slike znanih založnikov programske opreme, kot so Canonical, Red Hat in MongoDB. Te uradne slike lahko uporabite kot osnovo za izdelavo lastnih slik ali aplikacij.

Slika 3 prikazuje potek dela, v katerem uporabnik oblikuje sliko in jo naloži v register. Drugi uporabniki lahko sliko potegnejo iz registra, da izdelajo produkcijske vsebnike in jih namestijo v Dockerjeve gostitelje, kjer koli že so.

Nespremenljivost Dockerjevih zabojnikov

Ena najzanimivejših lastnosti Dockerjevih zabojnikov je njihova nespremenljivost in posledično apatričnost posod.

Kot smo opisali v prejšnjem razdelku, se Dockerjeva slika, ko je enkrat ustvarjena, ne spremeni. Tekoči vsebnik, izpeljan iz slike, ima zapisljiv sloj, ki lahko začasno shrani spremembe časa izvajanja. Če je vsebnik pred brisanjem dodan z docker storiti, spremembe v zapisljivi plasti se shranijo v novo sliko, ki se razlikuje od prejšnje.

Zakaj je nespremenljivost dobra? Nespremenljive slike in vsebniki vodijo do nespremenljive infrastrukture, nespremenljiva infrastruktura pa ima številne zanimive prednosti, ki jih s tradicionalnimi sistemi ni mogoče doseči. Te prednosti vključujejo naslednje:

  • Nadzor različic. Z zahtevo po eksplicitnih predajah, ki ustvarjajo nove slike, vas Docker prisili, da nadzirate različice. Sledite lahko zaporednim različicam slike; povratek nazaj na prejšnjo sliko (torej na prejšnjo komponento sistema) je povsem mogoč, saj se prejšnje slike hranijo in nikoli ne spremenijo.
  • Čistejše posodobitve in bolj obvladljive spremembe stanja. Z nespremenljivo infrastrukturo vam ni treba več nadgraditi strežniške infrastrukture, kar pomeni, da ni treba spreminjati konfiguracijskih datotek, nobenih posodobitev programske opreme, nadgradenj operacijskega sistema itd. Ko so potrebne spremembe, preprosto naredite nove posode in jih potisnite ven, da zamenjajo stare. To je veliko bolj diskretna in obvladljiva metoda za spremembo stanja.
  • Zmanjšan premik. Da bi se izognili premikom, lahko občasno in proaktivno osvežite vse komponente v sistemu, da zagotovite, da so najnovejše različice. Ta praksa je veliko lažja pri vsebnikih, ki vsebujejo manjše komponente sistema, kot pri tradicionalni, obsežni programski opremi.

Dockerjeva razlika

Dockerjeva oblika slike, obsežni API-ji za upravljanje vsebnikov in inovativni mehanizem za distribucijo programske opreme so postali priljubljena platforma za razvojne in operativne ekipe. Docker prinaša te pomembne prednosti organizaciji.

  • Minimalni, deklarativni sistemi. Docker posode so najboljše, če gre za majhne, ​​enonamenske aplikacije. Tako nastanejo zabojniki z minimalno velikostjo, ki nato podpirajo hitro dostavo, nenehno integracijo in neprekinjeno uvajanje.
  • Predvidljive operacije. Največji glavobol sistemskih operacij je bilo vedno na videz naključno obnašanje infrastrukture ali aplikacij. Z prisilitvijo k manjšim in bolj obvladljivim posodobitvam in z zagotavljanjem mehanizma za zmanjšanje odnašanja sistema vam Docker pomaga zgraditi bolj predvidljive sisteme. Ko odpravite premike, imate zagotovilo, da se bo programska oprema vedno obnašala enako, ne glede na to, kolikokrat jo namestite.
  • Obsežna ponovna uporaba programske opreme. Posode Docker ponovno uporabljajo plasti iz drugih slik, kar seveda spodbuja ponovno uporabo programske opreme. Skupna raba Dockerjevih slik prek registrov je še en odličen primer ponovne uporabe komponent v velikem obsegu.
  • Resnična prenosljivost več glasov. Docker omogoča resnično neodvisnost platforme, saj omogoča, da se zabojniki lahko prosto selijo med različnimi oblačnimi platformami, lokalnimi infrastrukturami in razvojnimi delovnimi postajami.

Docker že spreminja način, kako organizacije gradijo sisteme in zagotavljajo storitve. Začenja se preoblikovati, kako razmišljamo o oblikovanju programske opreme in ekonomiki dostave programske opreme. Preden se te spremembe resnično ukoreninijo, morajo organizacije bolje razumeti, kako upravljati varnost in politike za okolje Docker. Ampak to je tema za drug članek.

Chenxi Wang je glavni strateški direktor podjetja za zaščito zabojnikov Twistlock.

Forum New Tech ponuja prizorišče za raziskovanje in razpravo o nastajajoči podjetniški tehnologiji v globini in širini brez primere. Izbor je subjektiven in temelji na našem izboru tehnologij, za katere menimo, da so pomembne in najbolj zanimajo bralce. ne sprejema tržnih zavarovanj za objavo in si pridržuje pravico do urejanja celotne prispevane vsebine. Vsa vprašanja pošljite na [email protected].

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