Is bréagán é Docker nó nach bhfuil? Nó an bhfuil sé fós?

Dia duit gach duine!

Ba mhaith liom dul díreach chuig an ábhar, ach bheadh ​​sé níos ceart beagán a insint faoi mo scéal:

Iontráil

Is ríomhchláraitheoir mé a bhfuil taithí agam ar fheidhmchláir aon leathanaigh tosaigh, scala/java agus nódejs a fhorbairt ar an bhfreastalaí.

Le fada an lá (cúpla nó trí bliana go cinnte), bhí mé den tuairim gur manna ó neamh é Docker agus go ginearálta uirlis an-fhionnuar agus ba cheart go mbeadh gach forbróir in ann é a úsáid. Agus as seo leanann sé gur chóir go mbeadh Docker suiteáilte ag gach forbróir ar a n-inneall áitiúil. Cad mar gheall ar mo thuairim, breathnaigh tríd na folúntais a chuirtear suas ar an gcéanna hh. Tá tagairt do dhugadóir i ngach dara ceann, agus más leatsa é, is é seo do bhuntáiste iomaíoch 😉

Ar mo bhealach, bhuail mé le go leor daoine, lena ndearcadh difriúil i leith Docker agus a éiceachóras. Dúirt cuid acu gur rud áisiúil é seo a ráthaíonn feidhmiúlacht tras-ardáin. Níor thuig an dara ceann cén fáth ar cheart dóibh rith i gcoimeádáin agus cén brabús a thiocfadh as, ní raibh an tríú cuid buartha ar chor ar bith agus ní raibh aon bhac orthu (díreach scríobh siad an cód agus chuaigh siad abhaile - is éad liom iad, ag an bealach :)

Cúiseanna le húsáid

Cén fáth ar úsáid mé docker? Is dócha ar na cúiseanna seo a leanas:

  • seoladh bunachar sonraí, úsáideann 99% d’fheidhmchláir iad
  • ag seoladh nginx le haghaidh dáileadh tosaigh agus seachfhreastalaí chuig inneall
  • is féidir leat an feidhmchlár a phacáistiú in íomhá docker, ar an mbealach seo oibreoidh m'iarratas cibé áit a bhfuil docker, réitítear an fhadhb dáileacháin láithreach
  • fionnachtain seirbhíse as an mbosca, is féidir leat microservices a chruthú, is féidir le gach coimeádán (ceangailte le líonra coitianta) ceann eile a bhaint amach go héasca trí ailias, an-áisiúil
  • Tá sé spraoi coimeádán a chruthú agus “imirt” ann.

Rud nach dtaitníonn liom i gcónaí faoin docker:

  • Ionas go n-oibreoidh m’iarratas, tá Docker féin ag teastáil uaim ar an bhfreastalaí. Cén fáth a bhfuil sé seo de dhíth orm má ritheann m'iarratais ar jre nó nódejs agus go bhfuil an timpeallacht dóibh ar an bhfreastalaí cheana féin?
  • más mian liom mo íomhá (príobháideach) a tógadh go háitiúil a reáchtáil ar fhreastalaí iargúlta, ansin tá mo stór docker féin ag teastáil uaim, is gá dom an chlár a bheith ag obair áit éigin agus ní mór dom https a chumrú freisin, toisc nach n-oibríonn cli docker ach thar https. Ó diabhal... tá roghanna ann, ar ndóigh, chun an íomhá a shábháil go háitiúil trí docker save agus seol an íomhá trí scp... Ach sin go leor gluaiseachtaí coirp. Ina theannta sin, tá an chuma air gur réiteach “crutch” é go dtí go bhfeictear do stór féin
  • docker-compose. Ní gá ach coimeádáin a reáchtáil. Sin é an méid. Ní féidir leis aon rud eile a dhéanamh. Docker-compose Tá dornán de leaganacha dá chomhaid, a chomhréir féin. Is cuma cé chomh dearbhaitheach atá sé, níl mé ag iarraidh a gcáipéisíocht a léamh. Ní bheidh sé ag teastáil uaim aon áit eile.
  • nuair a bhíonn siad ag obair i bhfoireann, scríobhann an chuid is mó daoine Dockerfile go han-chrom, ní thuigeann siad conas a dhéantar é a thaisceadh, cuireann siad gach rud a theastaíonn uathu agus nach bhfuil de dhíth orthu leis an íomhá, faigh oidhreacht ó íomhánna nach bhfuil i Dockerhub nó i stór príobháideach, cruthaigh roinnt docker-compose comhaid le bunachair shonraí agus ní mhaireann aon rud. Ag an am céanna, dearbhaíonn na forbróirí go bródúil go bhfuil Docker fionnuar, go n-oibríonn gach rud go háitiúil dóibh, agus is tábhachtaí ná go scríobhann AD san fholúntas: “Úsáidimid Docker agus teastaíonn iarrthóir a bhfuil taithí oibre den sórt sin againn.”
  • Bíonn mo chroí i gcónaí ag smaointe maidir le gach rud a ardú i Docker: postgresql, kafka, redis. Is mór an trua nach n-oibríonn gach rud i gcoimeádáin, nach bhfuil gach rud éasca a chumrú agus a rith. Tacaíonn forbróirí tríú páirtí leis seo, agus ní ó na díoltóirí féin. Agus dála an scéil, eascraíonn an cheist láithreach: níl aon imní ar dhíoltóirí a gcuid táirgí a choinneáil i Docker, cén fáth go bhfuil sé seo, b'fhéidir go bhfuil a fhios acu rud éigin?
  • Éiríonn an cheist i gcónaí faoi marthanacht na sonraí coimeádán. agus ansin dar leat, ar cheart dom an t-eolaire óstach a shuiteáil nó toirt docker a chruthú nó coimeádán sonraí a dhéanamh atá anois deprecated? Má ghairim eolaire, ansin is gá dom a chinntiú go bhfuil ID agus gid an úsáideora sa choimeádán ag teacht le haitheantas an úsáideora a sheol an coimeádán, nó déanfar na comhaid a chruthaíonn an coimeádán a chruthú le cearta fréimhe. Má úsáidim volume ansin beidh na sonraí a chruthú go simplí i roinnt /usr/* agus beidh an sgéal céadna le uid agus gid agus atá sa chéad chás. Má tá comhpháirt tríú páirtí á sheoladh agat, ní mór duit an doiciméadú a léamh agus freagra na ceiste a lorg: “cé na heolairí coimeádáin ina scríobhann an chomhpháirt comhaid?”

Níor thaitin sé liom i gcónaí go raibh orm tinker le Docker ró-fhada ag an gcéim tosaigh: Rinne mé amach conas coimeádáin a sheoladh, cad iad na híomhánna le seoladh as, rinne Makefiles ina raibh ailiasanna le horduithe fada Docker. Is fuath liom cumadóireacht docker mar ní raibh mé ag iarraidh uirlis eile a fhoghlaim in éiceachóras na ndugairí. AGUS docker-compose up Chuir sé isteach orm, go háirithe má bhuail siad fós ann build tógálacha, seachas íomhánna a cuireadh le chéile cheana féin. Ní raibh uaim ach táirge a dhéanamh go héifeachtach agus go tapa. Ach ní raibh mé in ann a dhéanamh amach conas docker a úsáid.

Ag tabhairt isteach Freagrach

Le déanaí (trí mhí ó shin), d'oibrigh mé le foireann DevOps, agus bhí dearcadh diúltach ag beagnach gach ball acu i leith Docker. Ar chúiseanna:

  • rialacha docker iptables (cé gur féidir leat é a dhíchumasú i daemon.json)
  • is bugaí é docker agus ní rithfimid é i dtáirgeadh
  • má thuairteanna deamhan docker, ansin gach coimeádán le tuairteála bonneagair dá réir sin
  • ní gá docker
  • cén fáth docker má tá meaisíní Insible agus fíorúla

Ag an jab céanna, chuir mé aithne ar uirlis eile - Ansible. Chuala mé faoi uair amháin, ach ní dhearna mé iarracht mo leabhair súgartha féin a scríobh. Agus anois thosaigh mé ag scríobh mo thascanna agus ansin d'athraigh mo fhís go hiomlán! Mar gheall ar thuig mé: Tá modúil ag Ansible chun na coimeádáin duga céanna a reáchtáil, tógáil íomhánna, líonraí, etc., agus is féidir coimeádáin a reáchtáil ní hamháin go háitiúil, ach freisin ar fhreastalaithe iargúlta! Ní raibh aon teorainn ar mo sháith - d'aimsigh mé uirlis GNÁTHACH agus chaith mé mo chomhaid Makefile agus docker-comhdhéanta, cuireadh tascanna yaml ina n-áit. Laghdaíodh an cód trí úsáid a bhaint as tógálacha mar loop, when, Etc.

Docker chun comhpháirteanna tríú páirtí ar nós bunachair shonraí a rith

Chuir mé aithne ar tholláin ssh le déanaí. Tharla sé go bhfuil sé an-éasca port cianfhreastalaí a “chur ar aghaidh” chuig calafort áitiúil. Is féidir leis an gcianfhreastalaí a bheith ina mheaisín sa scamall nó ina mheaisín fíorúil a ritheann i VirtualBox. Má tá bunachar sonraí de dhíth ar mo chomhghleacaí nó uaimse (nó comhpháirt tríú páirtí éigin eile), is féidir linn an freastalaí a thosú leis an gcomhpháirt seo agus é a mhúchadh nuair nach bhfuil gá leis an bhfreastalaí. Tugann cur ar aghaidh calafoirt an éifeacht chéanna le bunachar sonraí a ritheann i gcoimeádán duga.

Cuireann an t-ordú seo mo phort áitiúil ar aghaidh chuig cianfhreastalaí a ritheann postgresql:

ssh -L 9000: localhost: 5432 [ríomhphost faoi chosaint]

Réitíonn cianfhreastalaí an fhadhb le forbairt foirne. Is féidir le go leor forbróirí a leithéid de fhreastalaí a úsáid ag an am céanna; ní gá dóibh a bheith in ann postgresql a chumrú, Docker agus intricacies eile a thuiscint. Ar fhreastalaí iargúlta, is féidir leat an bunachar sonraí céanna a shuiteáil i Docker féin, má tá sé deacair leagan sonrach a shuiteáil. Is gá gach forbróir ná rochtain ssh a sholáthar!

Léigh mé le déanaí gur feidhm theoranta de VPN rialta iad tolláin SSH! Is féidir leat OpenVPN nó feidhmeanna VPN eile a shuiteáil, an bonneagar a shocrú agus é a thabhairt d’fhorbróirí lena úsáid. Tá sé seo chomh cool!

Go fortunately, tugann AWS, GoogleCloud agus daoine eile bliain úsáide saor in aisce duit, mar sin bain úsáid as iad! Tá siad saor má chasann tú as iad nuair nach bhfuil siad in úsáid. N'fheadar i gcónaí cén fáth go mbeadh freastalaí iargúlta cosúil le cloud de dhíth orm, is cosúil go bhfuair mé iad.

Mar mheaisín fíorúil áitiúil, is féidir leat an Alpach céanna a úsáid, a úsáidtear go gníomhach i gcoimeádáin duga. Bhuel, nó roinnt dáileadh éadrom eile chun an meaisín a thosú níos tapúla.

Bunlíne: is féidir leat agus ba chóir duit bunachair shonraí agus earraí bonneagair eile a reáchtáil ar fhreastalaithe iargúlta nó i mbosca fíorúil. Níl docker ag teastáil uaim chun na críocha seo.

Beagán faoi íomhánna docker agus dáileadh

Scríobh mé cheana Airteagal inar theastaigh uaim a chur in iúl nach dtugann úsáid íomhánna docker aon ráthaíocht. Níl gá le híomhánna docker ach chun coimeádán docker a chruthú. Má tá tú ag uasghrádú go dtí íomhá docker, ansin tá tú ag uasghrádú chun coimeádáin duga a úsáid agus ní úsáidfidh tú ach iad.

An bhfaca tú áit ar bith nach ndéanann forbróirí bogearraí a gcuid táirgí a phortáil ach amháin in íomhá docker?
Is é an toradh atá ar fhormhór na dtáirgí ná comhaid dhénártha le haghaidh ardán ar leith; ní chuirtear ach iad leis an íomhá docker, a fhaightear le hoidhreacht ón ardán atá ag teastáil. Ar smaoinigh tú riamh cén fáth go bhfuil an oiread sin íomhánna cosúla ar dockerhub? Cuir isteach nginx mar shampla, feicfidh tú 100500 íomhá ó dhaoine éagsúla. Níor fhorbair na daoine seo nginx féin, níor chuir siad ach nginx oifigiúil lena n-íomhá docker agus chuir siad blas ar a gcuid cumraíochtaí féin ar mhaithe le coimeádáin a sheoladh.

Go ginearálta, is féidir leat é a stóráil go simplí i tgz, más gá do dhuine éigin é a rith i docker, ansin lig dóibh tgz a chur leis an Dockerfile, oidhreacht ón timpeallacht atá ag teastáil agus buns breise a chruthú nach n-athraíonn an t-iarratas féin i tgz. Beidh a fhios ag duine ar bith a chruthóidh íomhá docker cad é tgz agus cad a chaithfidh sé a bheith ag obair. Seo mar a úsáidim docker anseo

Bunlíne: Níl clár docker ag teastáil uaim, úsáidfidh mé S3 de shaghas éigin nó díreach stóráil comhad mar google drive / dropbox

Docker i CI

Tá na cuideachtaí go léir ar oibrigh mé dóibh cosúil. De ghnáth is grósaeireacht iad. Is é sin, tá feidhmchlár amháin acu, stack teicneolaíochta amháin (bhuel, b'fhéidir cúpla nó trí theanga ríomhchlárúcháin).

Úsáideann na cuideachtaí seo docker ar a gcuid freastalaithe áit a ritheann an próiseas CI. Ceist: Cén fáth ar gá duit tionscadail a thógáil i gcoimeádán docker ar do fhreastalaithe? Cén fáth nach n-ullmhaíonn tú timpeallacht don tógáil, mar shampla, scríobh leabhar súgartha Ansible a shuiteálfaidh na leaganacha riachtanacha de nodejs, php, jdk, cóipeáil eochracha ssh, etc. chuig an bhfreastalaí ina mbeidh an tógáil ar siúl?

Anois tuigim go bhfuil sé seo ag lámhach mé féin sa chos, toisc nach bhfuil docker a thabhairt ar aon brabús lena leithlis. Fadhbanna a bhí agam le CI sa docker:

  • arís beidh íomhá docker uait le tógáil. ní mór duit íomhá a chuardach nó do chomhad docker féin a scríobh.
  • 90% gur gá duit roinnt eochracha ssh a chur ar aghaidh, sonraí rúnda nach mian leat a scríobh chuig íomhá an docker.
  • Cruthaítear an coimeádán agus faigheann sé bás, cailltear gach taisce in éineacht leis. Déanfaidh an chéad tógáil eile a ath-íoslódáil ar na spleáchais tionscadail go léir, atá am-íditheach agus neamhéifeachtach, agus is airgead é am.

Ní thógann forbróirí tionscadail i gcoimeádáin duga (bhí mé ina lucht leanúna den sórt sin tráth, i ndáiríre, is dóigh liom go bhfuil brón orm asam féin san am atá thart xD). I java is féidir roinnt leaganacha a bheith agat agus iad a athrú le hordú amháin go dtí an ceann atá uait anois. Tá sé mar an gcéanna i nódejs, tá nvm.

Aschur

Creidim gur uirlis an-chumhachtach agus solúbtha é docker, is é seo a míbhuntáiste (fuaimeanna aisteach, tá). Le cabhair uaidh, is féidir le cuideachtaí dul i ngleic leis go héasca agus é a úsáid nuair is gá agus nach bhfuil gá leis. Seolann forbróirí a gcoimeádáin, cuid dá dtimpeallachtaí, ansin sreabhann sé go léir go réidh isteach i CI agus i dtáirgeadh. Tá cód de shaghas éigin á scríobh ag foireann DevOps chun na coimeádáin seo a rith.

Bain úsáid as docker amháin ar an ceann is déanaí céim i do sreabhadh oibre, ná tarraing isteach sa tionscadal ag an tús é. Ní réiteoidh sé do chuid fadhbanna gnó. Ní bhogfaidh sé ach na fadhbanna go leibhéal EILE agus a réitigh féin a thairiscint, déanfaidh tú obair dhúbailte.

Nuair is gá docker: Tháinig mé ar an tátal go bhfuil docker an-mhaith ag barrfheabhsú a dhéanamh ar phróiseas áirithe, ach ní ag tógáil feidhmiúlacht bhunúsach

Má shocraíonn tú fós docker a úsáid, ansin:

  • a bheith thar a bheith cúramach
  • ná cuir iallach ar fhorbróirí docker a úsáid
  • a úsáid a logánú in aon áit amháin, ná é a scaipeadh ar fud na stórtha uile de chuid Dokefile agus docker-composer

PS:

  • Tháinig mé trasna le déanaí pacálaí agus deir siad go n-oibríonn sé go han-mhaith le Ansible agus ligeann sé duit an próiseas tógála íomhánna a aontú (íomhá docker san áireamh)
  • freisin faoi docker, alt suimiúil

Go raibh maith agat as léamh, guím cinntí trédhearcacha i do ghnóthaí agus laethanta oibre táirgiúla duit!

Foinse: will.com

Add a comment