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 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 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.
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.
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
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.
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']
package.json
de hatine diyar kirin digire nav xwe dosî.node app.js
.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
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.
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.
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
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.
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.