Programmēšana

Konteineri 101: Dokera pamati

Docker sāka darboties 2012. gadā kā atvērtā koda projekts, kura sākotnējais nosaukums bija dotcloud, lai izveidotu vienas lietojumprogrammas Linux konteinerus. Kopš tā laika Docker ir kļuvis par ārkārtīgi populāru izstrādes rīku, ko arvien vairāk izmanto kā izpildlaika vidi. Tikai dažas tehnoloģijas, ja tādas ir, ir tik ātri piesaistījušas izstrādātājus kā Docker.

Viens no iemesliem, kāpēc Docker ir tik populārs, ir tas, ka tas sola “attīstīt vienreiz, palaist jebkur”. Docker piedāvā vienkāršu veidu, kā iepakot lietojumprogrammu un tās izpildes laika atkarības vienā konteinerā; tas arī nodrošina izpildlaika abstrakciju, kas ļauj konteineram darboties dažādās Linux kodola versijās.

Izmantojot Docker, izstrādātājs savā darbstacijā var izveidot konteinerizētu lietojumprogrammu, pēc tam viegli izvietot konteineru jebkurā Docker iespējotā serverī. Nav nepieciešams atkārtoti pārbaudīt vai pārkontrolēt konteineru servera videi mākonī vai telpās.

Turklāt Docker nodrošina programmatūras koplietošanas un izplatīšanas mehānismu, kas ļauj izstrādātājiem un operāciju komandām viegli koplietot un atkārtoti izmantot konteineru saturu. Šis izplatīšanas mehānisms apvienojumā ar pārnesamību starp mašīnām palīdz ņemt vērā Docker popularitāti operāciju komandās un izstrādātājos.

Docker komponenti

Docker ir gan izstrādes rīks, gan izpildlaika vide. Lai saprastu Docker, mums vispirms ir jāsaprot Docker konteinera attēla jēdziens. Konteiners vienmēr sākas ar attēlu un tiek uzskatīts par šī attēla instantiāciju. Attēls ir statiska specifikācija tam, kādam konteineram jābūt izpildlaikā, ieskaitot lietojumprogrammas kodu konteinerā un izpildlaika konfigurācijas iestatījumus. Docker attēli satur tikai lasāmus slāņus, kas nozīmē, ka pēc tam, kad attēls ir izveidots, tas vairs netiek modificēts.

1. attēlā parādīts konteinera attēla piemērs. Šis attēls attēlo Ubuntu attēlu ar Apache instalāciju. Attēls sastāv no trim Ubuntu bāzes slāņiem, kā arī atjaunināšanas slāņa, virs kura ir Apache slānis un pielāgots failu slānis.

Darbojošais Docker konteiners ir attēla instantizācija. Tvertnes, kas iegūtas no tā paša attēla, ir identiskas viena otrai pēc to lietojuma koda un atkarības no izpildlaika. Bet atšķirībā no attēliem, kas ir tikai lasāmi, darbojošajos konteineros ir tikai lasāma satura augšpusē rakstāms slānis (konteinera slānis). Izpildlaika izmaiņas, ieskaitot visus datu un failu ierakstus un atjauninājumus, tiek saglabātas konteinera slānī. Tādējādi vairākiem vienlaicīgi darbojošiem konteineriem, kuriem ir viens un tas pats pamatā esošais attēls, konteineru slāņi var būtiski atšķirties.

Dzēšot darbojošos konteineru, tiek izdzēsts arī rakstāmā konteinera slānis un tas vairs neizturēs. Vienīgais veids, kā noturēt izmaiņas, ir skaidri formulēt dokers apņemties pirms konteinera dzēšanas. Kad jūs veicat a dokers apņemties, darbojošā konteinera saturs, ieskaitot rakstāmo slāni, tiek ierakstīts jaunā konteinera attēlā un saglabāts diskā. Tas kļūst par jaunu attēlu, kas atšķiras no attēla, ar kuru konteiners tika instantēts.

Izmantojot šo nepārprotamo dokers apņemties komandu, var izveidot secīgu, diskrētu Docker attēlu kopu, no kuriem katrs ir veidots virs iepriekšējā attēla. Turklāt Docker izmanto kopēšanas uz rakstīšanas stratēģiju, lai samazinātu konteineru un attēlu, kuriem ir kopīgi tie paši bāzes komponenti, uzglabāšanas vietu. Tas palīdz optimizēt krātuves vietu un samazināt konteinera sākuma laiku.

2. attēlā attēlota atšķirība starp attēlu un darbojošos konteineru. Ņemiet vērā, ka katram darbojošajam konteineram var būt atšķirīgs rakstāms slānis.

Papildus attēla koncepcijai Docker ir daži specifiski komponenti, kas atšķiras no tradicionālajos Linux konteineros esošajiem komponentiem.

  • Dokera dēmons. Pazīstams arī kā Docker Engine, Docker dēmons ir plāns slānis starp konteineriem un Linux kodolu. Docker dēmons ir pastāvīga izpildlaika vide, kas pārvalda lietojumprogrammu konteinerus. Jebkurš Docker konteiners var darboties jebkurā serverī, kurā ir iespējots Docker-daemon, neatkarīgi no pamatā esošās operētājsistēmas.
  • Dockerfile. Izstrādātāji izmanto Dockerfiles, lai izveidotu konteineru attēlus, kas pēc tam kļūst par konteineru palaišanas pamatu. Dockerfile ir teksta dokuments, kurā ir visa konfigurācijas informācija un komandas, kas nepieciešamas konteinera attēla apkopošanai. Izmantojot Dockerfile, Docker dēmons var automātiski izveidot konteinera attēlu. Šis process ievērojami vienkāršo konteinera izveides darbības.

Precīzāk, Dockerfile failā vispirms jānorāda bāzes attēls, no kura sākas būvēšanas process. Pēc tam jūs norādāt komandu secību, pēc kuras var izveidot jaunu konteinera attēlu.

  • Docker komandrindas saskarnes rīki. Docker nodrošina CLI komandu kopu, lai pārvaldītu uz attēlu balstītu konteineru dzīves ciklu. Docker komandas aptver attīstības funkcijas, piemēram, veidošanu, eksportēšanu un marķēšanu, kā arī izpildlaika funkcijas, piemēram, konteinera palaišanu, dzēšanu, palaišanu un apturēšanu un daudz ko citu.

Docker komandas var izpildīt pret noteiktu Docker dēmonu vai reģistru. Piemēram, ja izpildāt dokeris -ps komandu, Docker atgriezīs konteineru sarakstu, kas darbojas dēmonā.

Satura izplatīšana ar Docker

Papildus izpildlaika videi un konteineru formātiem Docker nodrošina programmatūras izplatīšanas mehānismu, ko parasti sauc par reģistru, kas atvieglo konteineru satura atklāšanu un izplatīšanu.

Reģistra jēdziens ir kritisks Docker panākumu gūšanai, jo tas nodrošina komunālo pakalpojumu komplektu konteineru satura iesaiņošanai, nosūtīšanai, uzglabāšanai, atklāšanai un atkārtotai izmantošanai. Uzņēmums Docker pārvalda publisku bezmaksas reģistru ar nosaukumu Docker Hub.

  • Reģistrs. Docker reģistrs ir vieta, kur tiek publicēti un glabāti konteinera attēli. Reģistrs var būt attālināts vai lokāls. Tas var būt publisks, tāpēc visi to var izmantot vai privāti, tikai organizācijai vai lietotāju kopai. Docker reģistrā ir kopīgu API kopa, kas lietotājiem ļauj veidot, publicēt, meklēt, lejupielādēt un pārvaldīt konteinera attēlus.
  • Dokera centrmezgls. Docker Hub ir publisks, uz mākoņiem balstīts konteineru reģistrs, kuru pārvalda Docker. Docker Hub nodrošina attēlu atklāšanas, izplatīšanas un sadarbības darbplūsmas atbalstu. Turklāt Docker Hub ir oficiālu attēlu kopums, ko sertificējis Docker. Tie ir attēli no zināmiem programmatūras izdevējiem, piemēram, Canonical, Red Hat un MongoDB. Šos oficiālos attēlus varat izmantot kā pamatu savu attēlu vai lietojumprogrammu veidošanai.

3. attēlā parādīta darbplūsma, kurā lietotājs izveido attēlu un augšupielādē to reģistrā. Citi lietotāji var izvilkt attēlu no reģistra, lai izgatavotu ražošanas konteinerus, un izvietot tos Docker resursdatoros, lai kur viņi atrastos.

Docker konteineru nemainīgums

Viena no interesantākajām Docker konteineru īpašībām ir to nemainīgums un no tā izrietošā konteineru bezvalstniecība.

Kā mēs aprakstījām iepriekšējā sadaļā, pēc izveidošanas Docker attēls nemainās. Darbojošam konteineram, kas iegūts no attēla, ir rakstāms slānis, kas īslaicīgi var saglabāt izpildlaika izmaiņas. Ja konteiners ir izdarīts pirms dzēšanas ar dokers apņemties, izmaiņas rakstāmajā slānī tiks saglabātas jaunā attēlā, kas atšķiras no iepriekšējā.

Kāpēc nemainīgums ir labs? Nemainīgi attēli un konteineri rada nemainīgu infrastruktūru, un nemainīgai infrastruktūrai ir daudz interesantu priekšrocību, kuras nav iespējams sasniegt ar tradicionālajām sistēmām. Šīs priekšrocības ir šādas:

  • Versijas kontrole. Pieprasot skaidras saistības, kas ģenerē jaunus attēlus, Docker liek jums veikt versiju kontroli. Jūs varat sekot secīgām attēla versijām; Pāriet uz iepriekšējo attēlu (tātad uz iepriekšējo sistēmas komponentu) ir pilnīgi iespējams, jo iepriekšējie attēli tiek saglabāti un nekad netiek modificēti.
  • Tīrāki atjauninājumi un vieglāk pārvaldāmas stāvokļa izmaiņas. Izmantojot nemainīgu infrastruktūru, jums vairs nav jāatjaunina servera infrastruktūra, kas nozīmē, ka nav jāmaina konfigurācijas faili, nav programmatūras atjauninājumu, nav operētājsistēmas jauninājumu utt. Ja ir nepieciešamas izmaiņas, jūs vienkārši izveidojat jaunus konteinerus un izspiežat tos, lai aizstātu vecos. Šī ir daudz diskrētāka un vadāmāka metode stāvokļa maiņai.
  • Samazināts dreifs. Lai izvairītos no novirzīšanās, jūs varat periodiski un proaktīvi atsvaidzināt visus sistēmas komponentus, lai pārliecinātos, ka tie ir jaunākie varianti. Šī prakse ir daudz vienkāršāka ar konteineriem, kas ietver mazākus sistēmas komponentus, nekā tas ir ar tradicionālo, lielgabarīta programmatūru.

Dokera atšķirība

Docker attēla formāts, plašas API konteineru pārvaldībai un novatorisks programmatūras izplatīšanas mehānisms ir padarījuši to par populāru platformu gan izstrādes, gan operāciju komandām. Docker sniedz organizācijai šos ievērojamos ieguvumus.

  • Minimālas, deklaratīvas sistēmas. Docker konteineri ir vislabākajā gadījumā, ja tie ir mazi, viena mērķa lietojumi. Tas rada minimāla izmēra konteinerus, kas savukārt nodrošina ātru piegādi, nepārtrauktu integrāciju un nepārtrauktu izvietošanu.
  • Paredzamās operācijas. Sistēmas darbību lielākās galvassāpes vienmēr ir bijušas šķietami nejauša infrastruktūras vai lietojumprogrammu darbība. Piespiežot veikt mazākus, vieglāk pārvaldāmus atjauninājumus un nodrošinot mehānismu, lai samazinātu sistēmas novirzi, Docker palīdz jums izveidot labāk paredzamas sistēmas. Kad novirzīšanās tiek novērsta, jums ir pārliecība, ka programmatūra vienmēr rīkosies vienādi, neatkarīgi no tā, cik reizes jūs to izvietojat.
  • Plaša programmatūras atkārtota izmantošana. Docker konteineri atkārtoti izmanto citu attēlu slāņus, kas, protams, veicina programmatūras atkārtotu izmantošanu. Docker attēlu kopīgošana, izmantojot reģistrus, ir vēl viens lielisks komponentu atkārtotas izmantošanas piemērs lielā mērogā.
  • Patiesa daudzmākoņu pārnesamība. Docker nodrošina patiesu platformas neatkarību, ļaujot konteineriem brīvi pārvietoties starp dažādām mākoņu platformām, lokālām infrastruktūrām un izstrādes darbstacijām.

Docker jau maina veidu, kā organizācijas veido sistēmas un sniedz pakalpojumus. Tas sāk pārveidot to, kā mēs domājam par programmatūras dizainu un programmatūras piegādes ekonomiku. Pirms šīs izmaiņas patiesi iesakņojas, organizācijām ir labāk jāsaprot, kā pārvaldīt Docker vides drošību un politikas. Bet tā ir cita raksta tēma.

Čensi Vangs ir konteineru drošības firmas Twistlock galvenais stratēģijas vadītājs.

Jauno tehnoloģiju forums nodrošina vietu, kur bezprecedenta dziļumā un plašumā izpētīt un pārrunāt topošās uzņēmuma tehnoloģijas. Izvēle ir subjektīva, balstoties uz mūsu izvēlētajām tehnoloģijām, kuras, mūsuprāt, ir svarīgas un interesē lasītājus. nepieņem mārketinga nodrošinājumu publicēšanai un patur tiesības rediģēt visu ieguldīto saturu. Nosūtiet visus jautājumus uz [email protected].

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