Docker ji bo Destpêkan: Docker çi ye û Meriv Çawa Konteynirên Docker Çêdibe

Heke hûn di van çend salên borî de bi geşedanên herî dawî yên cîhana bernamenûsiyê re têkilî daynin, weyê hay ji bûyera bihêz a dora konteynerên Docker û Docker hebûya. Ev populerbûna docker bê sedem nine. Danasîna Docker awayê pêşdebiran çawa pêşvexistina sepanê diguherîne pir guherand.

Kî dixwaze ku li paş bimîne dema ku teknolojiyek wusa şoreşger li cîhana bernamenûs bikeve? Ji ber vê yekê, îro, em ji bo ku hûn fêr bibin ka çawa Docker-ê ji bo pêşveçûna serîlêdanê bikar tînin rêzek tutorial-a nû dest pê dikin. Ger hûn destpêkek mutleq a Docker-ê ne, ev rêzeya tutorial ji bo we cîhê rast e ku hûn dest pê bikin.

Di gotara yekem a rêzeya tutoriya me de, em digerin ku fam bikin bê ka Docker çi ye û çima pêşdebiran ew qas ji Docker hez dikin. Her weha em ê serîlêdanek hêsan a Node.js docker bikin ku hûn bi têgînên bingehîn ên Docker we nas bikin.


Çima êdî li bendê dimînin? Were em destpêkin!



Docker çi ye

Docker amûrek e ku ji bo çêkirina sepanan tê bikar anîn; ew e ku bi navgîniya konteyner sepanan biafirînin, bicîh bikin û bimeşînin.


Bi konteynir, hemî pirtûkxane, û girêdanên din ên ku ji bo pêkanîna serlêdanek hewce ne, ji bo belavkirinê wekî paketek yek têne pak kirin.

Armanca sereke ya konteynir kirina serlêdanê veqetandina wan ji sepanên din ên ku di heman pergalê de dixebitin e. Vê nêzîkbûnê piştrast dike ku sepan nekevin nav xebata hevûdu û parastina sepanê pir hêsantir dike.

Her çend konteynerên ku di heman pergalê de dixebitin di darvekirinê de ji hevûdu têne veqetandin jî, ew heman kernelê OS-ê parve dikin. Ji ber vê yekê, konteyner li gorî vebijarka alternatîf a ji bo tecrîdkirina darvekirina sepanê, makîneyên nîgaşî, siviktir in.

Sepanek konteynerkirî ku li ser OS-ya weya Windows-ê dixebite garantî ye ku bêyî guhertina jîngehê bêyî pirsgirêkek di makîneya Windows-a bikarhênerek din de bimeşe.


Her çend konteyner berî Docker-ê demdirêj hatine bikar anîn jî, danasîna Docker-ê di civaka pêşdebiran de bi karanîna konteynerên populer kirin. Du heb pêkhate hene ku dema serlêdanê docker dikin têne bikar anîn: Dockerfile û Dokerê Wêne . Ka em bizanin ew çi ne.

Dockerfile

Dockerfile pelek nivîsê ye ku tê de komek fermanên ku ji bo çêkirina wêneyek docker hewce dike hene. Dockerfile di nav tiştên din de di derbarê OS-ya bingehîn, ziman, cîhê pelê û benderên torê de agahdarî hene.

Dokerê Wêne

Dema ku hûn fermanek çêkirina Docker-ê bi dockerfile-yê li cîh dimeşînin, li ser dockerfile-ê wêneyek docker-ê tête afirandin. Ew wekî şablonan tevdigerin ku konteynerê docker-ê ya paşîn çêbikin. Gava ku hat afirandin, wêneyên docker sekinî ne. Hûn dikarin fermanên karanîna Docker-ê vegerînin da ku konteynera docker-ê bi karanîna wêneyek docker-ê çêbikin.



Dokkerkirina Serlêdana Node.js

Di vê tutoriyê de, em ê serlêdana Node.js docker bikin. Em ê gav bi gav nêzikatiyê bişopînin da ku konteynera Docker were xebitandin.


1 - Serîlêdana Node.js biafirînin 2 - Dockerfile biafirînin 3 - Wêneya docker ava bikin 4 - Konteynirê serlêdanê biafirînin

Berî ku hûn nekevin nav app me dockerîzekirin, divê hûn piştrast bikin ku Docker û Node.js di pergala we de hatine saz kirin

  • Docker li ser pergala xwe saz bikin-Ez ê di vê tutoriyê de çawaniya sazkirina Docker venaşêrim, lê hûn dikarin belgekirina Docker bişopînin û Docker li ser maseya Windows an Ubuntu saz bikin.
  • Node.js ji malpera fermî dakêşin û Saz bikin

Serîlêdana Node.js biafirînin

Ji rêzika fermanê biçin nav pelrêça projeya nû û fermanên jêrîn bimeşînin da ku pelê pakêt.json çêbikin ku agahdariya li ser pêbaweriyên serîlêdanê û nivisîna destpêkirinê diafirîne.

npm init -y


Dûv re, bi girêdana vê fermanê li ser rêzika fermanê Express-ê wekî pêvekiya serlêdana xwe saz bikin û lê zêde bikin. Em ê Express-ê bikar bînin da ku sepanê biafirînin.

npm install express --save

Ev ê derbirînê wekî girêdanekê bi package.json me ve zêde bike dosî.

Naha em dikarin bi alîkariya Express-ê serlêdanek Node-yê çêbikin.


Pelek bi navê app.js çêbikin di navnîşa projeyê de bikin û koda jêrîn li pelê zêde bikin.

const express = require('express') const app = express() app.get('/', (req, res) => {
res.send('Hello World!') }) app.listen(3000, () => {
console.log('Node server has started running') })

Koda jor serverek Node diafirîne ku li bendera 3000 guh dide daxwazên hatinê. Hûn dikarin vê fermanê li ser rêzika fermanê bimeşînin da ku servera Node dest pê bike.

node app.js

Naha biçin geroka xwe û URL-ê bişopînin http://localhost:3000 û hûn ê nivîsarê bibînin Hello World! li ser rûpelê.

Me ji bo projeya xwe serlêdanek hêsan a Nodê ava kir. Naha em werin ser afirandina dockerfile.

Dockerfile biafirînin

Di dockerfile de, em agahdariya ku ji bo çêkirina û rêvekirina bernameya Node me digel hawîrdora Docker hewce dike pêşkêş dikin.

Vê yekê diyar kirina ziman û versiyona wê ya ku di sepanê de tê bikar anîn, sazkirina peldanka projeya me wekî peldanka xebatê, kopîkirina hemî pelan di navnîşa xebitandinê de, danîna bendera torê, û diyar kirin ka kîjan pel xala têketina serîlêdanê ye. Di sepanên tevlihevtir de, hûn ê neçar in ku guherbarên hawîrdor û URL-ya danegehê jî di dockerfile-yê de saz bikin.

FROM node:latest WORKDIR /dockerTutorial COPY . . RUN npm install EXPOSE 3000 ENTRYPOINT ['node', 'app.js']
  • JI ferman wêneyek OS-yê vedigire, da ku serlêdana me li ser OS-ya taybetî, ji Docker Hub bimeşîne. Docker Hub depoyek wêneyên docker e ku em dikarin bikişînin hawîrdora herêmî. Em wêneyek bingeha Ubuntu-yê ku Node.j saz kiriye vedigirin. Bikaranîna 'herî dawî' wekî guhertoya Node wêneyek dikişîne ku guhertoya Node ya herî dawî sazkirî ye.
  • KARKIR ferman peldanka xebitandinê ya serîlêdanê destnîşan dike.
  • KOPÎ fermana pelên ji pelrêça heyî (li ser rêzika fermanê) ji pelrêça kar re ya ku di gava pêşîn de hatî saz kirin kopî dike. Hûn dikarin navnîşek pelê diyar bikin ku kopî bikin an jî du qat rawestgehan bikar bînin da ku hemî pelan di navnîşa heyî de li peldanka kar kopî bikin.
  • REV ferman hemî girêdanên ku ji bo çêkirina sepanê hewce ne saz dike. Ev hemî vebaweriyên ku di package.json de hatine diyar kirin digire nav xwe dosî.
  • SEKINANDIN ferman ji konteynera Docker bendera li cîhana derve vedike. Ev bendera hemî daxwazên ku em ji konteynera Docker re dişînin werdigire. Port bi taybetî li 3000 hatî danîn ji ber ku ew bendera serlêdana Node ya me ye ku di hundurê konteynera Docker de bikar tîne da ku guh bide daxwazan.
  • ENTRYPOINT diyar dike ka meriv çawa serîlêdanê dest pê dike. Docker beşdarî array dibe ku em ji bo destpêkirina serîlêdanê yek fermanê pêşkêş dikin. Di vê rewşê de, node app.js.

Avakirina Wêneyê Docker

Fermana jêrîn bikar bînin ku wêneya Docker ji dockerfile biafirînin.

docker build -t docker-tutorial .

Docker-tutorial navê wêneyê Docker e. Dot pelê pelê pelrêça projeyê nîşan dide, ya ku em niha li rêzê-emrê lê ne.

Ger wêneya OS-yê bi JI ferman, girêk: herî dawî , vê gavê di cîhaza we de nîne, gava ku hûn fermanên jorîn bimeşînin, ew ê ji Docker Hub were kişandin.

Piştî kişandina wêneyê, dê her ferman di dockerfile de yek bi yek were bicihanîn.

Di dawiya darvekirinê de, heke hûn peyamê bibînin bi serfirazî hate avakirin , wêneyê docker ê sepanê bi serfirazî hate çêkirin. Vê ferman bimeşînin da ku wêneya docker-a çêkirî di depoya wêneya herêmî de bibînin.

docker images

Derketin wiha xuya dike

Afirandina Konteynirê

Naha em dikarin wêneya çêkirî bikar bînin da ku konteynera xweya Docker biafirînin. Fermana karanîna docker bikar bînin ku konteynir biafirînin.

docker run -p 8080:3000 docker-tutorial

Li vir, hejmarên 8080 û 3000 derveyî û hundurê konteynir nîşan dide. Porta derveyî, 8080, bendera ku em bikar tînin da ku bi navgîniya gerokê xwe ve bi serîlêdanê ve girêbidin. Benda navxweyî, 3000, bendergeh e ku serlêdana me ji daxwazên hatinî re guhdarî dike. Docker konteynir nexşeya bendera derveyî ya dane porta navxweyî ye.

Serdana URL http://localhost:8080 li ser gerokê û binihêrin ka hûn rûpelê bi Hello World! peyama ku we çaxê serdana http://localhost:3000 berî. Ger erê, wê hingê konteynera weya Docker radibe û dixebite.

Hûn dikarin vê ferman bikar bînin da ku hemî konteynerên Docker-ê yên li ser cîhaza xwe bibînin.

docker ps

Ferman dê encamek bi vî rengî bide we. Em dikarin KONTAINER_ID û NAME-ya konteynirê ya ku li vir dixebite bibînin.

Zêdekirina Guherbarên Hawirdorê li Serlêdana We

Bînin bîra xwe ku min çawa behs kir serlêdanek bi guhêrbarên hawîrdorê ku di dockerfile de bêtir talîmat hewce dike? Nirxa guhêrbar a hawîrdor bi hawîrdora ku tê de tê re diguheze.

Bala xwe bidinê me çawa bi zelalî qala benderê kir dema ku serverek dixebite sepana Node ya me guhdarî dike. Ev nêzîkbûn nerihetî û metirsîdar e. Di rewşê de ku em serîlêdana xwe li hawîrdorek ku bendera 3000-ê ji bo servera Node-yê venakîne, bimeşînin, sepana me sekinîne.

Pêkanîna herî guncan derxistina hejmara benderê ye ji serîlêdanê. Di şûna wê de, em li şûna jimara portê navekî guhêrbar bikar tînin û ji bo wê guhêrbar di jîngeha bezê de nirxek destnîşan dikin. Di rewşa me de, hawîrdora bezê konteynir Docker e. Ji ber vê yekê, em neçar in ku jimara portê wekî guhêrbar a hawîrdorê li dockerfile zêde bikin.

Ka em bibînin ka em çawa dikarin wiya bikin.

Pêşîn, bi nirxa xwe guherbara hawîrdorê li dockerfileya me zêde bikin. Em neçar in ku emirek nû li dockerfile zêde bikin ku vê yekê pêk bînin.

FROM node:latest WORKDIR /dockerTutorial COPY . . ENV PORT=3000 RUN npm install EXPOSE $PORT ENTRYPOINT ['node', 'app.js']

Bi karanîna emrê ENV li dû navlêdana guherbar û veqetandina nirxê, em dikarin guhêrbariyek hawîrdorê ya nû li dockerfile xwe zêde bikin. We bala xwe dayê ku çawa ferman EXPOSE 3000 hatiye guhertin da ku bi zelalî qala hejmara benderê neke? Di şûna wê de, ew behsa guhêrbariya PORT-ê ya çêkirî dike ku hejmara portê ya rastîn bistîne. Bi vê nêzîkatiyê, heke em neçar in ku hejmara benderê biguherînin, em tenê neçar in ku di kodê xwe de yek cîh biguherin, ku serîlêdana me hêsan dike ku were domandin.

Naha me dockerfile guherand, gava paşîn guhartina app.js e ku ji bo guhêrbariya hawîrdora çêkirî bişîne. Ji bo vê, em hejmara portê ya ku di hundurê rêbaza guhdarîkirinê de tê bikar anîn bi process.env.PORT diguherînin.

const express = require('express') const app = express() app.get('/', (req, res) => {
res.send('Hello World!') }) app.listen(process.env.PORT, () => {
console.log('Node server has started running') })

Ji ber ku me di pelên serlêdanê û dockerfile de guherîn çêkir, em neçar in ku ji bo konteynirek nû wêneyek nû ava bikin. Lê pêşî, em neçar in ku konteynera Docker a ku niha dixebite bidin sekinandin da ku vê yekê pêk bînin.

Em dikarin emrê rawestandina docker bikar bînin da ku konteynir rawestînin.

docker stop f10

Nirx, f10, ku di vê fermanê de tê bikar anîn sê reqemên pêşîn ên nasnameya konteynir e.

Em dikarin ferman, kuştina docker, bikar bînin da ku konteynir bi rê ve bibin.

docker kill f10

Ferqa di navbera kuştina docker û stopa docker de ev e ku rawestgeha docker bi berdana çavkaniyên karanîn û rizgarkirina dewletê konteynir bi rengek xweşiktir rawestîne. lebê, kuştina docker, konteynir ji nişka ve rawestîne bêyî ku bi rêkûpêk çavkaniyan serbest berde an dewletê xilas bike. Ji bo konteynerek ku di jîngehek hilberînê de dixebite, karanîna rawestgeha docker ji bo rawestandina konteynir hilbijartina çêtir e.

Piştî rawestandina konteynirek bi rêve, pê ewle bermayiya ku ji konteynirê ve mayî ji hawîrdora mêvandar bi karanîna emrê jêrîn paqij bikin.

Di Modeya Daemon de Konteyner dimeşîne

Gava ku hûn hewl didin ku fermanên jorîn bidin sekinandin da ku konteynir rawestînin, hûn ê hay bibin ku tabala termînalê ya ku me ji bo afirandina konteynir bikar aniye heya ku em konteynir nekujin ji bo meşandina bêtir fermanan nayê bikar anîn. Em dikarin ji bo vê yekê rêgezek bibînin ku ji bo xebitandina fermanên nû tabek cûda bikar bînin.

Lê nêzîkbûnek çêtir heye. Em dikarin konteynir di moda daemonê de bimeşînin. Bi moda daemon, konteynir bêyî ku tepsiya heyî bikar bîne da ku encaman nîşan bide, li paşnavê dimeşe.

Ji bo ku hûn di moda daemonê de konteynerek dest pê bikin, hûn neçar in ku alaveke -d ya dî jî li emrê karanîna docker zêde bikin.

docker run -d -p 8080:3000 docker-tutorial

Di Modeya Hevpeymanê de Konteyner dimeşînin

Ji bo ku konteynir di moda înteraktîf de were xebitandin, pêdivî ye ku konteynir berê xwe bide xebitandin. Gava ku hûn di moda înteraktîf de bin, hûn dikarin fermanan bimeşînin da ku pelan li konteynir zêde bikin an jê bikin, pelan navnîş bikin, an jî fermanên din ên bash ên ku em bi gelemperî bikar tînin bixebitînin.

Fermana jêrîn bikar bînin ku konteynir di moda înteraktîf de bimeşînin.

docker exec -it e37 bash

Li vir, e37 nasnameya konteyner e. Bi moda înteraktîf re karanîna fermanên bash bileyzin.



Xelasî

Di tutoriya yekem a rêzeya tutoriya me ya Docker de, hûn fêr bûn ku meriv çawa ji bo serîlêdanek hêsan a Node.js konteynirek Docker biafirîne. Lê hê bêtir heye ku hûn dikarin bi Docker û konteyneran bikin. Di hînkarên meyên dahatû de, em ê bibînin ka meriv çawa bi databasan, cildan re dixebite û bi gelek konteynerên ku ji hêla serîlêdanek bi mîkro-servîsan ve hatî çêkirin ve tê xebitandin.