Dockeri mõistmine

Olen juba mitu kuud kasutanud Dockerit veebiprojektide arendus-/tarneprotsessi struktureerimiseks. Pakun Habrakhabri lugejatele dokkerit käsitleva sissejuhatava artikli tõlget - "Doki mõistmine".

Mis on docker?

Docker on avatud platvorm rakenduste arendamiseks, tarnimiseks ja käitamiseks. Docker on loodud teie rakenduste kiiremaks tarnimiseks. Dockeri abil saate oma rakenduse infrastruktuurist lahti siduda ja käsitleda infrastruktuuri hallatud rakendusena. Docker aitab teil koodi kiiremini kohale toimetada, kiiremini testida, rakendusi kiiremini kohale toimetada ja lühendada koodi kirjutamise ja koodi käivitamise vahelist aega. Docker teeb seda kerge konteineri virtualiseerimisplatvormi kaudu, kasutades protsesse ja utiliite, mis aitavad teil rakendusi hallata ja hostida.

Docker võimaldab teil käivitada peaaegu kõiki rakendusi, mis on ohutult konteinerisse eraldatud. Turvaline isoleerimine võimaldab teil samal hostil korraga käivitada mitu konteinerit. Mahuti kerge olemus, mis töötab ilma hüperviisori lisakoormuseta, võimaldab teil riistvarast rohkem kasu saada.

Konteinerite virtualiseerimisplatvorm ja tööriistad võivad olla kasulikud järgmistel juhtudel.

  • oma rakenduse (ja kasutatavate komponentide) pakkimine dokkimiskonteineritesse;
  • nende konteinerite levitamine ja tarnimine teie meeskondadele arendamiseks ja testimiseks;
  • paigutades need konteinerid oma tootmiskohtadesse nii andmekeskustesse kui ka pilvedesse.

Milleks saan dokkerit kasutada?

Avaldage oma rakendused kiiresti

Docker sobib suurepäraselt arendustsükli korraldamiseks. Docker võimaldab arendajatel käitada rakenduste ja teenustega kohalikke konteinereid. See võimaldab teil hiljem integreeruda pideva integreerimise ja juurutamise töövooga.

Näiteks teie arendajad kirjutavad koodi kohapeal ja jagavad oma arenduspakki (Dokeri kujutiste komplekt) kolleegidega. Kui nad on valmis, saadavad nad koodi ja konteinerid testimiskohta ning viivad läbi kõik vajalikud testid. Testimispaigast saavad nad koodi ja pilte tootmisse saata.

Lihtsam paika panna ja lahti voltida

Dockeri konteineripõhine platvorm muudab kasuliku koorma teisaldamise lihtsaks. Dockeri konteinerid võivad töötada teie kohalikus masinas, kas reaalses või andmekeskuse virtuaalses masinas või pilves.

Dockeri kaasaskantavus ja kerge olemus muudavad töökoormuse dünaamilise haldamise lihtsaks. Saate kasutada dokkerit oma rakenduse või teenuste juurutamiseks või sulgemiseks. Dokkeri kiirus võimaldab seda teha peaaegu reaalajas.

Suurem koormus ja suurem kandevõime

Docker on kerge ja kiire. See pakub hüperviisoripõhistele virtuaalmasinatele vastupidavat ja kulutõhusat alternatiivi. See on eriti kasulik suure koormusega keskkondades, näiteks oma pilve või platvormi loomisel teenusena. Kuid see on kasulik ka väikeste ja keskmise suurusega rakenduste jaoks, kui soovite olemasolevatest ressurssidest rohkem kasu saada.

Dockeri peamised komponendid

Docker koosneb kahest põhikomponendist:

  • Docker: avatud lähtekoodiga virtualiseerimisplatvorm;
  • Docker Hub: meie platvorm kui teenus Dockeri konteinerite levitamiseks ja haldamiseks.

Märge! Dockerit levitatakse Apache 2.0 litsentsi all.

Dockeri arhitektuur

Docker kasutab klient-server arhitektuuri. Dockeri klient suhtleb Dockeri deemoniga, mis võtab teie konteinerite loomise, käitamise ja levitamise koormuse enda peale. Nii klient kui ka server võivad töötada samas süsteemis, saate ühendada kliendi kaugdokeri deemoniga. Klient ja server suhtlevad pistikupesa või RESTful API kaudu.

Dockeri mõistmine

Dockeri deemon

Nagu diagrammil näidatud, töötab deemon hostmasinas. Kasutaja ei suhtle serveriga otse, vaid kasutab selleks klienti.

Dockeri klient

Dockeri klient, Dockeri programm, on Dockeri peamine liides. See saab kasutajalt käske ja suhtleb dokkedeemoniga.

Sisemine dokk

Et mõista, millest docker koosneb, peate teadma kolme komponendi kohta:

  • pilte
  • register
  • Konteinerid

Pildid

Dockeri pilt on kirjutuskaitstud mall. Näiteks võib pilt sisaldada Ubuntu operatsioonisüsteemi koos Apache'iga ja sellel olevat rakendust. Konteinerite loomiseks kasutatakse pilte. Dockeri abil on lihtne luua uusi pilte, värskendada olemasolevaid või saate alla laadida teiste inimeste loodud pilte. Pildid on dokkeri konstruktsiooni komponendid.

Registreerima

Dockeri register salvestab pilte. Seal on avalikud ja eraregistrid, kust saate pilte alla laadida või üles laadida. Avalik Dockeri register on Dockeri jaotur. Sinna on salvestatud tohutult palju pilte. Nagu teate, saate pilte luua ise või kasutada teiste loodud pilte. Registrid on levitamise komponent.

Konteinerid

Konteinerid on sarnased kataloogidega. Konteinerid sisaldavad kõike, mida rakendus töötab. Iga konteiner luuakse pildist. Konteinereid saab luua, käivitada, peatada, migreerida või kustutada. Iga konteiner on isoleeritud ja pakub rakendusele turvalise platvormi. Konteinerid on töö komponendid.

Niisiis, kuidas Docker töötab?

Siiani teame, et:

  • saame luua pilte, milles meie rakendused asuvad;
  • saame luua piltidest konteinereid rakenduste käivitamiseks;
  • Saame pilte levitada Docker Hubi või mõne muu pildiregistri kaudu.

Vaatame, kuidas need komponendid omavahel kokku sobivad.

Kuidas pilt töötab?

Teame juba, et pilt on kirjutuskaitstud mall, millest konteiner luuakse. Iga pilt koosneb tasemete komplektist. Docker kasutab ametiühingu failisüsteem ühendada need tasemed üheks pildiks. Liidu failisüsteem võimaldab erinevatest failisüsteemidest (erinevatest harudest) pärit failidel ja kataloogidel läbipaistvalt kattuda, luues ühtse failisüsteemi.

Üks põhjusi, miks docker on kerge, on see, et see kasutab selliseid kihte. Kui muudate pilti, näiteks värskendate rakendust, luuakse uus kiht. Seega lisatakse või värskendatakse ainult kihti ilma kogu pilti asendamata või uuesti üles ehitamata, nagu võib juhtuda virtuaalmasina puhul. Ja te ei pea levitama kogu uut pilti, levitatakse ainult värskendust, mis muudab piltide levitamise lihtsamaks ja kiiremaks.

Iga pildi keskmes on põhipilt. Näiteks ubuntu, Ubuntu põhipilt või fedora, Fedora distributsiooni põhipilt. Pilte saab kasutada ka uute piltide loomise alusena. Näiteks kui teil on apache-pilt, saate seda kasutada oma veebirakenduste aluspildina.

Märge! Docker tõmbab tavaliselt pildid Docker Hubi registrist.

Nendest põhikujutistest saab luua Dockeri kujutisi; me nimetame nende piltide loomise juhisteks. Iga juhend loob uue pildi või taseme. Juhised on järgmised:

  • käivita käsk
  • faili või kataloogi lisamine
  • keskkonnamuutuja loomine
  • juhised selle kohta, mida selle pildi konteineri käivitamisel käivitada

Need juhised salvestatakse faili Dockerfile. Docker loeb seda Dockerfile, täidab pildi loomisel need juhised ja tagastab lõpliku pildi.

Kuidas dokkiregister töötab?

Register on dokkipiltide hoidla. Kui pilt on loodud, saate selle avaldada avalikus Docker Hubi registris või oma isiklikus registris.

Dockeri kliendiga saate otsida juba avaldatud pilte ja need konteinerite loomiseks oma dokkimismasinasse alla laadida.

Docker Hub pakub avalikke ja privaatseid pildihoidlaid. Avalikest hoidlatest piltide otsimine ja allalaadimine on kõigile kättesaadav. Erasalvestuste sisu ei sisaldu otsingutulemustes. Ja ainult teie ja teie kasutajad saate neid pilte vastu võtta ja neist konteinereid luua.

Kuidas konteiner töötab?

Konteiner koosneb operatsioonisüsteemist, kasutajafailidest ja metaandmetest. Nagu me teame, luuakse iga konteiner pildist. See pilt ütleb dockerile, mis konteineris on, millist protsessi alustada, millal konteiner käivitub ja muud konfiguratsiooniandmed. Dockeri pilt on kirjutuskaitstud. Kui docker käivitab konteineri, loob see pildi peale lugemis-/kirjutuskihi (kasutades unioni failisüsteemi, nagu eespool kirjeldatud), milles rakendust saab käivitada.

Mis juhtub, kui konteiner käivitub?

Või programmi kasutades docker, või kasutades RESTful API-d, käsib dockeri klient dokkedeemonil konteiner käivitada.

$ sudo docker run -i -t ubuntu /bin/bash

Vaatame seda käsku. Klient käivitatakse käsu abil docker, valikuga run, mis ütleb, et turule tuleb uus konteiner. Konteineri käitamise miinimumnõuded on järgmised atribuudid.

  • millist pilti konteineri loomiseks kasutada. Meie puhul ubuntu
  • käsk, mida soovite konteineri käivitamisel käivitada. Meie puhul /bin/bash

Mis juhtub kapoti all, kui käivitame selle käsu?

Docker teeb järjekorras järgmist:

  • laadib alla ubuntu pildi: Docker kontrollib piltide saadavust ubuntu kohalikus masinas ja kui seda seal pole, laadige see alla Dockeri jaotur. Kui pilt on olemas, kasutab ta seda konteineri loomiseks;
  • loob konteineri: kui pilt on vastu võetud, kasutab docker seda konteineri loomiseks;
  • initsialiseerib failisüsteemi ja ühendab kirjutuskaitstud taseme: konteiner luuakse failisüsteemis ja pilt lisatakse kirjutuskaitstud tasemele;
  • lähtestab võrgu/silla: loob võrguliidese, mis võimaldab dockeril hostmasinaga suhelda;
  • IP-aadressi määramine: leiab ja määrab aadressi;
  • Käivitab määratud protsessi: käivitab teie rakenduse;
  • Töötleb ja toodab teie rakenduse väljundit: ühendab ja logib teie rakenduse standardse sisendi, väljundi ja veavoo, et saaksite jälgida, kuidas teie rakendus toimib.

Nüüd on teil töötav konteiner. Saate oma konteinerit hallata ja rakendusega suhelda. Kui otsustate rakenduse peatada, kustutage konteiner.

Kasutatud tehnoloogiad

Docker on kirjutatud Go-s ja kasutab ülaltoodud funktsioonide rakendamiseks mõnda Linuxi tuuma funktsiooni.

Nimeruumid

Docker kasutab tehnoloogiat namespaces isoleeritud tööruumide korraldamiseks, mida me nimetame konteineriteks. Kui käivitame konteineri, loob docker selle konteineri jaoks nimeruumide komplekti.

See loob isoleeritud kihi, kus iga konteineri aspekt töötab oma nimeruumis ja millel puudub juurdepääs välisele süsteemile.

Mõnede Dockeri kasutatavate nimeruumide loend:

  • pid: protsessi isoleerimiseks;
  • võrk: võrguliideste haldamiseks;
  • ipc: IPC ressursside haldamiseks. (ICP: InterProccess Communication);
  • mnt: kinnituspunktide haldamiseks;
  • utc: kerneli isoleerimiseks ja versiooni genereerimise kontrollimiseks (UTC: Unixi ajajagamise süsteem).

Kontrollrühmad

Docker kasutab ka tehnoloogiat cgroups või kontrollrühmad. Rakenduse isoleeritud käitamise võti on pakkuda rakendusele ainult neid ressursse, mida soovite pakkuda. See tagab, et konteinerid on head naabrid. Juhtrühmad võimaldavad jagada olemasolevaid riistvararessursse ning vajadusel seada piiranguid ja piiranguid. Näiteks piirake konteineri võimalikku mälumahtu.

Liidu failisüsteem

Union File Sysem või UnionFS on failisüsteem, mis töötab kihtide loomisega, muutes selle väga kergeks ja kiireks. Docker kasutab UnionFS-i, et luua plokid, millest konteiner on ehitatud. Docker saab kasutada mitut UnionFS-i varianti, sealhulgas: AUFS, btrfs, vfs ja DeviceMapper.

Konteinerite vormingud

Docker ühendab need komponendid ümbrisesse, mida me nimetame konteinerivorminguks. Vaikimisi vormingut kutsutakse libcontainer. Docker toetab ka traditsioonilist konteinerivormingut Linuxis LXC. Tulevikus võib Docker toetada muid konteinerivorminguid. Näiteks integreerimine BSD Jails või Solarise tsoonidega.

Allikas: www.habr.com

Lisa kommentaar