Docker itoyi here kana kuti kwete? Kana kuti ichiri chokwadi?

Hello vose!

Ini ndinoda chaizvo kunanga kune musoro wenyaya, asi zvingave zvakanyanya kutaura zvishoma nezve nyaya yangu:

kupinda

Ini ndiri programmer ane ruzivo mukugadzira frontend single page application, scala/java uye nodejs pane server.

Kwenguva yakati rebei (chaizvoizvo makore akati wandei kana matatu), ndanga ndine pfungwa yekuti Docker imanna kubva kudenga uye kazhinji chishandiso chinotonhorera uye zvachose mugadziri wese anofanira kukwanisa kuishandisa. Uye kubva pane izvi zvinotevera kuti mugadziri wese anofanirwa kuve neDocker yakaiswa pamushini wavo wemuno. Ko nemaonero angu, tarisai nema vacancies anoiswa pa same hh. Sekondi yega yega ine kutaurwa kwedocker, uye kana iwe uri yako, iyi ichave yako yemakwikwi mukana πŸ˜‰

Ndiri munzira, ndakasangana nevanhu vazhinji, nemafungiro avo akasiyana kune Docker uye ecosystem yayo. Vamwe vakati ichi chinhu chiri nyore chinovimbisa mashandiro e-cross-platform. Vechipiri havana kunzwisisa kuti sei vachifanira kumhanya mumidziyo uye kuti purofiti yaizobva pazviri, wechitatu haana kana hanya nazvo uye haana kunetseka (vakangonyora kodhi ndokuenda kumba - ndinovagodora, ne nzira :)

Zvikonzero zvekushandisa

Sei ndakashandisa docker? Zvichida nokuda kwezvikonzero zvinotevera:

  • kuvhurwa kwedatabase, 99% yemashandisirwo anoashandisa
  • kutanga nginx yekugovera kumberi uye proxying kune backend
  • unogona kurongedza chishandiso mumufananidzo wedocker, nenzira iyi application yangu ichashanda chero kupi docker iripo, dambudziko rekugovera rinogadziriswa nekukasira.
  • kuwanikwa kwesevhisi kunze kwebhokisi, unogona kugadzira mamicroservices, mudziyo wega wega (wakabatanidzwa kune yakajairwa network) unogona kusvika kune imwe nyore kuburikidza nealias, iri nyore kwazvo.
  • Zvinonakidza kugadzira mudziyo uye "kutamba" mairi.

Zvandinogara ndisingafarire nezve docker:

  • Kuti application yangu ishande, ini ndinoda Docker pachayo pane server. Nei ndichida izvi kana maapplication angu achimhanya pajre kana nodejs uye nharaunda yavo yatove pane server?
  • kana ndichida kumhanyisa mufananidzo wangu (wakavanzika) wakavakirwa munharaunda pane sevha iri kure, saka ini ndinoda yangu docker repository, ndinoda registry kuti ishande kumwe kunhu uye ini ndinodawo kugadzirisa https, nekuti docker cli inoshanda chete pamusoro pe https. Oh damn ... pane zvingasarudzwa, hongu, kuchengetedza mufananidzo munharaunda kuburikidza docker save uye ingotumira mufananidzo kuburikidza nescp ... Asi iyo yakawanda yekufamba kwemuviri. Uye kunze kweizvozvo, inoita senge "crutch" mhinduro kusvika yako wega repository yaonekwa
  • docker-compose. Inongodiwa chete kumhanya midziyo. Ndizvo zvose. Haagoni kuita chimwe chinhu. Docker-compose ine mhatsa yeshanduro dzemafaira ayo, syntax yayo. Hazvina mhosva kuti inotaura sei, handidi kuverenga zvinyorwa zvavo. Handichaida kumwe kumwe.
  • kana uchishanda muchikwata, vanhu vazhinji vanonyora Dockerfile zvakanyanya kutsveyama, havanzwisise kuti yakachengetwa sei, wedzera zvese zvavanoda uye havadi kumufananidzo, nhaka kubva kumifananidzo isiri muDockerhub kana yakavanzika repository, gadzira zvimwe. docker-compose mafaira ane databases uye hapana chinoenderera. Panguva imwecheteyo, vanogadzira vanodada vanozivisa kuti Docker inotonhorera, zvese zvinoshanda munharaunda yavo, uye HR akakosha kunyora munzvimbo iyi: "Isu tinoshandisa Docker uye tinoda mumiriri ane ruzivo rwakadai rwebasa."
  • Ndinogara ndichishungurudzwa nemifungo yekusimudza zvese muDocker: postgresql, kafka, redis. Zvinosiririsa kuti hazvisi zvese zvinoshanda mumidziyo, hazvisi zvese zviri nyore kugadzirisa uye kumhanya. Izvi zvinotsigirwa nevechitatu-bato vanogadzira, uye kwete nevatengesi pachavo. Uye nenzira, mubvunzo unomuka pakarepo: vatengesi havanetseki nekuchengetedza zvigadzirwa zvavo muDocker, sei izvi, zvichida vanoziva chimwe chinhu?
  • Mubvunzo unogara uchimuka nezve kuenderera kwemudziyo data. uye wobva wafunga, ndinofanira kungoisa dhairekitori rekutambira kana kugadzira docker vhoriyamu kana kugadzira mudziyo wedata uripo izvozvi deprecated? Kana ndikaisa dhairekitori, saka ini ndinofanira kuve nechokwadi chekuti uid uye gid yemushandisi mumudziyo inofanana neid yemushandisi akavhura mudziyo, zvikasadaro mafaera akagadzirwa nemudziyo anogadzirwa aine kodzero dzemidzi. Kana ndikashandisa volume ipapo iyo data inongogadzirwa mune imwe /usr/* uye pachave nenyaya imwe chete neuid uye gid sepakutanga. Kana iwe uri kuvhura chechitatu-bato chikamu, iwe unofanirwa kuverenga zvinyorwa uye kutsvaga mhinduro kumubvunzo: "mumadhairekitori emidziyo iyo chikamu chinonyora mafaera?"

Ini ndaigara ndisingafarire nyaya yekuti ndaifanira kutandara neDocker kwenguva yakareba padanho rekutanga: Ndakafunga kuti ndotanga sei midziyo, ndeipi mifananidzo yekuburitsa kubva, yakagadzira Makefiles aive nemaaliases kune refu Docker mirairo. Ndakavenga docker-compose nekuti ndaisada kudzidza chimwe chishandiso mudocker ecosystem. UYE docker-compose up Zvakandinetsa, kunyanya kana vachiri kusangana ikoko build zvivakwa, kwete mifananidzo yakatounganidzwa. Chandaida chaizvo kwaive kungoita chigadzirwa nemazvo uye nekukurumidza. Asi ini handina kukwanisa kufunga kuti ndoshandisa sei docker.

Kusuma Zvinoita

Munguva pfupi yapfuura (mwedzi mitatu yapfuura), ndakashanda neboka reDevOps, inenge nhengo yese yaive nemafungiro asina kunaka kune Docker. Nezvikonzero:

  • docker inotonga iptables (kunyangwe uchikwanisa kuidzima mu daemon.json)
  • docker iri buggy uye isu hatizoimhanyisa mukugadzira
  • kana docker daemon ikaparara, ipapo midziyo yese ine zvivakwa zvinoparara saizvozvo
  • hapana chikonzero che docker
  • nei docker kana paine Ansible uye chaiwo michina

Pabasa rimwe chete, ndakaziva chimwe chishandiso - Ansible. Ndakanzwa nezvazvo kamwechete, asi handina kuedza kunyora zvangu mabhuku ekutamba. Uye zvino ndakatanga kunyora mabasa angu uye ipapo chiratidzo changu chakashanduka zvachose! Nekuti ndaona: Ansible ine mamodule ekumhanyisa iwo madocker midziyo, mifananidzo inovaka, network, nezvimwewo, uye midziyo inogona kumhanyisa kwete munharaunda chete, asiwo pamaseva ari kure! Mufaro wangu waisaziva miganhu - ndakawana NORMAL chishandiso uye ndakarasa yangu Makefile uye docker-compose mafaera, akatsiviwa neyaml mabasa. Iyo kodhi yakaderedzwa nekushandisa zvinovaka senge loop, when, Etc.

Docker yekumhanyisa yechitatu-bato zvinhu senge dhatabhesi

Ini nguva pfupi yadarika ndakajairana ne ssh tunnels. Zvakazoitika kuti zviri nyore kwazvo "kuendesa" chiteshi chevhavha kure kune chiteshi chenzvimbo. Sevha iri kure inogona kunge iri muchina uri mugore kana muchina chaiwo unoshanda muVirtualBox. Kana mumwe wangu kana ini ndichida dhatabhesi (kana chimwe chikamu chechitatu-bato), tinogona kungotanga sevha nechikamu ichi toidzima kana sevha isingadiwi. Kuendesa Port kunopa maitiro akafanana sedhatabhesi rinomhanya mumudziyo wedocker.

Uyu murairo unoendesa chiteshi chenzvimbo yangu kune iri kure server inomhanya postgresql:

ssh -L 9000:localhost:5432 [email inodzivirirwa]

Kushandisa iri kure server kunogadzirisa dambudziko nekukura kwechikwata. Sevha yakadaro inogona kushandiswa nevakawanda vanogadzira kamwechete; ivo havadi kukwanisa kugadzirisa postgresql, kunzwisisa Docker uye zvimwe zvakaomarara. Pane sevha iri kure, unogona kuisa iyo dhatabhesi muDocker pachayo, kana zvakaoma kuisa imwe vhezheni. Zvese zvinodiwa nevagadziri kupa ssh kuwana!

Ini nguva pfupi yadarika ndakaverenga kuti SSH tunnel ibasa rakaderera renguva dzose VPN! Iwe unogona kungoisa OpenVPN kana mamwe mashandisirwo eVPN, gadzira zvivakwa uye uzvipe kune vanogadzira kuti vashandise. Izvi zvakanaka kwazvo!

Neraki, AWS, GoogleCloud nevamwe vanokupa gore rekushandisa mahara, saka vashandise! Izvo zvakachipa kana ukadzima kana isiri kushandiswa. Ndaigara ndichinetseka kuti sei ndaizoda sevha iri kure senge gcloud, zvinoita sekunge ndakavawana.

Semuchina wemuno chaiwo, unogona kushandisa iyo yakafanana Alpine, iyo inoshandiswa zvakanyanya mumidziyo yedocker. Zvakanaka, kana kumwe kumwe kugovaniswa kwakareruka kuita kuti muchina utange nekukurumidza.

Pazasi mutsara: iwe unogona uye unofanirwa kumhanyisa dhatabhesi uye zvimwe zvivakwa zvinonaka pamaseva ari kure kana mubhokisi rekuona. Ini handidi docker nekuda kwezvinangwa izvi.

Zvishoma nezve docker mifananidzo uye kugovera

Ndakatonyora kare chinyorwa umo ini ndaida kuburitsa kuti kushandisa docker mifananidzo hakupe chero vimbiso. Docker mifananidzo inodiwa chete kugadzira docker mudziyo. Kana iwe uri kusimudzira kune docker mufananidzo, saka uri kusimudzira kushandisa docker midziyo uye iwe unozoishandisa chete.

Wakamboona kupi uko vanogadzira software vanoisa zvigadzirwa zvavo mumufananidzo wedocker?
Mhedzisiro yezvizhinji zvigadzirwa mafaera ebhinari yepuratifomu chaiyo; ivo vanongowedzerwa kune docker mufananidzo, unogarwa nhaka kubva papuratifomu inodiwa. Wakambozvibvunza here kuti sei kune yakawanda yakafanana mifananidzo pa dockerhub? Pinda nginx semuenzaniso, uchaona 100500 mifananidzo kubva kuvanhu vakasiyana. Vanhu ava havana kugadzira nginx pachayo, vakangowedzera official nginx kumufananidzo wavo wedocker uye vakauisa neavo magadzirirwo kuti zvive nyore kuvhura midziyo.

Kazhinji, unogona kungoichengeta mu tgz, kana mumwe munhu achida kuimhanyisa mudocker, wobva waita kuti vawedzere tgz kuDockerfile, vatore nhaka kubva kune yaunoda nharaunda uye vagadzire mamwe mabhanzi asingashandure iyo application mu tgz. Chero ani achagadzira docker mufananidzo achaziva kuti tgz chii uye chii chaanofanira kushanda. Aya ndiwo mashandisiro andinoita docker pano

Pazasi mutsara: Ini handidi docker registry, ini ndichashandisa imwe mhando yeS3 kana kungochengetera faira senge google drive / dropbox

Docker muCI

Makambani ese andakashandira akafanana. Vanowanzova grocery. Ndokunge, ivo vane imwe application, imwe tekinoroji stack (zvakanaka, pamwe vaviri kana matatu programming mitauro).

Aya makambani anoshandisa docker pamaseva avo uko CI process inomhanya. Mubvunzo: Nei uchifanira kuvaka mapurojekiti mumudziyo wedocker pamaseva ako? Wadii kungogadzirira nharaunda yekuvaka, semuenzaniso, nyora Ansible playbook iyo inoisa iyo inodiwa mavhezheni e nodejs, php, jdk, kopi ssh makiyi, nezvimwe kune sevha umo kuvakwa kuchaitika?

Zvino ini ndinonzwisisa kuti uku kuri kuzvipfura mutsoka, nekuti docker haiunzi chero purofiti nekuzviparadzanisa kwayo. Matambudziko andakasangana nawo neCI mudocker:

  • zvakare iwe unoda docker mufananidzo wekuvaka. iwe unofanirwa kutsvaga mufananidzo kana kunyora yako dockerfile.
  • 90% iyo yaunoda kuendesa mberi mamwe makiyi e ssh, yakavanzika data yausingade kunyora kune docker mufananidzo.
  • mudziyo unogadzirwa uye unofa, zvese cache zvinorasika pamwe chete nazvo. chivakwa chinotevera chinozodhawunirodha zvese zvinoenderana neprojekiti, zvinotora nguva uye zvisingashande, uye nguva imari.

Vagadziri havavake mapurojekiti mumidziyo yedocker (Ini ndaimbova fan akadaro, chaizvo, ndinozvinzwira tsitsi munguva yakapfuura xD). MuJava zvinokwanisika kuve neshanduro dzinoverengeka uye wozvishandura nemurairo mumwe kune waunoda ikozvino. Zvakafanana mu nodejs, pane nvm.

mhedziso

Ini ndinotenda kuti docker chishandiso chine simba uye chinochinjika, ichi ndicho chidzoreso chayo (zvinonzwika zvinoshamisa, hongu). Nerubatsiro rwayo, makambani anogona kubatika nyore pairi uye oishandisa painodiwa uye isingadiwi. Vagadziri vanovhura midziyo yavo, mamwe enzvimbo dzavo, zvino zvese zvinoyerera muCI uye kugadzira. Chikwata cheDevOps chiri kunyora imwe mhando yekodhi yekumhanyisa midziyo iyi.

Shandisa docker chete pa yazvino uno nhanho mukufambiswa kwebasa rako, usaikwevera mupurojekiti pakutanga. Hazvizogadzirise matambudziko ako ebhizinesi. Anongoendesa matambudziko kune ARIMWE nhanho opa ega mhinduro, iwe uchaita kaviri basa.

Kana docker ichidiwa: Ndakasvika pamhedziso yekuti docker yakanaka kwazvo pakugadzirisa maitiro akapihwa, asi kwete pakuvaka basa rekutanga.

Kana iwe uchiri kufunga kushandisa docker, saka:

  • chenjera kwazvo
  • usamanikidza vanogadzira kushandisa docker
  • gadzirisa kushandiswa kwayo munzvimbo imwechete, usaparadzire kune ese Dockefile uye docker-compose repositories

PS:

Ndatenda nekuverenga, ndinoshuvira iwe sarudzo dziri pachena muzvinhu zvako uye nekubudirira kwemazuva ekushanda!

Source: www.habr.com

Voeg