Docker izpratne

Es jau vairākus mēneÅ”us izmantoju Docker, lai strukturētu tÄ«mekļa projektu izstrādes/piegādes procesu. Piedāvāju Habrakhabr lasÄ«tājiem ievadraksta par dokeru tulkojumu - "Izpratne par doku".

Kas ir dokers?

Docker ir atvērta platforma lietojumprogrammu izstrādei, piegādei un darbÄ«bai. Docker ir izstrādāts, lai ātrāk piegādātu jÅ«su lietojumprogrammas. Izmantojot docker, varat atsaistÄ«t savu lietojumprogrammu no infrastruktÅ«ras un uzskatÄ«t infrastruktÅ«ru kā pārvaldÄ«tu lietojumprogrammu. Docker palÄ«dz ātrāk nosÅ«tÄ«t kodu, ātrāk pārbaudÄ«t, ātrāk nosÅ«tÄ«t lietojumprogrammas un samazināt laiku no koda rakstÄ«Å”anas lÄ«dz koda izpildei. Docker to dara, izmantojot vieglu konteineru virtualizācijas platformu, izmantojot procesus un utilÄ«tas, kas palÄ«dz pārvaldÄ«t un piegādāt lietojumprogrammas.

Docker pamatā ļauj palaist gandrÄ«z jebkuru lietojumprogrammu, kas ir droÅ”i izolēta konteinerā. DroÅ”a izolācija ļauj vienā un tajā paŔā resursdatorā vienlaikus darbināt daudzus konteinerus. Konteinera vieglais raksturs, kas darbojas bez papildu hipervizora slodzes, ļauj iegÅ«t vairāk no aparatÅ«ras.

Konteinera virtualizācijas platforma un rīki var būt noderīgi Ŕādos gadījumos:

  • iesaiņojiet savu lietojumprogrammu (un izmantotās sastāvdaļas) doku konteineros;
  • Å”o konteineru izplatÄ«Å”ana un piegāde jÅ«su komandām izstrādei un testÄ“Å”anai;
  • izkārtojot Å”os konteinerus savās ražoÅ”anas vietās gan datu centros, gan mākoņos.

Kam es varu izmantot docker?

Ātri publicējiet savas lietojumprogrammas

Docker ir lieliski piemērots izstrādes cikla organizÄ“Å”anai. Docker ļauj izstrādātājiem palaist vietējos konteinerus ar lietojumprogrammām un pakalpojumiem. Kas vēlāk ļauj integrēties nepārtrauktas integrācijas un izvietoÅ”anas darbplÅ«smas procesā.

Piemēram, jÅ«su izstrādātāji raksta kodu lokāli un koplieto savu izstrādes steku (Docker attēlu kopu) ar kolēģiem. Kad viņi ir gatavi, viņi nosÅ«ta kodu un konteinerus uz testa vietu un veic visus nepiecieÅ”amos testus. No pārbaudes vietas viņi var nosÅ«tÄ«t kodu un attēlus uz ražoÅ”anu.

Vieglāka izlikŔana un atlocīŔana

Docker konteineru platforma ļauj ērti pārvietot jÅ«su kravnesÄ«bu. Docker konteineri var darboties jÅ«su vietējā datorā ā€” gan reālā, gan virtuālajā maŔīnā datu centrā vai mākonÄ«.

Docker pārnesamība un vieglais raksturs ļauj viegli dinamiski pārvaldīt jūsu darba slodzi. Varat izmantot docker, lai izvietotu vai izslēgtu savu lietojumprogrammu vai pakalpojumus. Docker ātrums ļauj to izdarīt gandrīz reāllaikā.

Lielākas slodzes un lielāka kravnesība

Docker ir viegls un ātrs. Tas nodroÅ”ina elastÄ«gu, rentablu alternatÄ«vu virtuālajām maŔīnām, kuru pamatā ir hipervizors. Tas ir Ä«paÅ”i noderÄ«gi augstas slodzes vidēs, piemēram, veidojot savu mākoni vai platformu kā pakalpojumu. Taču tas ir noderÄ«gi arÄ« mazām un vidējām lietojumprogrammām, ja vēlaties iegÅ«t vairāk no saviem resursiem.

Galvenās Docker sastāvdaļas

Docker sastāv no divām galvenajām sastāvdaļām:

  • Docker: atvērtā koda virtualizācijas platforma;
  • Docker Hub: mÅ«su platforma kā pakalpojums Docker konteineru izplatÄ«Å”anai un pārvaldÄ«bai.

Piezīme! Docker tiek izplatīts saskaņā ar Apache 2.0 licenci.

Docker arhitektūra

Docker izmanto klienta-servera arhitektÅ«ru. Docker klients sazinās ar Docker dēmonu, kas uzņemas jÅ«su konteineru izveidi, palaiÅ”anu un izplatÄ«Å”anu. Gan klients, gan serveris var darboties vienā sistēmā, jÅ«s varat savienot klientu ar attālo docker dēmonu. Klients un serveris sazinās, izmantojot ligzdu vai RESTful API.

Docker izpratne

Docker dēmons

Kā parādÄ«ts diagrammā, dēmons darbojas resursdatorā. Lietotājs tieÅ”i nesadarbojas ar serveri, bet izmanto klientu Å”im nolÅ«kam.

Docker klients

Docker klients, Docker programma, ir galvenā Docker saskarne. Tas saņem komandas no lietotāja un mijiedarbojas ar docker dēmonu.

Docker iekŔpuse

Lai saprastu, no kā sastāv docker, jums jāzina trīs komponenti:

  • attēlus
  • reÄ£istrs
  • Konteineri

Attēli

Docker attēls ir tikai lasāma veidne. Piemēram, attēlā var bÅ«t Ubuntu operētājsistēma ar Apache un tajā esoÅ”a lietojumprogramma. Attēli tiek izmantoti, lai izveidotu konteinerus. Docker ļauj ērti izveidot jaunus attēlus, atjaunināt esoÅ”os vai lejupielādēt attēlus, ko izveidojuÅ”i citi cilvēki. Attēli ir docker versijas sastāvdaļas.

Reģistrs

Docker reÄ£istrā tiek saglabāti attēli. Ir publiski un privāti reÄ£istri, no kuriem varat lejupielādēt vai augÅ”upielādēt attēlus. Publisks Docker reÄ£istrs ir Dokera centrmezgls. Tur ir glabāta milzÄ«ga attēlu kolekcija. Kā jÅ«s zināt, attēlus varat izveidot jÅ«s vai varat izmantot attēlus, ko radÄ«juÅ”i citi. ReÄ£istri ir izplatÄ«Å”anas sastāvdaļa.

Konteineri

Konteineri ir lÄ«dzÄ«gi direktorijiem. Konteineros ir viss, kas nepiecieÅ”ams, lai lietojumprogramma darbotos. Katrs konteiners ir izveidots no attēla. Konteinerus var izveidot, palaist, apturēt, migrēt vai dzēst. Katrs konteiners ir izolēts un nodroÅ”ina droÅ”u platformu lietojumprogrammai. Konteineri ir darba sastāvdaļas.

Tātad, kā darbojas Docker?

LÄ«dz Å”im mēs zinām, ka:

  • varam izveidot attēlus, kuros atrodas mÅ«su aplikācijas;
  • mēs varam izveidot konteinerus no attēliem, lai palaistu programmas;
  • Mēs varam izplatÄ«t attēlus, izmantojot Docker Hub vai citu attēlu reÄ£istru.

Apskatīsim, kā Ŕīs sastāvdaļas sader kopā.

Kā attēls darbojas?

Mēs jau zinām, ka attēls ir tikai lasāma veidne, no kuras tiek izveidots konteiners. Katrs attēls sastāv no lÄ«meņu kopas. Docker izmanto savienÄ«bas failu sistēma lai apvienotu Å”os lÄ«meņus vienā attēlā. SavienÄ«bas failu sistēma ļauj failiem un direktorijiem no dažādām failu sistēmām (dažādām filiālēm) pārredzami pārklāties, radot saskaņotu failu sistēmu.

Viens no iemesliem, kāpēc docker ir viegls, ir tas, ka tajā tiek izmantoti Ŕādi slāņi. Mainot attēlu, piemēram, atjauninot lietojumprogrammu, tiek izveidots jauns slānis. Tātad, neaizstājot visu attēlu vai nepārbÅ«vējot to, kā tas varētu bÅ«t jādara ar virtuālo maŔīnu, tiek pievienots vai atjaunināts tikai slānis. Un jums nav jāizplata viss jaunais attēls, tiek izplatÄ«ts tikai atjauninājums, tādējādi atvieglojot un ātrāk izplatot attēlus.

Katra attēla pamatā ir pamata attēls. Piemēram, ubuntu, Ubuntu bāzes attēls, vai fedora, Fedora izplatÄ«Å”anas pamata attēls. Varat arÄ« izmantot attēlus kā pamatu jaunu attēlu veidoÅ”anai. Piemēram, ja jums ir apache attēls, varat to izmantot kā pamata attēlu savām tÄ«mekļa lietojumprogrammām.

Piezīme! Docker parasti izvelk attēlus no Docker Hub reģistra.

Docker attēlus var izveidot no Å”iem pamata attēliem; mēs saucam Å”o attēlu izveides darbÄ«bas norādÄ«jumus. Katra instrukcija rada jaunu attēlu vai lÄ«meni. NorādÄ«jumi bÅ«s Ŕādi:

  • palaist komandu
  • pievienojot failu vai direktoriju
  • izveidojot vides mainÄ«go
  • norādÄ«jumi par to, ko palaist, palaižot Ŕī attēla konteineru

Å Ä«s instrukcijas tiek saglabātas failā Dockerfile. Dokers to lasa Dockerfile, kad veidojat attēlu, izpilda Ŕīs instrukcijas un atgriež galÄ«go attēlu.

Kā darbojas doka reģistrs?

Reģistrs ir docker attēlu krātuve. Kad attēls ir izveidots, varat to publicēt publiskajā Docker Hub reģistrā vai savā personīgajā reģistrā.

Izmantojot Docker klientu, varat meklēt jau publicētus attēlus un lejupielādēt tos savā doka iekārtā, lai izveidotu konteinerus.

Docker Hub nodroÅ”ina publiskas un privātas attēlu krātuves. Attēlu meklÄ“Å”ana un lejupielāde no publiskajām krātuvēm ir pieejama ikvienam. Privāto krātuvju saturs netiek iekļauts meklÄ“Å”anas rezultātos. Un tikai jÅ«s un jÅ«su lietotāji varat saņemt Å”os attēlus un izveidot no tiem konteinerus.

Kā darbojas konteiners?

Konteiners sastāv no operētājsistēmas, lietotāja failiem un metadatiem. Kā zināms, katrs konteiners ir izveidots no attēla. Å is attēls norāda dokerim, kas atrodas konteinerā, kāds process ir jāsāk, kad konteiners tiek startēts, un citus konfigurācijas datus. Docker attēls ir tikai lasāms. Kad docker startē konteineru, tas attēla augÅ”pusē izveido lasÄ«Å”anas/rakstÄ«Å”anas slāni (izmantojot savienojuma failu sistēmu, kā minēts iepriekÅ”), kurā var palaist lietojumprogrammu.

Kas notiek, kad konteiners sāk darboties?

Vai arī izmantojot programmu docker, vai izmantojot RESTful API, docker klients liek docker dēmonam palaist konteineru.

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

Apskatīsim Ŕo komandu. Klients tiek palaists, izmantojot komandu docker, ar opciju run, kurā teikts, ka tiks palaists jauns konteiners. Minimālās prasības konteinera palaiŔanai ir Ŕādi atribūti:

  • kuru attēlu izmantot konteinera izveidei. MÅ«su gadÄ«jumā ubuntu
  • komanda, kuru vēlaties palaist, kad konteiners tiek startēts. MÅ«su gadÄ«jumā /bin/bash

Kas notiek zem pārsega, kad izpildām Ŕo komandu?

Docker secībā veic Ŕādas darbības:

  • lejupielādē ubuntu attēlu: Docker pārbauda attēla pieejamÄ«bu ubuntu vietējā datorā un, ja tā tur nav, lejupielādējiet to no Dokera centrmezgls. Ja ir attēls, tas to izmanto, lai izveidotu konteineru;
  • izveido konteineru: kad attēls ir saņemts, docker to izmanto, lai izveidotu konteineru;
  • inicializē failu sistēmu un pievieno tikai lasÄ«Å”anas lÄ«meni: konteiners tiek izveidots failu sistēmā un attēls tiek pievienots tikai lasÄ«Å”anas lÄ«menim;
  • inicializē tÄ«klu/tiltu: izveido tÄ«kla saskarni, kas ļauj dokerim sazināties ar resursdatoru;
  • IP adreses iestatÄ«Å”ana: atrod un uzstāda adresi;
  • Sāk norādÄ«to procesu: palaiž jÅ«su lietojumprogrammu;
  • Apstrādā un ražo izvadi no jÅ«su lietojumprogrammas: savieno un reÄ£istrē jÅ«su lietojumprogrammas standarta ievades, izvades un kļūdu straumi, lai jÅ«s varētu izsekot lietojumprogrammas veiktspējai.

Tagad jums ir darba konteiners. Varat pārvaldīt savu konteineru, mijiedarboties ar savu lietojumprogrammu. Kad nolemjat apturēt lietojumprogrammu, izdzēsiet konteineru.

Izmantotās tehnoloģijas

Docker ir rakstÄ«ts Go un izmanto dažus Linux kodola lÄ«dzekļus, lai ieviestu iepriekÅ” minēto funkcionalitāti.

Vārdtelpas

Docker izmanto tehnoloÄ£iju namespaces organizēt izolētas darbvietas, kuras mēs saucam par konteineriem. Kad mēs startējam konteineru, docker Å”im konteineram izveido nosaukumvietu kopu.

Tādējādi tiek izveidots izolēts slānis, kurā katrs konteinera aspekts darbojas savā nosaukumvietā un kam nav piekļuves ārējai sistēmai.

Dažu docker izmantoto nosaukumvietu saraksts:

  • pid: izolēt procesu;
  • tÄ«kls: tÄ«kla saskarņu pārvaldÄ«bai;
  • ipc: lai pārvaldÄ«tu IPC resursus. (ICP: InterProccess Communication);
  • mnt: pārvaldÄ«t stiprinājuma punktus;
  • utc: lai izolētu kodolu un kontrolētu versiju Ä£enerÄ“Å”anu (UTC: Unix laika koplietoÅ”anas sistēma).

Kontroles grupas

Docker izmanto arÄ« tehnoloÄ£iju cgroups vai kontroles grupas. Lietojumprogrammas izolētas palaiÅ”anas atslēga ir nodroÅ”ināt lietojumprogrammu tikai tos resursus, kurus vēlaties nodroÅ”ināt. Tas nodroÅ”ina, ka konteineri bÅ«s labi kaimiņi. VadÄ«bas grupas ļauj koplietot pieejamos aparatÅ«ras resursus un, ja nepiecieÅ”ams, iestatÄ«t ierobežojumus un ierobežojumus. Piemēram, ierobežojiet konteinera iespējamo atmiņas apjomu.

Savienības failu sistēma

Union File Sysem vai UnionFS ir failu sistēma, kas darbojas, veidojot slāņus, padarot to ļoti vieglu un ātru. Docker izmanto UnionFS, lai izveidotu blokus, no kuriem tiek veidots konteiners. Docker var izmantot vairākus UnionFS variantus, tostarp: AUFS, btrfs, vfs un DeviceMapper.

Konteineru formāti

Docker apvieno Å”os komponentus iesaiņojumā, ko mēs saucam par konteinera formātu. Tiek izsaukts noklusējuma formāts libcontainer. Docker atbalsta arÄ« tradicionālo konteinera formātu operētājsistēmā Linux, izmantojot LXC. Nākotnē Docker var atbalstÄ«t citus konteineru formātus. Piemēram, integrējot ar BSD Jails vai Solaris zonām.

Avots: www.habr.com

Pievieno komentāru