An e dèideag a th’ ann an Docker no nach eil? No a bheil e fhathast fìor?

Hello a h-uile duine!

Tha mi dha-rìribh ag iarraidh a dhol dìreach chun chuspair, ach bhiodh e na bu cheart beagan innse mun sgeulachd agam:

Clàrachadh

Tha mi nam phrògramadair le eòlas ann a bhith a’ leasachadh thagraidhean aon duilleag aghaidh, scala/java agus nodejs air an fhrithealaiche.

Airson ùine mhòr (gu cinnteach bliadhna no dhà), bha mi den bheachd gur e manna bho neamh a th’ ann an Docker agus san fharsaingeachd inneal fìor fhionnar agus bu chòir dha a h-uile leasaiche a bhith comasach air a chleachdadh. Agus bho seo tha e a’ leantainn gum bu chòir Docker a bhith aig gach leasaiche air an inneal ionadail aca. Dè mu dheidhinn mo bheachd, seall tro na dreuchdan bàna a tha air am postadh air an aon hh. Anns gach dàrna fear tha iomradh air docker, agus ma tha sealbh agad air, bidh seo na bhuannachd farpaiseach dhut 😉

Air mo shlighe, choinnich mi ri mòran dhaoine, leis na diofar bheachdan aca a thaobh Docker agus an eag-shiostam aige. Thuirt cuid gur e rud goireasach a tha seo a tha a’ gealltainn gnìomhachd tar-àrd-ùrlar. Cha robh an dàrna fear a’ tuigsinn carson a bu chòir dhaibh ruith ann an soithichean agus dè a’ phrothaid a thigeadh bhuaithe, cha robh dragh air an treas fear idir agus cha do rinn e dragh (dìreach sgrìobh iad an còd agus chaidh iad dhachaigh - tha farmad agam riutha, leis an dòigh :)

Adhbharan airson a chleachdadh

Carson a chleachd mi docker? 'S dòcha airson nan adhbharan a leanas:

  • cur air bhog stòr-dàta, bidh 99% de thagraidhean gan cleachdadh
  • a’ cur air bhog nginx airson cuairteachadh aghaidh agus proxying gu backend
  • faodaidh tu an tagradh a phacadh ann an ìomhaigh docker, mar seo obraichidh an tagradh agam ge bith càite a bheil docker, tha an duilgheadas cuairteachaidh air fhuasgladh sa bhad
  • lorg seirbheis a-mach às a’ bhogsa, faodaidh tu microservices a chruthachadh, faodaidh gach soitheach (ceangailte ri lìonra cumanta) fear eile a ruighinn gu furasta tro ailias, gu math goireasach
  • Tha e spòrsail soitheach a chruthachadh agus “cluich” ann.

An rud nach toil leam an-còmhnaidh mu docker:

  • Gus am bi an tagradh agam ag obair, feumaidh mi Docker fhèin air an fhrithealaiche. Carson a tha feum agam air seo ma bhios na h-aplacaidean agam a’ ruith air jre no nodejs agus gu bheil an àrainneachd dhaibh air an fhrithealaiche mu thràth?
  • ma tha mi airson an ìomhaigh agam (prìobhaideach) a chaidh a thogail gu h-ionadail a ruith air frithealaiche iomallach, feumaidh mi an stòr docker agam fhèin, feumaidh mi an clàr a bhith ag obair an àiteigin agus feumaidh mi cuideachd https a rèiteachadh, oir chan eil cli docker ag obair ach thairis air https. O damn... tha roghainnean ann, gu dearbh, airson an ìomhaigh a shàbhaladh gu h-ionadail tro docker save agus dìreach cuir an dealbh tro scp... Ach is e tòrr ghluasadan bodhaig a tha sin. Agus a bharrachd air an sin, tha e coltach ri fuasgladh “crutch” gus an nochd an stòr agad fhèin
  • docker-compose. Chan eil a dhìth ach airson soithichean a ruith. Sin e. Chan urrainn dha dad eile a dhèanamh. Docker-compose tha dòrlach de dhreachan de na faidhlichean aige, an co-chòrdadh aige fhèin. Ge bith dè cho dearbhach sa tha e, chan eil mi airson na sgrìobhainnean aca a leughadh. Cha bhith feum agam air an àite sam bith eile.
  • nuair a bhios iad ag obair ann an sgioba, bidh a’ mhòr-chuid de dhaoine a’ sgrìobhadh Dockerfile gu math cam, chan eil iad a’ tuigsinn mar a tha e air a thasgadh, cuir a h-uile dad a dh’ fheumas iad agus nach fheum iad ris an ìomhaigh, sealbhaich iad bho ìomhaighean nach eil ann an Dockerhub no ann an stòr prìobhaideach, cruthaich cuid docker-compose faidhlichean le stòran-dàta agus chan eil dad ann fhathast. Aig an aon àm, tha an luchd-leasachaidh gu pròiseil a’ cur an cèill gu bheil Docker fionnar, gu bheil a h-uile dad ag obair gu h-ionadail dhaibh, agus gu cudromach tha HR a’ sgrìobhadh anns an dreuchd bàn: “Bidh sinn a’ cleachdadh Docker agus feumaidh sinn tagraiche le eòlas obrach mar sin."
  • Tha mi an-còmhnaidh air mo shàrachadh le smuaintean mu bhith ag àrdachadh a h-uile càil ann an Docker: postgresql, kafka, redis. Tha e duilich nach eil a h-uile càil ag obair ann an soithichean, nach eil a h-uile dad furasta a rèiteachadh agus a ruith. Tha seo a’ faighinn taic bho luchd-leasachaidh treas-phàrtaidh, agus chan ann leis an luchd-reic fhèin. Agus leis an t-slighe, tha a ’cheist ag èirigh sa bhad: chan eil dragh air luchd-reic mu bhith a’ cumail suas am bathar ann an Docker, carson a tha seo, is dòcha gu bheil fios aca air rudeigin?
  • Bidh a’ cheist an-còmhnaidh ag èirigh mu sheasmhachd dàta container. agus an uairsin tha thu a’ smaoineachadh, am bu chòir dhomh dìreach an eòlaire aoigheachd a chuir suas no leabhar docker a chruthachadh no inneal dàta a dhèanamh a tha a-nis deprecated? Ma chuireas mi suas eòlaire, feumaidh mi dèanamh cinnteach gu bheil uid agus gid an neach-cleachdaidh anns a’ ghobhar a’ maidseadh id an neach-cleachdaidh a chuir an soitheach air bhog, air neo thèid na faidhlichean a chruthaich an soitheach a chruthachadh le còraichean freumh. Ma chleachdas mi volume an uairsin thèid an dàta a chruthachadh ann an cuid /usr/* agus bithidh an sgeul ceudna ann le uid agus gid 's a tha anns a' cheud chùis. Ma tha thu a’ cur air bhog pàirt treas-phàrtaidh, feumaidh tu na sgrìobhainnean a leughadh agus coimhead airson freagairt na ceiste: “Dè na seòlaidhean soithichean anns am bi am pàirt a’ sgrìobhadh fhaidhlichean?”

Cha robh e a-riamh a’ còrdadh rium gu robh agam ri tinker le Docker ro fhada aig a’ chiad ìre: Dh’ obraich mi a-mach mar a chuireadh mi soithichean air bhog, dè na h-ìomhaighean airson an cur air bhog, a rinn Makefiles anns an robh ailias gu òrdughan fada Docker. Bha gràin agam air docker-compose oir cha robh mi airson inneal eile ionnsachadh ann an eag-shiostam docker. AGUS docker-compose up Chuir e dragh orm, gu sònraichte ma choinnich iad fhathast ann build togail, seach ìomhaighean a chaidh a chruinneachadh mar-thà. Cha robh mi dha-rìribh ag iarraidh ach toradh a dhèanamh gu h-èifeachdach agus gu sgiobalta. Ach cha b’ urrainn dhomh obrachadh a-mach ciamar a chleachdas mi docker.

A’ toirt a-steach Ansible

O chionn ghoirid (trì mìosan air ais), bha mi ag obair le sgioba DevOps, agus bha cha mhòr a h-uile ball den bheachd àicheil a thaobh Docker. Airson adhbharan:

  • riaghailtean docker iptables (ged as urrainn dhut a chuir dheth ann an daemon.json)
  • tha docker buggy agus cha bhith sinn ga ruith ann an cinneasachadh
  • ma thuiteas daemon docker, an uairsin bidh a h-uile inneal le bun-structair a’ tuiteam a rèir sin
  • chan eil feum air docker
  • carson docker ma tha innealan Ansible agus brìgheil ann

Aig an aon obair, dh'fhàs mi eòlach air inneal eile - Ansible. Chuala mi mu dheidhinn aon turas, ach cha do dh'fheuch mi ri na leabhraichean cluiche agam fhìn a sgrìobhadh. Agus a-nis thòisich mi a 'sgrìobhadh mo ghnìomhan agus an uairsin dh'atharraich mo lèirsinn gu tur! Leis gun do thuig mi: Tha modalan aig Ansible airson na h-aon soithichean docker a ruith, togail ìomhaighean, lìonraidhean, msaa, agus faodar soithichean a ruith chan ann a-mhàin gu h-ionadail, ach cuideachd air frithealaichean iomallach! Cha robh fios aig mo thlachd gun chrìochan - lorg mi inneal NORMAL agus thilg mi air falbh na faidhlichean Makefile agus docker-compose agam, chaidh gnìomhan yaml a chuir nan àite. Chaidh an còd a lughdachadh le bhith a’ cleachdadh structaran mar loop, whenMsaa

Docker airson co-phàirtean treas-phàrtaidh leithid stòran-dàta a ruith

O chionn ghoirid fhuair mi eòlas air tunailean ssh. Thionndaidh e a-mach gu bheil e gu math furasta port frithealaiche iomallach a chuir air adhart gu port ionadail. Faodaidh an frithealaiche iomallach a bhith na inneal san sgòth no na inneal brìgheil a’ ruith ann an VirtualBox. Ma tha feum aig mo cho-obraiche no mi fhìn air stòr-dàta (no pàirt treas-phàrtaidh eile), is urrainn dhuinn dìreach am frithealaiche a thòiseachadh leis a’ phàirt seo agus a chuir dheth nuair nach eil feum air an fhrithealaiche. Bheir cur air adhart port an aon bhuaidh ri stòr-dàta a tha a’ ruith ann an soitheach docker.

Bidh an àithne seo a’ toirt air adhart am port ionadail agam gu frithealaiche iomallach a’ ruith postgresql:

ssh -L 9000: localhost: 5432 [post-d fo dhìon]

Le bhith a’ cleachdadh frithealaiche iomallach a’ fuasgladh na duilgheadas le leasachadh sgioba. Faodar an leithid de fhrithealaiche a chleachdadh le grunn luchd-leasachaidh aig an aon àm; chan fheum iad a bhith comasach air postgresql a rèiteachadh, Docker agus iom-fhillteachd eile a thuigsinn. Air frithealaiche iomallach, faodaidh tu an aon stòr-dàta a stàladh ann an Docker fhèin, ma tha e duilich dreach sònraichte a stàladh. Feumaidh a h-uile neach-leasachaidh ruigsinneachd ssh a thoirt seachad!

Leugh mi o chionn ghoirid gu bheil tunailean SSH nan gnìomh cuibhrichte de VPN cunbhalach! Faodaidh tu dìreach OpenVPN no buileachadh VPN eile a chuir a-steach, am bun-structar a stèidheachadh agus a thoirt do luchd-leasachaidh airson a chleachdadh. Tha seo cho snog!

Gu fortanach, bheir AWS, GoogleCloud agus feadhainn eile bliadhna de chleachdadh an-asgaidh dhut, mar sin cleachd iad! Tha iad saor ma chuireas tu dheth iad nuair nach eilear gan cleachdadh. Bha mi an-còmhnaidh a’ faighneachd carson a bhiodh feum agam air frithealaiche iomallach mar glloud, tha e coltach gun do lorg mi iad.

Mar inneal brìgheil ionadail, faodaidh tu an aon Alpach a chleachdadh, a tha gu gnìomhach air a chleachdadh ann an soithichean docker. Uill, no cuid de sgaoilidhean aotrom eile gus an inneal a dhèanamh nas luaithe.

Bun-loidhne: faodaidh tu agus bu chòir dhut stòran-dàta agus goireasan bun-structair eile a ruith air frithealaichean iomallach no ann am bogsa brìgheil. Chan eil feum agam air docker airson na h-adhbharan sin.

Beagan mu ìomhaighean docker agus cuairteachadh

Sgrìobh mi mu thràth artaigil anns an robh mi airson innse nach eil cleachdadh ìomhaighean docker a’ toirt gealltanas sam bith. Tha feum air ìomhaighean docker a-mhàin gus soitheach docker a chruthachadh. Ma tha thu ag ùrachadh gu ìomhaigh docker, tha thu an uairsin ag ùrachadh gus soithichean docker a chleachdadh agus cha chleachd thu ach iad.

Am faca tu àite sam bith far a bheil luchd-leasachaidh bathar-bog a’ giùlain am bathar a-mhàin ann an ìomhaigh docker?
Is e toradh a’ mhòr-chuid de thoraidhean faidhlichean binary airson àrd-ùrlar sònraichte; tha iad dìreach air an cur ri ìomhaigh docker, a tha air a shealbhachadh bhon àrd-ùrlar a tha thu ag iarraidh. Na smaoinich thu a-riamh carson a tha uimhir de dh ’ìomhaighean coltach ris air dockerhub? Cuir a-steach nginx mar eisimpleir, chì thu 100500 ìomhaigh bho dhiofar dhaoine. Cha do leasaich na daoine sin nginx fhèin, chuir iad dìreach nginx oifigeil ris an ìomhaigh docker aca agus chuir iad blasad air leis na rèiteachaidhean aca fhèin airson goireasachd soithichean a chuir air bhog.

San fharsaingeachd, faodaidh tu dìreach a stòradh ann an tgz, ma dh’ fheumas cuideigin a ruith ann an docker, an uairsin leig leotha tgz a chuir ris an Dockerfile, sealbhachadh bhon àrainneachd a tha thu ag iarraidh agus bunan a bharrachd a chruthachadh nach atharraich an tagradh fhèin ann an tgz. Bidh fios aig duine sam bith a chruthaicheas ìomhaigh docker dè a th’ ann an tgz agus dè a dh’ fheumas e airson a bhith ag obair. Seo mar a chleachdas mi docker an seo

Fon loidhne: Chan eil feum agam air clàradh docker, cleachdaidh mi seòrsa de S3 no dìreach stòradh fhaidhlichean mar google drive / dropbox

Docker ann an CI

Tha a h-uile companaidh dhan robh mi ag obair coltach. Is e grosaireachd a th’ annta mar as trice. Is e sin, tha aon iarrtas aca, aon stac teicneòlais (uill, is dòcha dhà no trì cànanan prògramaidh).

Bidh na companaidhean sin a’ cleachdadh docker air na frithealaichean aca far a bheil pròiseas CI a’ ruith. Ceist: Carson a dh’ fheumas tu pròiseactan a thogail ann an soitheach docker air na frithealaichean agad? Carson nach ullaich thu dìreach àrainneachd airson an togail, mar eisimpleir, sgrìobh leabhar-cluiche Ansible a stàlaicheas na dreachan riatanach de nodejs, php, jdk, leth-bhreac iuchraichean ssh, msaa chun t-seirbheisiche anns an tachair an togail?

A-nis tha mi a 'tuigsinn gu bheil seo a' losgadh orm fhìn anns a 'chas, oir chan eil docker a' toirt prothaid sam bith leis an aonaranachd aige. Duilgheadasan a choinnich mi le CI ann an docker:

  • a-rithist feumaidh tu dealbh docker airson a thogail. feumaidh tu coimhead airson ìomhaigh no an dockerfile agad fhèin a sgrìobhadh.
  • 90% gum feum thu cuid de iuchraichean ssh a chuir air adhart, dàta dìomhair nach eil thu airson a sgrìobhadh gu ìomhaigh docker.
  • tha an soitheach air a chruthachadh agus a 'bàsachadh, tha a h-uile caches air chall còmhla ris. bidh an ath thogalach ag ath-luchdachadh sìos a h-uile eisimeileachd pròiseict, a tha a’ toirt ùine agus neo-èifeachdach, agus is e airgead a th’ ann an ùine.

Cha bhith luchd-leasachaidh a’ togail phròiseactan ann an soithichean docker (bha mi uair na neach-leantainn cho mòr, dha-rìribh, tha mi duilich dhomh fhìn san àm a dh’ fhalbh xD). Ann an java tha e comasach grunn dhreachan a bhith agad agus an atharrachadh le aon àithne chun an fhear a tha a dhìth ort a-nis. Tha e mar an ceudna ann an nodejs, tha nvm.

co-dhùnadh

Tha mi a 'creidsinn gur e inneal fìor chumhachdach agus sùbailte a th' ann an docker, is e seo an tarraing air ais (tha e neònach, tha). Le a chuideachadh, faodaidh companaidhean grèim fhaighinn air gu furasta agus a chleachdadh far a bheil feum agus nach eil feum air. Bidh luchd-leasachaidh a ’cur air bhog na soithichean aca, cuid de na h-àrainneachdan aca, agus an uairsin bidh e uile gu rèidh a’ sruthadh a-steach do CI agus cinneasachadh. Tha sgioba DevOps a’ sgrìobhadh còd de sheòrsa air choreigin gus na soithichean sin a ruith.

Cleachd docker a-mhàin air adhart as ùire ìre anns an t-sruth-obrach agad, na slaod e a-steach don phròiseact aig an toiseach. Cha toir e fuasgladh air na duilgheadasan gnìomhachais agad. Cha ghluais e ach na duilgheadasan gu ìre EILE agus bheir e seachad na fuasglaidhean aige fhèin, nì thu obair dhùbailte.

Nuair a tha feum air docker: Thàinig mi chun cho-dhùnadh gu bheil docker fìor mhath air pròiseas sònraichte a bharrachadh, ach chan ann air a bhith a’ togail comas-gnìomh bunaiteach

Ma cho-dhùnas tu fhathast docker a chleachdadh, an uairsin:

  • bi air leth faiceallach
  • na toir air luchd-leasachaidh docker a chleachdadh
  • ionadail a chleachdadh ann an aon àite, na sgaoil e thairis air a h-uile ionad-tasgaidh Dockefile agus docker-compose

PS:

Tapadh leibh airson leughadh, tha mi a’ guidhe dhut co-dhùnaidhean follaiseach anns na cùisean agad agus làithean obrach torach!

Source: www.habr.com

Cuir beachd ann