Ngaba iDocker yinto yokudlala okanye hayi? Okanye iseyinyani?

Sawubona wonke umntu!

Ndifuna ngokwenene ukuya ngqo kwisihloko, kodwa kuya kulunga ngakumbi ukubalisa kancinci malunga nebali lam:

ukungena

Ndingumdwelisi wenkqubo onamava ekuphuhliseni izicelo zephepha elilodwa elingaphambili, i-scala/java kunye ne-nodejs kumncedisi.

Ixesha elide (ngokuqinisekileyo isibini okanye iminyaka emithathu), bendinoluvo lokuba iDocker yimana evela ezulwini kwaye ngokubanzi sisixhobo esipholileyo kwaye wonke umphuhlisi kufuneka akwazi ukuyisebenzisa. Kwaye ukusuka koku kulandela ukuba wonke umphuhlisi kufuneka abe ne-Docker efakwe kumatshini wabo wasekhaya. Kuthekani ngoluvo lwam, jonga ngezithuba ezifakwe kwi-hh enye. Yonke yesibini iqulethe ukukhankanywa kwe-docker, kwaye ukuba yeyakho, le iya kuba lilungelo lakho lokukhuphisana πŸ˜‰

Endleleni yam, ndadibana nabantu abaninzi, benesimo sabo sengqondo esahlukileyo malunga neDocker kunye ne-ecosystem yayo. Abanye bathi le yinto efanelekileyo eqinisekisa ukusebenza kweqonga elinqamlezileyo. Eyesibini ayizange iqonde ukuba kutheni kufuneka baqhube kwiikhonteyina kwaye yintoni inzuzo eya kuvela kuyo, eyesithathu ayizange ikhathale kwaye ayizange ikhathaze (babhala ikhowudi bagoduka - ndiyabamonela, ngo indlela :)

Izizathu zokusetyenziswa

Kutheni ndisebenzise idocker? Mhlawumbi kungenxa yezi zizathu zilandelayo:

  • ukuqaliswa kwesiseko sedatha, i-99% yezicelo ziyazisebenzisa
  • indulula i-nginx yonikezelo lwangaphambili kunye ne-proxy ukuya ngasemva
  • Ungapakisha isicelo kumfanekiso wedocker, ngale ndlela isicelo sam siyakusebenza naphi na apho idocker ikhona, ingxaki yonikezelo isonjululwe ngokukhawuleza.
  • ukufunyanwa kwenkonzo ngaphandle kwebhokisi, ungenza ii-microservices, isikhongozeli ngasinye (esidityaniswe kuthungelwano oluqhelekileyo) sinokufikelela ngokulula kwesinye nge-alias, elula kakhulu.
  • Kuyamnandi ukwenza isitya kwaye "udlale" kuyo.

Into endihlala ndingayithandi malunga ne-docker:

  • Ukuze isicelo sam sisebenze, ndifuna iDocker ngokwayo kumncedisi. Kutheni ndifuna oku ukuba izicelo zam zisebenza kwi-jre okanye kwi-nodejs kwaye imeko-bume yazo sele ikumncedisi?
  • ukuba ndifuna ukuqhuba umfanekiso wam (wabucala) owakhiwe ekuhlaleni kwiseva ekude, ngoko ndifuna indawo yam yokugcina i-docker, ndifuna ukuba irejistri isebenze kwenye indawo kwaye kufuneka ndiqwalasele i-https, kuba i-docker cli isebenza kuphela kwi-https. Oh damn... kukho iinketho, kunjalo, ukugcina umfanekiso ekuhlaleni ngokusebenzisa docker save kwaye uthumele nje umfanekiso nge-scp ... Kodwa loo nto ininzi yokunyakaza komzimba. Kwaye ngaphandle koko, kubonakala ngathi sisisombululo "somsimelelo" de kuvele indawo yakho yokugcina
  • docker-compose. Ifuneka kuphela ukuqhuba izikhongozeli. Kuko konke. Akanakwenza enye into. Docker-compose ineqela leenguqulelo zeefayile zayo, i-syntax yayo. Nokuba ichazwa kangakanani na, andifuni ukufunda amaxwebhu abo. Andiyi kuyidinga kwenye indawo.
  • xa usebenza kwiqela, uninzi lwabantu lubhala iDockerfile ngokugoso kakhulu, abayiqondi indlela egcinwe ngayo, yongeza yonke into abayifunayo kwaye ayifuni kumfanekiso, ilifa kwimifanekiso engekho kwiDockerhub okanye kwindawo yokugcina yabucala, yenza ezinye. docker-compose iifayile ezinogcino lwedatha kwaye akukho nto iqhubekayo. Kwangelo xesha, abaphuhlisi babhengeza ngebhongo ukuba uDocker upholile, yonke into iyasebenza ekuhlaleni, kwaye uHR ubhala ngokubalulekileyo kwisithuba esithi: "Sisebenzisa iDocker kwaye sifuna umgqatswa onamava omsebenzi."
  • Ndihlala ndikhathazwa zingcinga malunga nokunyusa yonke into eDocker: postgresql, kafka, redis. Kulusizi ukuba ayizizo zonke izinto ezisebenza kwizikhongozeli, ayizizo zonke izinto ezilula ukuyicwangcisa nokusebenza. Oku kuxhaswa ngabaphuhlisi beqela lesithathu, kwaye kungekhona ngabathengisi ngokwabo. Kwaye ngendlela, umbuzo uvela ngokukhawuleza: abathengisi abazikhathazi ngokugcina iimveliso zabo kwi-Docker, kutheni le nto, mhlawumbi bayayazi into?
  • Umbuzo uhlala uvela malunga nokuphikelela kwedatha yesikhongozeli. kwaye ke ucinga ukuba, ndinganyusa nje ulawulo lomkhosi okanye ndenze umthamo wedocker okanye ndenze isikhongozeli sedatha esikhoyo ngoku deprecated? Ukuba ndinyusa uvimba weefayili, ngoko ke kufuneka ndiqinisekise ukuba i-uid kunye negid yomsebenzisi kwisikhongozeli ihambelana ne id yomsebenzisi owaphehlelela isikhongozeli, kungenjalo iifayile ezenziwe sisiqulathi ziyakwenziwa ngamalungelo engcambu. Ukuba ndisebenzise volume ke idata iyakwenziwa ngokulula kwezinye /usr/* kwaye kuya kubakho ibali elifanayo nge-uid kunye ne-gid njengakwimeko yokuqala. Ukuba usungula icandelo leqela lesithathu, kufuneka ufunde amaxwebhu kwaye ujonge impendulo yombuzo: "kweziphi izikhokelo zekhonteyina elibhala kuzo iifayile?"

Bendihlala ndingayithandi inyani yokuba kufuneka ndikhe ndithethe neDocker ixesha elide kwinqanaba lokuqala: Ndicinge indlela yokuphehlelela izikhongozeli, yeyiphi imifanekiso enokumiliselwa kuyo, ndenze iiMakefiles eziqulathe iziteketiso kwimiyalelo emide yeDocker. Ndandiyithiyile i-docker-compose kuba ndandingafuni ukufunda esinye isixhobo kwi-docker ecosystem. KUNYE docker-compose up Yayindikhathaza ke loo nto, ingakumbi ukuba basadibana apho build ulwakhiwo, endaweni yemifanekiso esele idityanisiwe. Ekuphela kwento ebendiyifuna kukwenza imveliso ngokufanelekileyo nangokukhawuleza. Kodwa andikwazanga ukufumana indlela yokusebenzisa i-docker.

Ukwazisa Ukuqiqa

Kutshanje (kwiinyanga ezintathu ezidlulileyo), ndisebenze kunye neqela le-DevOps, phantse lonke ilungu elinesimo sengqondo esibi kwiDocker. Ngenxa yezizathu:

  • docker ilawula iptables (nangona unokuyikhubaza kwi-daemon.json)
  • idocker yibuggy kwaye asiyi kuyiqhuba kwimveliso
  • ukuba i-docker daemon iyantlitheka, zonke izikhongozeli ezineziseko zophuhliso ziyawa ngokufanelekileyo
  • akukho mfuneko ye-docker
  • kutheni docker ukuba kukho Ansible kunye noomatshini virtual

Kwasemsebenzini ofanayo, ndaqhelana nesinye isixhobo - Ansible. Ndakhe ndeva ngayo, kodwa andizange ndizame ukubhala iincwadi zam zokudlala. Kwaye ngoku ndaqala ukubhala imisebenzi yam kwaye umbono wam watshintsha ngokupheleleyo! Kuba ndiye ndaqaphela: I-Ansible ineemodyuli zokuqhuba izikhongozeli ezifanayo ze-docker, ukwakhiwa kwemifanekiso, uthungelwano, njl. Uyolo lwam lwalungenamida - ndifumene isixhobo esise-NORMAL kwaye ndalahla i-Makefile yam kunye neefayile zokuqamba i-docker, zatshintshwa ngemisebenzi yaml. Ikhowudi yancitshiswa ngokusebenzisa izakhiwo ezifana loop, when, Njl

I-Docker yokusebenzisa amacandelo eqela lesithathu elinje ngoovimba beenkcukacha

Kutshanje ndiye ndaqhelana neetonela ze-ssh. Kwavela ukuba kulula kakhulu "ukudlulisa" i-port ye-server ekude kwi-port yendawo. Iseva ekude inokuba nokuba ngumatshini efini okanye umatshini wenyani osebenza kwiVirtualBox. Ukuba umlingane wam okanye ndifuna isiseko sedatha (okanye enye icandelo lesithathu), sinokuqala umncedisi ngeli candelo kwaye siyicime xa umncedisi engafunwa. Ukuhanjiswa kwezibuko kunika isiphumo esifanayo njengesiseko sedatha esisebenza kwisingxobo sedokhi.

Lo myalelo udlulisela izibuko lam lendawo kwiseva ekude eqhuba i-postgresql:

ssh -L 9000: localhost:5432 [imeyile ikhuselwe]

Ukusebenzisa iseva ekude kusombulula ingxaki ngophuhliso lweqela. Umncedisi onjalo unokusetyenziswa ngabaphuhlisi abaninzi ngexesha elinye; akufuneki ukuba babe nakho ukucwangcisa i-postgresql, ukuqonda i-Docker kunye nezinye izinto ezintsonkothileyo. Kwiseva ekude, ungafaka i-database efanayo kwi-Docker ngokwayo, ukuba kunzima ukufaka inguqulelo ethile. Bonke abaphuhlisi abafunekayo kukubonelela ngofikelelo lwe-ssh!

Kutshanje ndifunde ukuba iitonela ze-SSH zinomsebenzi omncinci weVPN eqhelekileyo! Unokufakela ngokulula i-OpenVPN okanye okunye ukuphunyezwa kweVPN, usete isiseko kwaye uyinike abaphuhlisi ukuba bayisebenzise. Oku kuhle kakhulu!

Ngethamsanqa, i-AWS, iGoogleCloud kunye nabanye bakunika unyaka wokusetyenziswa simahla, ke basebenzise! Zingabizi kakhulu ukuba uyazicima xa zingasetyenziswa. Bendihlala ndizibuza ukuba kutheni ndiza kufuna iseva ekude njenge-gcloud, kubonakala ngathi ndiyifumene.

Njengomatshini wenyani wendawo, ungasebenzisa iAlpine efanayo, esetyenziswa ngokusebenzayo kwizikhongozeli zedokhi. Ewe, okanye ezinye izinikezelo ezikhaphukhaphu ukwenza umatshini uqalise ngokukhawuleza.

Umgca osezantsi: unako kwaye kufuneka usebenzise i-database kunye nezinye izinto eziluncedo kwiziseko ezikude okanye kwibhokisi yenyani. Andifuni docker ngezi njongo.

Kancinci malunga nemifanekiso ye-docker kunye nokuhanjiswa

Sele ndibhalile inqaku apho bendifuna ukuveza ukuba ukusebenzisa imifanekiso ye-docker akuniki siqinisekiso. Imifanekiso yeDocker iyafuneka kuphela ukwenza isikhongozeli sedocker. Ukuba uphucula kumfanekiso we-docker, emva koko uphucula ukusebenzisa izikhongozeli ze-docker kwaye uya kuzisebenzisa kuphela.

Ngaba ukhe wabona naphina apho abaphuhlisi besoftware bafaka iimveliso zabo kuphela kumfanekiso wedokhi?
Isiphumo seemveliso ezininzi ziifayile zokubini zeqonga elithile; zongezwa nje kumfanekiso wedocker, ozuzwe njengelifa kwiqonga elifunwayo. Ngaba ukhe wazibuza ukuba kutheni kukho imifanekiso emininzi efanayo kwi-dockerhub? Faka nginx umzekelo, uya kubona imifanekiso eyi-100500 esuka kubantu abohlukeneyo. Aba bantu khange baphuhlise i-nginx ngokwayo, bongeze nje i-nginx esemthethweni kumfanekiso wabo we-docker kwaye bawunonge ngoomatshini babo ukuze kube lula ukusungula izikhongozeli.

Ngokubanzi, unokuyigcina kwi tgz, ukuba umntu ufuna ukuyiqhuba kwidocker, ngoko ke mabadibanise i-tgz kwiDockerfile, bazuze ilifa kwindawo efunekayo kwaye benze iibhanti ezongezelelweyo ezingatshintshiyo isicelo ngokwaso kwi tgz. Nabani na oya kwenza umfanekiso we-docker uya kuyazi ukuba yintoni i-tgz kwaye yintoni ekufuneka asebenze ngayo. Le yindlela endisebenzisa ngayo i-docker apha

Umgca osezantsi: Andiyifuni irejistri ye-docker, ndiya kusebenzisa uhlobo oluthile lwe-S3 okanye ukugcinwa kwefayile njenge-google drive / dropbox

Docker kwiCI

Zonke iinkampani endizisebenzeleyo ziyafana. Zidla ngokuba yigrosari. Oko kukuthi, banesicelo esinye, isitaki esinye setekhnoloji (kakuhle, mhlawumbi isibini okanye iilwimi ezintathu zokucwangcisa).

Ezi nkampani zisebenzisa i-docker kwiiseva zabo apho inkqubo yeCI iqhuba. Umbuzo: Kutheni ufuna ukwakha iiprojekthi kwisitya sedocker kwiiseva zakho? Kutheni ungalungiseleli nje indawo yokwakha, umzekelo, bhala i-Ansible playbook eya kufaka iinguqulelo eziyimfuneko ze-nodejs, php, jdk, ikopi ye-ssh izitshixo, njl. kumncedisi apho ukwakhiwa kuya kwenzeka?

Ngoku ndiyaqonda ukuba oku kuzidubula ezinyaweni, kuba i-docker ayizisi nayiphi na inzuzo ngokuzihlukanisa kwayo. Iingxaki endidibene nazo neCI kwidocker:

  • kwakhona ufuna umfanekiso wedocker ukuze wakhe. kufuneka ujonge umfanekiso okanye ubhale eyakho idockerfile.
  • I-90% oyifunayo ukuthumela ezinye izitshixo ze-ssh, idatha eyimfihlo ongafuni ukuyibhala kumfanekiso wedoki.
  • isikhongozeli siyadalwa kwaye siyafa, zonke ii-cache zilahlekile kunye nayo. isakhiwo esilandelayo siya kukhuphela kwakhona zonke izinto ezixhomekeke kwiprojekthi, edla ixesha kwaye ingasebenzi, kwaye ixesha yimali.

Abaphuhlisi abazakhi iiprojekthi kwizikhongozeli zedokhi (ndakhe ndangumntu onjalo, ngokwenene, ndiyazisola kwi-xD yexesha elidlulileyo). Kwi-java kuyenzeka ukuba ube neenguqulelo ezininzi kwaye uzitshintshe ngomyalelo omnye kulowo ufunayo ngoku. Kuyafana nakwii-nodejs, kukho i-nvm.

isiphelo

Ndiyakholelwa ukuba i-docker sisixhobo esinamandla kakhulu kwaye siguquguqukayo, le yi-drawback yayo (ivakala ingaqhelekanga, ewe). Ngoncedo lwayo, iinkampani zinokungena lula kuyo kwaye ziyisebenzise apho ifuneka kwaye ingafuneki. Abaphuhlisi baqalisa izitya zabo, ezinye zeemeko zabo, emva koko zonke zihamba kakuhle kwi-CI kunye nemveliso. Iqela le-DevOps libhala uhlobo oluthile lwekhowudi ukuqhuba ezi zikhongozeli.

Sebenzisa idocker kuphela olona lwakutsha nje inqanaba ekuhambeni kwakho komsebenzi, musa ukuyitsalela kwiprojekthi ekuqaleni. Ayizi kusombulula iingxaki zeshishini lakho. Uya kuhambisa kuphela iingxaki kwelinye inqanaba kwaye anike izisombululo zakhe, uya kwenza umsebenzi ophindwe kabini.

Xa idocker ifuneka: Ndifikelele kwisigqibo sokuba i-docker ilunge kakhulu ekwandiseni inkqubo enikiweyo, kodwa hayi ekwakheni ukusebenza okusisiseko.

Ukuba usathatha isigqibo sokusebenzisa i-docker, emva koko:

  • lumka kakhulu
  • musa ukunyanzela abaphuhlisi ukuba basebenzise idocker
  • yenza usetyenziso lwayo kwindawo enye, musa ukuyisasaza kuyo yonke iDockefile kunye nedocker-qamba iindawo zokugcina

PS:

Enkosi ngokufunda, ndikunqwenelela izigqibo ezicacileyo kwimicimbi yakho kunye neentsuku zokusebenza ezinemveliso!

umthombo: www.habr.com

Yongeza izimvo