Ukuqonda i-Docker

Sekuphele izinyanga ezimbalwa ngisebenzisa i-Docker ukuhlela inqubo yokuthuthukisa/yokulethwa kwamaphrojekthi wewebhu. Nginikeza abafundi be-Habrakhabr ukuhunyushwa kwendatshana eyisingeniso mayelana ne-docker - "Ukuqonda i-docker".

Yini i-docker?

I-Docker iyinkundla evulekile yokuthuthukisa, ukuletha, nokusebenza kwezinhlelo zokusebenza. I-Docker yakhelwe ukuletha izinhlelo zakho zokusebenza ngokushesha. Nge-docker, ungakwazi ukuhlukanisa uhlelo lwakho lokusebenza kwingqalasizinda yakho futhi uphathe ingqalasizinda njengohlelo oluphethwe. I-Docker ikusiza ukuthi uthumele ikhodi yakho ngokushesha, uhlole ngokushesha, uthumele izinhlelo zokusebenza ngokushesha, futhi unciphise isikhathi phakathi kwekhodi yokubhala nekhodi esebenzayo. I-Docker ikwenza lokhu ngenkundla ye-virtualization yeziqukathi ezingasindi, isebenzisa izinqubo nezinsiza ezikusiza ukuthi uphathe futhi usingathe izinhlelo zakho zokusebenza.

Emgogodleni wayo, i-docker ikuvumela ukuthi usebenzise cishe noma yiluphi uhlelo lokusebenza, uhlukaniswe ngokuphephile esitsheni. Ukuhlukaniswa okuvikelekile kukuvumela ukuthi usebenzise iziqukathi eziningi kumsingathi ofanayo ngesikhathi esisodwa. Imvelo engasindi yesiqukathi, esebenza ngaphandle komthwalo owengeziwe we-hypervisor, ikuvumela ukuthi uthole okwengeziwe ku-hardware yakho.

Inkundla ye-virtualization yesiqukathi namathuluzi angaba usizo kulezi zimo ezilandelayo:

  • ukupakisha uhlelo lwakho lokusebenza (kanye nezingxenye ozisebenzisayo) ezitsheni ze-docker;
  • ukusatshalaliswa nokulethwa kwala mabhokisi emaqenjini enu ukuze athuthukiswe futhi ahlolwe;
  • ukubeka lezi ziqukathi kumasayithi akho okukhiqiza, kokubili kuzikhungo zedatha nasemafwini.

Yini engingayisebenzisela i-docker?

Shicilela ngokushesha izinhlelo zakho zokusebenza

I-Docker inhle ekuhleleni umjikelezo wokuthuthukiswa. I-Docker ivumela abathuthukisi ukuthi basebenzise iziqukathi zasendaweni ngezinhlelo zokusebenza namasevisi. Okukuvumela kamuva ukuthi uhlanganise nenqubo yokuhlanganiswa okuqhubekayo nokuhamba komsebenzi wokusabalalisa.

Isibonelo, onjiniyela bakho babhala ikhodi endaweni futhi babelane ngesitaki sabo sokuthuthukisa (iqoqo lezithombe ze-Docker) nozakwabo. Uma sebelungile, baphusha ikhodi neziqukathi endaweni yokuhlola bese benza noma yiziphi izivivinyo ezidingekayo. Kusukela kusayithi lokuhlola, bangathumela ikhodi nezithombe ekukhiqizeni.

Ukubeka kalula nokuvula

Inkundla ye-docker-based-container-based yenza kube lula ukufaka inkokhelo yakho. Iziqukathi ze-Docker zingasebenza emshinini wangakini, kungaba okwangempela noma emshinini obonakalayo esikhungweni sedatha, noma emafini.

Ukuphatheka kanye nemvelo engasindi ye-docker yenza kube lula ukuphatha umthwalo wakho wokusebenza. Ungasebenzisa i-docker ukusebenzisa noma ukuvala uhlelo lwakho lokusebenza noma amasevisi. Ijubane le-docker livumela lokhu ukuthi kwenziwe eduze nesikhathi sangempela.

Imithwalo ephezulu kanye nemithwalo ekhokhelwayo eyengeziwe

I-Docker ilula futhi iyashesha. Inikeza enye indlela eqinile, engabizi kakhulu kunemishini ebonakalayo esekelwe ku-hypervisor. Iwusizo ikakhulukazi ezindaweni ezinomthwalo ophezulu, isibonelo, lapho udala ifu lakho noma inkundla-njengesevisi. Kodwa futhi luwusizo ezinhlelweni ezincane neziphakathi uma ufuna ukuthola okwengeziwe ezinsizeni onazo.

Izingxenye Eziyinhloko ze-Docker

I-Docker iqukethe izingxenye ezimbili eziyinhloko:

  • I-Docker: inkundla ye-virtualization yomthombo ovulekile;
  • I-Docker Hub: Inkundla yethu-njengesevisi yokusabalalisa nokuphatha iziqukathi ze-Docker.

Qaphela! I-Docker isatshalaliswa ngaphansi kwelayisensi ye-Apache 2.0.

I-Docker Architecture

I-Docker isebenzisa i-architecture ye-client-server. Iklayenti le-Docker lixhumana ne-Docker daemon, ethatha umthwalo wokudala, ukusebenzisa, nokusabalalisa iziqukathi zakho. Kokubili iklayenti neseva zingasebenza kusistimu efanayo, ungakwazi ukuxhuma iklayenti ku-daemon yedokha ekude. Iklayenti neseva baxhumana ngesokhethi noma nge-RESTful API.

Ukuqonda i-Docker

I-docker daemon

Njengoba kukhonjisiwe kumdwebo, i-daemon isebenza emshinini wokusingathwa. Umsebenzisi akaxhumani neseva ngokuqondile, kodwa usebenzisa iklayenti kulokhu.

Iklayenti le-Docker

Iklayenti le-Docker, uhlelo lwe-docker, luyisixhumi esibonakalayo esikhulu ku-Docker. Ithola imiyalo evela kumsebenzisi futhi ixhumana ne-docker daemon.

Idokodo langaphakathi

Ukuze uqonde ukuthi i-docker iqukethe ini, udinga ukwazi ngezinto ezintathu:

  • izithombe
  • ukubhalisa
  • iziqukathi

Izithombe

Isithombe se-Docker siyisifanekiso sokufunda kuphela. Isibonelo, isithombe singaqukatha isistimu yokusebenza ye-Ubuntu ene-Apache kanye nohlelo lokusebenza kuyo. Izithombe zisetshenziselwa ukwakha iziqukathi. I-Docker yenza kube lula ukwakha izithombe ezintsha, ubuyekeze ezikhona, noma ungalanda izithombe ezidalwe abanye abantu. Izithombe ziyizingxenye zokwakhiwa kwe-docker.

Ukubhalisa

I-Docker registry igcina izithombe. Kukhona okubhaliselwe okusesidlangalaleni nokuyimfihlo ongalanda noma ulayishe kuzo izithombe. I-Public Docker registry Ihabhu ledokodo. Kukhona iqoqo elikhulu lezithombe ezigcinwe lapho. Njengoba wazi, izithombe zingadalwa nguwe noma ungasebenzisa izithombe ezidalwe abanye. Amarejista ayingxenye yokusabalalisa.

Izitsha

Iziqukathi ziyafana nezinkomba. Iziqukathi ziqukethe konke okudingwa uhlelo lokusebenza ukuze lusebenze. Isiqukathi ngasinye sidalwe kusuka esithombeni. Iziqukathi zingadalwa, ziqalwe, zimiswe, zithuthwe noma zisuswe. Isitsha ngasinye sihlukanisiwe futhi sinikeza inkundla evikelekile yohlelo lokusebenza. Iziqukathi ziyizingxenye zomsebenzi.

Ngakho-ke i-Docker isebenza kanjani?

Kuze kube manje siyazi ukuthi:

  • singakha izithombe lapho izicelo zethu zitholakala khona;
  • singakha iziqukathi kusuka ezithombeni ukuze sisebenzise izinhlelo zokusebenza;
  • Singasabalalisa izithombe nge-Docker Hub noma enye indawo yokubhalisa izithombe.

Ake sibone ukuthi lezi zingxenye zihlangana kanjani.

Sisebenza kanjani isithombe?

Sesiyazi kakade ukuthi isithombe siyisifanekiso sokufunda kuphela okuvela kuso isiqukathi. Isithombe ngasinye siqukethe isethi yamazinga. I-Docker isebenzisa uhlelo lwefayela lenyunyana ukuhlanganisa la mazinga abe yisithombe esisodwa. Isistimu yefayela yeNyunyana ivumela amafayela nezinkomba ezivela ezinhlelweni zamafayela ahlukene (amagatsha ahlukene) ukuthi adlulelane ngokusobala, adale isistimu yefayela ehambisanayo.

Esinye sezizathu zokuthi kungani i-docker ingasindi yingoba isebenzisa izendlalelo ezinjengalezi. Uma ushintsha isithombe, njengokubuyekeza uhlelo lokusebenza, ungqimba olusha luyakhiwa. Ngakho-ke, ngaphandle kokushintsha isithombe sonke noma ukusivusa, njengoba kungase kudingeke ukwenze ngomshini obonakalayo, ungqimba kuphela olungezwa noma olubuyekeziwe. Futhi akudingekile ukuthi usabalalise sonke isithombe esisha, isibuyekezo kuphela esisatshalaliswa, okwenza kube lula futhi kusheshe ukusabalalisa izithombe.

Enhliziyweni yazo zonke izithombe kunesithombe esiyisisekelo. Isibonelo, ubuntu, isithombe esiyisisekelo se-Ubuntu, noma i-fedora, isithombe esiyisisekelo sokusatshalaliswa kwe-Fedora. Ungasebenzisa futhi izithombe njengesisekelo sokudala izithombe ezintsha. Isibonelo, uma unesithombe se-apache, ungasisebenzisa njengesithombe esiyisisekelo sezinhlelo zakho zokusebenza zewebhu.

Qaphela! I-Docker ivamise ukudonsa izithombe kurejista ye-Docker Hub.

Izithombe ze-Docker zingadalwa kusuka kulezi zithombe eziyisisekelo; sibiza izinyathelo zokudala lezi zithombe imiyalelo. Umyalelo ngamunye udala isithombe esisha noma ileveli. Imiyalo izoba yilena elandelayo:

  • gijima umyalo
  • ukwengeza ifayela noma uhla lwemibhalo
  • ukudala i-variable yemvelo
  • imiyalelo yokuthi yini okufanele isetshenziswe uma isiqukathi salesi sithombe sethulwa

Le miyalo igcinwe efayeleni Dockerfile. UDocker ufunda lokhu Dockerfile, uma wakha isithombe, yenza le miyalo futhi ibuyisela isithombe sokugcina.

Isebenza kanjani i-docker registry?

I-registry iyinqolobane yezithombe ze-docker. Uma isithombe sesidaliwe, ungasishicilela kurejista yomphakathi ye-Docker Hub noma ekubhaliseni kwakho siqu.

Ngeklayenti le-docker, ungasesha izithombe esezishicilelwe futhi uzilande emshinini wakho we-docker ukuze udale iziqukathi.

I-Docker Hub inikeza amakhosombe ezithombe zomphakathi neziyimfihlo. Ukusesha nokulanda izithombe kumakhosombe asesidlangalaleni kutholakala kuwo wonke umuntu. Okuqukethwe okokugcina okuyimfihlo akufakiwe emiphumeleni yosesho. Futhi nguwe kuphela nabasebenzisi bakho eningathola lezi zithombe futhi nidale iziqukathi kusuka kuzo.

Sisebenza kanjani isiqukathi?

Isiqukathi siqukethe isistimu yokusebenza, amafayela omsebenzisi, nemethadatha. Njengoba sazi, isiqukathi ngasinye sidalwe sisuka esithombeni. Lesi sithombe sitshela i-docker ukuthi yini ekusiqukathi, iyiphi inqubo okufanele iqale, uma isiqukathi siqala, kanye nenye idatha yokumisa. Isithombe se-Docker sifundwa kuphela. Uma i-docker iqala isiqukathi, yakha isendlalelo sokufunda/sokubhala phezu kwesithombe (isebenzisa isistimu yefayela lenyunyana njengoba kushiwo ngaphambili) lapho isicelo singasebenza khona.

Kwenzekani lapho isiqukathi siqala?

Noma usebenzisa uhlelo docker, noma kusetshenziswa i-RESTful API, iklayenti ledokhu litshela i-docker daemon ukuthi iqale isiqukathi.

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

Ake sibheke lo myalo. Iklayenti iqaliswa kusetshenziswa umyalo docker, ngenketho run, ethi kuzokwethulwa isiqukathi esisha. Izidingo ezincane zokuqhuba isiqukathi yilezi zibaluli ezilandelayo:

  • yisiphi isithombe ongasisebenzisa ukuze udale isiqukathi. Esimeni sethu ubuntu
  • umyalo ofuna ukuwusebenzisa lapho isiqukathi siqaliswa. Esimeni sethu /bin/bash

Kwenzekani ngaphansi kwesivalo lapho sisebenzisa lo myalo?

I-Docker, ngokulandelana, yenza okulandelayo:

  • landa isithombe sobuntu: idocker ihlola ukutholakala kwesithombe ubuntu emshinini wendawo, futhi uma ingekho, yilande kuyo Ihabhu ledokodo. Uma kunesithombe, sisisebenzisa ukwakha isitsha;
  • idala isiqukathi: lapho isithombe sitholwa, i-docker isisebenzisa ukwakha isitsha;
  • iqalisa uhlelo lwefayela futhi ikhweze izinga lokufunda kuphela: isitsha senziwa ohlelweni lwefayela futhi isithombe sengezwe ezingeni lokufunda kuphela;
  • iqalisa inethiwekhi/ibhuloho: idala i-interface yenethiwekhi evumela ukuthi i-docker ixhumane nomshini wokusingatha;
  • Ukusetha ikheli le-IP: uthola bese usetha ikheli;
  • Iqala inqubo eshiwo: yethula isicelo sakho;
  • Icubungula futhi ikhiqize okukhiphayo kuhlelo lwakho lokusebenza: ixhuma futhi iloge okokufaka okujwayelekile kohlelo lwakho lokusebenza, okukhiphayo, nokusakaza kwephutha ukuze ukwazi ukulandelela ukuthi uhlelo lwakho lokusebenza lusebenza kanjani.

Manje usunesiqukathi esisebenzayo. Ungaphatha isiqukathi sakho, uhlanganyele nohlelo lwakho lokusebenza. Uma unquma ukumisa isicelo, susa isitsha.

Ubuchwepheshe obusetshenzisiwe

I-Docker ibhalwe ku-Go futhi isebenzisa ezinye izici ze-Linux kernel ukusebenzisa ukusebenza okungenhla.

Izikhala zamagama

I-Docker isebenzisa ubuchwepheshe namespaces ukuhlela izindawo zokusebenza ezingazodwa, esizibiza ngeziqukathi. Uma siqala isiqukathi, i-docker idala isethi yezikhala zamagama zaleso siqukathi.

Lokhu kudala isendlalelo esingasodwa, isici ngasinye sesiqukathi esisebenza endaweni yaso futhi singakwazi ukufinyelela kusistimu yangaphandle.

Uhlu lwezinye izikhala zamagama ezisetshenziswa yi-docker:

  • I-pid: ukuhlukanisa inqubo;
  • inetha: zokuphatha inethiwekhi;
  • ipc: ukuphatha izinsiza ze-IPC. (I-ICP: I-InterProccess Communication);
  • mnt: ukuphatha izindawo zokukhweza;
  • utc: ukuhlukanisa i-kernel nokulawula inguqulo yenguqulo (UTC: Uhlelo lokwabelana kwesikhathi lwe-Unix).

Lawula amaqembu

I-Docker iphinde isebenzisa ubuchwepheshe cgroups noma lawula amaqembu. Isihluthulelo sokuqalisa uhlelo lokusebenza ngasodwa ukuhlinzeka uhlelo lokusebenza ngezisetshenziswa ofuna ukuzinikeza kuphela. Lokhu kuqinisekisa ukuthi iziqukathi zizoba omakhelwane abalungile. Amaqembu okulawula akuvumela ukuthi wabelane ngezinsiza ezitholakalayo zehadiwe futhi, uma kunesidingo, ubeke imikhawulo nemikhawulo. Isibonelo, khawula inani lememori elingaba khona lesiqukathi.

I-Union File System

I-Union File System noma i-UnionFS iyisistimu yefayela esebenza ngokwakha izendlalelo, iyenze ibe lula kakhulu futhi isheshe. I-Docker isebenzisa i-UnionFS ukwakha amabhlogo okwakhiwa kuwo isiqukathi. I-Docker ingasebenzisa okuhlukile okuningana kwe-UnionFS okuhlanganisa: AUFS, btrfs, vfs kanye ne-DeviceMapper.

Amafomethi Wesitsha

I-Docker ihlanganisa lezi zingxenye zibe i-wrapper esiyibiza ngokuthi ifomethi yesiqukathi. Ifomethi ezenzakalelayo ibizwa ngokuthi libcontainer. I-Docker futhi isekela ifomethi yesiqukathi yendabuko ku-Linux isebenzisa I-LXC. Ngokuzayo, i-Docker ingase isekele amanye amafomethi esiqukathi. Isibonelo, ukuhlanganisa namaJele e-BSD noma i-Solaris Zones.

Source: www.habr.com

Engeza amazwana