I-Docker yaBasaqalayo: Yintoni i-Docker kunye nendlela yokwenza iziqulatho zeDocker

Ukuba ubukhe wanxibelelana nophuhliso lwamva nje kule minyaka imbalwa idlulileyo, ngewuyibonile ingxolo enkulu ejikeleze izikhongozeli zeDocker kunye neDocker. Oku kuthandwa kwe-docker akukho sizathu. Ukwaziswa kweDocker kutshintshe kakhulu indlela abaphuhlisi abaya ngayo kuphuhliso lwesicelo.

Ngubani ofuna ukusala ngasemva xa itekhnoloji eguqukayo ibetha umhlaba wenkqubo? Ke, namhlanje, siqala uthotho olutsha lokufunda ukuze ufunde ukusebenzisa iDocker kuphuhliso lwesicelo. Ukuba ungumqali ngokupheleleyo kwi-Docker, olu luhlu lwezifundo yindawo elungileyo onokuthi uqale kuyo.

Kwinqaku lokuqala kuthotho lwethu lwezifundo, sijonge ukuqonda ukuba yintoni kanye kanye iDocker kwaye kutheni abaphuhlisi beyithanda kakhulu iDocker. Siza kuphinda sisebenzise i-Node.js elula yokukuqhelanisa neengcinga ezisisiseko zeDocker.


Kutheni usalinde ixesha elide? Masiqale!



Yintoni iDocker

I-Docker sisixhobo esisetyenziselwa ukwakha usetyenziso; Oko kukuthi, ukuhambisa, kunye nokuqhuba usetyenziso ngokusebenzisa izikhongozeli.


Ngesikhongozeli, onke amathala eencwadi, kunye nokunye ukuxhomekeka okufunekayo ukuqhuba usetyenziso, zipakishwe njengephakheji enye yokuhanjiswa.

Eyona njongo iphambili yokufaka isicelo kukubahlula kwezinye iinkqubo ezisebenza kwinkqubo enye. Le ndlela iqinisekisa usetyenziso aluphazamisani nokusebenza komnye nomnye kwaye lwenza ukugcinwa kwesicelo kube lula kakhulu.

Nangona izikhongozeli ezisebenza kwinkqubo enye zodwa kwenye xa zisenziwa, zabelana nge-OS kernel efanayo. Ke, izikhongozeli zilula ngakumbi xa kuthelekiswa nolunye ukhetho lokwahlulahlula ukwenziwa kwesicelo, oomatshini ababonakalayo.

Isicelo esineekhonteyina esisebenza kwiWindows OS yakho siqinisekisiwe ukuba siza kusebenza ngaphandle komcimbi komnye umatshini yeWindows yomsebenzisi ngaphandle kotshintsho lwendalo.


Nangona izikhongozeli bekudala zisetyenziswa ngaphambi kweDocker, ukwaziswa kweDocker kudumile kusetyenziswa izikhongozeli kuluntu lomphuhlisi. Zimbini izinto ezisetyenziswayo xa kusenziwa isicelo sodidi: Ifayile yeDocker kwaye Umfanekiso weDocker . Masifumanise ukuba zintoni.

Ifayile yeDocker

I-Dockerfile yifayile yokubhaliweyo equlathe iseti yemiyalelo eyimfuneko yokwakha umfanekiso wedokodo. I-Dockerfile iqulethe ulwazi malunga ne-OS, ulwimi, indawo yefayile, kunye namazibuko enethiwekhi phakathi kwezinye izinto.

Umfanekiso weDocker

Xa uqhuba i-Docker's build command nge-dockerfile endaweni, umfanekiso we-docker wenziwa ngokusekwe kwifayile yedokodo. Zisebenza njengeetemplate ukwenza isikhongozeli sedokodo sokugqibela. Nje ukuba yenziwe, imifanekiso yedokodo imile. Ungabiza i-Docker's run command yokwenza i-docker container usebenzisa i-docker image.



Ukumiswa kwesicelo seNode

Kule khokelo, siza kwenza isicelo seNode. Siza kulandela inyathelo ngenyathelo lokufumana isitya seDocker kwaye sisebenze.


1 -Yenza isicelo seNode.js 2 -Yenza ifayile yedokodo 3 -Yakha umfanekiso wedocker 4 -Yila isikhongozeli sesicelo

Ngaphambi kokuntywila kungena i-app yethu, kuya kufuneka uqiniseke ukuba i-Docker kunye neNode.js zifakiwe kwinkqubo yakho

  • Faka i-Docker kwinkqubo yakho-andizukugubungela indlela yokufaka iDocker kwesi sifundo, kodwa ungalandela amaxwebhu eDocker kwaye ufake iDocker kwiWindows okanye Ubuntu kwidesktop.
  • Khuphela kwaye ufake iiNode.js kwiwebhusayithi esemthethweni

Yenza isicelo seNode

Jonga kulawulo lweprojekthi entsha ukusuka kumgca wokuyalela kwaye usebenzise lo myalelo ulandelayo ukuze wenze ifayile ye-package.json enolwazi lokuxhomekeka kwesicelo kunye neskripthi sokuqala.

npm init -y


Emva koko, faka kwaye ungeze i-Express njengokuxhomekeka kwisicelo sakho ngokusebenzisa lo myalelo kwilayini yomyalelo. Siza kuba sisebenzisa i-Express ukwenza usetyenziso.

npm install express --save

Oku kuyakongeza ukubonakalisa njengokuxhomekeka kuthi package.json ifayile.

Ngoku sinokwenza isicelo seNode ngoncedo lwe-Express.


Yenza ifayile enegama app.js kulawulo lweprojekthi kwaye ungeze le khowudi ilandelayo kwifayile.

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') })

Le khowudi ingentla yenza i-Node server emamela izicelo ezingenayo kwizibuko le-3000. Ungaqhuba lo myalelo kumgca wokuyalela ukuqala iseva yeNode.

node app.js

Ngoku yiya kwisikhangeli sakho kwaye ulandele i-URL http://localhost:3000 kwaye uza kubona isicatshulwa Hello World! kwiphepha.

Sakhe isicelo esilula seNode seprojekthi yethu. Ngoku masiqhubeke senze ifayile yedokodo.

Yenza ifayile yeDocker

Kwifayile yedokodo, sinikezela ngolwazi oluyimfuneko ekwakheni nasekuqhubeni usetyenziso lwethu lweNode usebenzisa imeko yeDocker.

Oku kubandakanya ukukhankanya ulwimi kunye nohlobo lwalo olusetyenzisiweyo kwisicelo, ukuseta isikhombisi seprojekthi njengolawulo olusebenzayo, ukukopa zonke iifayile kulawulo olusebenzayo, ukuseta izibuko lenethiwekhi, kunye nokucacisa ukuba yeyiphi ifayile ekungeniswa kuyo kwisicelo. Kwizicelo ezintsonkothileyo, kuya kufuneka usete izinto eziguquguqukayo kokusingqongileyo kunye ne-URL yedatha nakwifayile yedokodo.

FROM node:latest WORKDIR /dockerTutorial COPY . . RUN npm install EXPOSE 3000 ENTRYPOINT ['node', 'app.js']
  • UKUSUKA umyalelo ufumana umfanekiso we-OS, ukuqhuba usetyenziso lwethu kwi-OS ethile, ukusuka kwiDocker Hub. I-Docker Hub yindawo yokugcina imifanekiso yedocker esinokuyitsalela kwimeko-bume yendawo. Sifumana umfanekiso osekwe ku-Ubuntu ofake iiNode. Sebenzisa 'okwangoku' njengoko uhlobo lweNode lutsala umfanekiso onefayile yeNode yamva nje efakiweyo.
  • UMSEBENZI Umyalelo useta ulawulo olusebenzayo lwesicelo.
  • IKOPI iyalela ikopi yeefayile kulawulo lwangoku (kwilayini yomyalelo) kwisikhangeli esisebenzayo esasetwe kwinyathelo langaphambili. Ungakhankanya igama lefayile ukukopa okanye usebenzise iindawo zokumisa eziphindwe kabini ukukopa zonke iifayile kulawulo lwangoku kulawulo olusebenzayo.
  • BALEKA umyalelo ufaka zonke izixhomekeki ezifunekayo ukwakha usetyenziso. Oku kubandakanya konke ukuxhomekeka okuchazwe kwi package.json | ifayile.
  • BONISA Umyalelo uvula izibuko ukusuka kwisitya seDocker ukuya kwilizwe langaphandle. Eli zibuko lifumana zonke izicelo esizithumela kwisikhongozeli seDocker. Izibuko lisetelwe ngokukodwa kwi-3000 kuba lizibuko lesicelo seNode ngaphakathi kwesikhongozeli seDocker esisetyenziselwa ukumamela izicelo.
  • UKUNGENELA ichaza indlela yokuqalisa isicelo. I-Docker ijoyina uluhlu esilunikezela kumyalelo omnye wokuqalisa usetyenziso. Kule meko, node app.js.

Ukwakha umfanekiso weDocker

Sebenzisa lo myalelo ulandelayo ukwenza umfanekiso weDocker kwifayile yedokodo.

docker build -t docker-tutorial .

Docker-tutorial ligama lomfanekiso weDocker. Ichaphaza libonisa indlela yefayile kulawulo lweprojekthi, kulapho ngoku sikulayini wokuyalela.

Ukuba umfanekiso we-OS ucacisiwe nge UKUSUKA myalelo, node: zamva nje , ayikho kwisixhobo sakho okwangoku, iya kutsalwa kwiDocker Hub xa uqhuba lo myalelo ungasentla.

Emva kokutsala umfanekiso, umyalelo ngamnye kwifayile yefayile iya kwenziwa nganye nganye.

Ekupheleni kokwenziwa, ukuba uyawubona umyalezo yakhiwe ngempumelelo , umfanekiso we-docker wesicelo wakhiwe ngempumelelo. Sebenzisa lo myalelo ukuze ubone umfanekiso we-docker eyakhiwe kwindawo yokugcina umfanekiso.

docker images

Imveliso ijongeka ngoluhlobo

Ukwenza isiqulatho

Ngoku sinokusebenzisa umfanekiso owakhiweyo ukwenza ikhonteyina yethu yeDocker. Sebenzisa i-docker run command yokwenza ikhonteyina.

docker run -p 8080:3000 docker-tutorial

Apha, amanani angama-8080 kunye nama-3000 abonisa ubume bangaphandle nobangaphakathi besikhongozeli. Izibuko langaphandle, 8080, lizibuko esilisebenzisayo ukunxibelelana nesicelo ngebrawuza yethu. Izibuko langaphakathi, i-3000, liziko lesicelo sethu esimamela izicelo ezingenayo. Imephu yesikhongozeli sedocker imephu echongwe ngaphandle kwizibuko langaphakathi.

Ndwendwela i-URL http://localhost:8080 kwisikhangeli kwaye ubone ukuba uyalifumana iphepha nge Hello World! umyalezo owufumene xa undwendwele http://localhost:3000 ngaphambili. Ukuba ewe, isikhongozeli sakho seDocker siphezulu kwaye siyasebenza.

Ungawusebenzisa lo myalelo ukujonga zonke izikhongozeli zeDocker ezikwisixhobo sakho.

docker ps

Umyalelo uya kukunika imveliso enje. Singafumana i-CONTAINER_ID kunye negama lesikhongozeli esisebenzayo apha.

Ukongeza izinto eziNgqongileyo kwiSicelo sakho

Khumbula indlela endikhankanye ngayo isicelo kunye nezinto eziguquguqukayo kokusingqongileyo kufuna imiyalelo engaphezulu kwifayile yedokodo? Ixabiso lotshintsho kwindalo esingqongileyo kunye nemeko abasebenza kuyo.

Qaphela ukuba siyichaze njani ngokucacileyo izibuko i-Node app yethu imamela xa iseva isebenza. Le ndlela ayinakuguquguquka kwaye ihambelana nephutha. Kwimeko apho siqhuba usetyenziso lwethu kwindawo engavuli izibuko le-3000 kwiseva yeNode, isicelo sethu siyayeka ukusebenza.

Olona phumezo lufanelekileyo kukuthatha inombolo yezibuko ngaphandle kwesicelo. Endaweni yoko, sisebenzisa igama eliguqukayo endaweni yenani lezibuko kwaye sibeke ixabiso lolo tshintsho kwimeko yokusebenza. Kwimeko yethu, imeko ebalekayo sisiqulatho seDocker. Ke, kufuneka songeze inani lezibuko kwi-dockerfile njengokwahluka kwendalo.

Makhe sibone ukuba singayenza njani loo nto.

Kuqala, yongeza umahluko kwindalo yethu kwifayile yedokodo kunye nexabiso layo. Kuya kufuneka songeze umyalelo omtsha kwi-dockerfile ukufezekisa oku.

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

Sisebenzisa umyalelo we-ENV olandelwa ligama eliguqukayo kunye nokunikezelwa kwexabiso, sinokongeza umahluko omtsha kwindalo esingqongileyo kwifayile yethu yedokodo. Ngaba uqaphele ukuba utshintshiwe njani umyalelo we-EXPOSE 3000 ukuze ungakhankanyi ngokucacileyo inombolo yezibuko? Endaweni yoko, ibhekisa kuguquguquko olwenziweyo lwe-PORT ukufumana elona nani lichanekileyo lezibuko. Ngale ndlela, ukuba kufuneka sitshintshe inombolo yezibuko, kufuneka sitshintshe indawo enye kwikhowudi yethu, eyenza ukuba kube lula ukuyigcina.

Ngoku sitshintshe i-dockerfile, inyathelo elilandelayo litshintsha i-app.js ukubhekisa kuguquguquko lwendalo. Ngenxa yoku, sithatha indawo yenombolo yezibuko engama-3000 esetyenziswe ngaphakathi kwendlela yokumamela ngenkqubo.env.PORT.

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') })

Ukusukela ukuba senze utshintsho kwiifayile zethu zesicelo kunye nefayile yedokodo, kufuneka sakhe umfanekiso omtsha wesikhongozeli esitsha. Kodwa kuqala, kufuneka simise isikhongozeli esisebenza ngoku seDocker ukufezekisa oku.

Singawusebenzisa docker stop umyalelo wokumisa isitya.

docker stop f10

Ixabiso, f10, elisetyenziswe kulo myalelo ngamanani amathathu okuqala e-ID yesikhongozeli.

Singawusebenzisa umyalelo, docker kill, ukumisa isikhongozeli esisebenzayo.

docker kill f10

Umahluko phakathi kwe-docker kill kunye ne-docker stop kukuba i-docker stop iyeka isikhongozeli ngobabalo ngokukhupha usebenzisa izixhobo kunye nokugcina urhulumente. I-docker kill, nangona kunjalo, iyeka isikhongozeli ngokukhawuleza ngaphandle kokukhulula ngokufanelekileyo izixhobo okanye ukugcina ilizwe. Isikhongozeli esisebenza kwindawo yemveliso, ukusebenzisa i-docker stop ukumisa isikhongozeli kokona kulungileyo.

Emva kokumisa isikhongozeli esisebenzayo, qiniseka ukuba ucoce intsalela eseleyo ngesikhongozelo kwindawo yokusingathwa usebenzisa lo myalelo ulandelayo.

Ukuqhuba isiqulatho kwimowudi yeDaemon

Xa uzama ukuqhuba le miyalelo ingentla yokumisa isikhongozeli, uya kuqaphela ukuba i-terminal ithebhu ebesiyisebenzisa ukwenza isikhongozeli ayinakusetyenziselwa ukuqhuba eminye imiyalelo ngaphandle kokuba sibulala isikhongozeli. Singayifumana indawo yokusebenzela ngokusebenzisa isithuba esahlukileyo sokusebenzisa imiyalelo emitsha.

Kodwa kukho indlela ebhetele. Singaqhuba isikhongozeli kwimowudi yedemon. Ngemowudi ye-daemon, isikhongozeli sihamba ngasemva ngaphandle kokusebenzisa ithebhu yangoku ukubonisa iziphumo.

Ukuqala isikhongozeli kwimowudi yedemon, kuya kufuneka wongeze -d iflegi kumyalelo wokuqhutywa kwedokhi.

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

Ukuqhuba isiqulatho kwiNdlela yokuSebenzisana

Ukuqhuba isikhongozeli kwimowudi yokusebenzisana, isikhongozeli kufanele ukuba sele sisebenza. Nje ukuba kukwindlela yokunxibelelana, ungaqhuba imiyalelo ukongeza okanye ukususa iifayile kwisikhongozeli, uluhlu lweefayile, okanye usebenze eminye imiyalelo ye-bash esihlala siyisebenzisa.

Sebenzisa lo myalelo ulandelayo ukuqhuba isikhongozeli kwimowudi yokusebenzisana.

docker exec -it e37 bash

Apha, i-e37 sisazisi sekhonteyina. Dlala ujikeleze ngemowudi yokusebenzisana usebenzisa imiyalelo ye-bash.



Isiphelo

Kwisifundo sokuqala kuthotho lwethu lwe-Docker tutorial, ufunde indlela yokwenza isikhongozeli seDocker kwisicelo esilula seNode. Kodwa kukho enye into onokuyenza ngeDocker kunye nezikhongozeli. Kwizifundo zethu ezizayo, siza kubona ukuba singasebenza njani noovimba beenkcukacha, imiqulu, kwaye sisebenze ngezikhongozeli ezininzi ezisetyenziswe sisicelo esakhiwe ngemicroservices.