Taungia mo Nga Tiimatanga: He aha te Tauranga me Pehea te Hanga i nga Ipu Taungia

Mena kua pa atu koe ki nga whanaketanga hou o te ao hotaka i roto i enei tau kua hipa, ka kite koe i te haruru o te waha o nga ipu Docker me Docker. Ko tenei rongonui o te taunga he kore take. Ko te whakauru mai o Docker kua rereke te rereketanga o te huarahi o nga kaiwhakawhanake ki te whanaketanga tono.

Ko wai e hiahia ana ki te waiho i muri ka pa ana taua hangarau whakahuri i te ao hotaka? No reira, i tenei ra, kei te tiimata taatau akoranga hou hei ako maau ki te whakamahi i te Docker hei whakawhanake tono. Mena he tino tiimata koe ki Docker, ko tenei raupapa akoranga te wahi tika hei tiimata maau.

I roto i te tuhinga tuatahi o ta maatau raarangi akoranga, kei te rapu maatau ki te maarama he aha te tino Docker, he aha hoki te take i tino aroha ai nga kaiwhakangungu ki a Docker. Ka whakatauhia hoki e maatau tetahi tono Node.js ngawari ki te waia koe ki nga kaupapa matua o Docker.

He aha ka tatari ai ano? Me tiimata!

He aha te Docker?

Ko te Docker he taputapu hei whakamahi i nga tono; ko te hanga, tohatoha, me te whakahaere i nga tono ma roto i nga ipu.

Me te ipu, ko nga wharepukapuka katoa, me etahi atu mea whakawhirinaki e hiahiatia ana hei whakahaere i tetahi tono, kua whakakiihia hei kohinga kotahi mo te tohatoha.

Ko te whaainga nui mo te whakauru i tetahi tono ko te wehe mai i etahi atu tono e rere ana i te punaha kotahi. Ma tenei huarahi e whakarite kia kaua nga tono e pokanoa ki te mahi a tetahi ki tetahi, kia ngawari ake ai te tiaki tono.

Ahakoa ko nga ipu e rere ana i te punaha kotahi ka wehea tetahi i tetahi i te wa e mahia ana, he rite ano te pata OS. No reira, he maama ake nga ipu ka whakaritea ki te whirinoa rereke mo te wehe i te tono tono, miihini mariko.

He tono whakauru kei te whakahaere i runga i to Matapihi OS ka pumau ki te whakahaere kaore he take i roto i te miihini Matapihi a tetahi atu ahakoa kua rereke te taiao.

Ahakoa kua roa e whakamahia ana nga ipu i mua o Docker, ko te whakaurutanga o te Docker i whakanuitia ma te whakamahi ipu i roto i te hapori kaiwhakawhanake. E rua nga waahanga e whakamahia ana ka tuhia ana te tono: Whakahokinga me Whakaahua Whakauru . Me rapu taatau.

Whakahokinga

Ko te Dockerfile he konae kuputuhi kei roto i a ia nga ota e hiahiatia ana hei hanga ahua whanga. Kei a Dockerfile nga korero mo te OS e whaaia ana, te reo, te waahi konae, me nga tauranga whatunga me etahi atu mea.

Whakaahua Whakauru

Ka whakahaerehia e koe te whakahau hanga a Docker me te taunga ki tona waahi, ka hangahia he ahua taunga ki runga i te taunga. He tauira ta raatau hei hanga i te ipu tauranga whakamutunga. Ka oti ana te hanga, he maumahara nga whakaahua kaiwhakahau. Ka taea e koe te tono i te whakahau oma a Docker ki te hanga i te ipu tauranga ma te whakamahi i te whakapakoko tauranga.

Te Whakauru i tetahi Tono Nj.js

I tenei akoranga, ka whakamaherehia e matou he tono Node.js. Ka whai maatau i tetahi huarahi taahiraa kia piki ake te ipu o te Docker.

1 - Hangaia te tono Node.js 2 - Hangaia te tauranga taupoki 3 - Hangaia te ahua whanga 4 - Hangaia te ipu tono

I mua i te ruku ki te whakaara i ta maatau taupānga, kia mohio koe kua whakauruhia te Taungata me te Node.js ki to punaha.

  • Whakauruhia a Docker ki to punaha — Kaore au e hipoki me pehea te whakauru i te Docker ki tenei akoranga, engari ka taea e koe te whai i nga tuhinga Docker ka whakauru i te Docker ki to papamahi Windows, Ubuntu ranei.
  • Tangohia me te Whakauru Node.js mai i te paetukutuku mana

Hangaia te Node.js Tono

Whakatere ki te raarangi kaupapa hou mai i te raina whakahau ka whakahaere i te whakahau e whai ake nei hei hanga i te kohinga package.json kei roto nei nga korero mo nga whakawhirinaki o te tono me te tuhinga tiimata.

npm init -y

Na, whakauruhia me te taapiri i te Express hei whakawhirinaki ki to tono ma te whakahaere i tenei whakahau ki te raina whakahau. Ka whakamahia e matou a Express ki te hanga i te taupānga.

npm install express --save

Ma tenei ka taapiri i te korero hei whakawhirinaki ki ta maatau package.json konae

Ka taea e maatau te hanga i tetahi tono Node ma te awhina o Express.

Hangaia he konae app.js i roto i te raarangi kaupapa ka taapirihia te waehere e whai ake nei ki te konae.

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

Ko te waehere o runga ake nei ka waihanga i tetahi kaituku Node e whakarongo ana ki nga tono taumai i te tauranga 3000. Ka taea e koe te whakahaere i tenei whakahau ki te raina whakahau ki te tiimata i te kaituku Node.

node app.js

Haere inaianei ki to kaitirotiro ka whai i te URL http://localhost:3000 ka kite koe i te tuhinga Hello World! i runga i te whaarangi.

Kua hangaia e maatau tetahi tono Node ngawari mo ta maatau kaupapa. Tena, kia anga atu ano ki te hanga i te taunga taunga.

Hangaia te Taungahuru

I te tauranga tauranga, ka tohaina e maatau nga korero e hiahiatia ana hei hanga me te whakahaere i ta maatau Node me te taiao Docker.

Kei roto hoki ko te whakarite i te reo me tana waahanga e whakamahia ana i roto i te tono, te whakarite i ta maatau raarangi kaupapa hei whaiaronga mahi, te kape i nga konae katoa ki te raarangi mahi, te whakarite i te tauranga whatunga, me te tohu ko tehea te konae te urunga ki te tono. I roto i nga tono uaua ake, me tautuhi e koe nga taurangi o te taiao me te putunga raraunga URL ki te taunga ano hoki.

FROM node:latest WORKDIR /dockerTutorial COPY . . RUN npm install EXPOSE 3000 ENTRYPOINT ['node', 'app.js']
  • MAI ma te whakahau e tango he ahua OS, hei whakahaere i ta maatau tono i runga i tetahi OS motuhake, mai i te Docker Hub. Ko te Docker Hub he putunga o nga whakaahua tauranga ka taea te kukume ki te taiao o te rohe. Kei te tiki maatau i tetahi ahua-a-Ubuntu kua whakauruhia a Node.js. Ma te whakamahi 'hou' ka puta i te putanga Node tetahi whakaahua kua whakauruhia te waahanga Node hou.
  • MAHIAHI ma te whakahau e whakarite te raarangi mahi o te tono.
  • KOPI whakahau kape i nga konae mai i te whaiaronga onaianei (i runga i te raina whakahau) ki te raarangi mahi i whakatauhia i nga mahi o mua. Ka taea hoki e koe te whakarite i tetahi ingoa o te konae hei kape, hei whakamahi ranei i nga whakamutu taarua kia taarua nga konae katoa kei te raarangi o naianei ki te raarangi mahi
  • RUNU ka utaina e te whakahau nga whakawhirinaki katoa e hiahiatia ana hei hanga i te tono. Kei roto katoa nga whakawhirinaki i whakahuahia i te package.json konae
  • PANUITANGA ma te whakahau e whakatuwhera te tauranga mai i te ipu Taungatahi ki te ao o waho. Ka whakawhiwhia ki tenei tauranga nga tono katoa ka tukuna atu e matou ki te ipu Tauranga. Kua whakatauhia te tauranga ki te 3000 na te mea koinei te tauranga e whakamahia ana e taatau tono Node i roto i te ipu Taungahau ki te whakarongo ki nga tono.
  • PANUI e whakaatu ana me pehea te tiimata i te tono. Ka hono a Docker ki te raarangi e tohaina ana e maatau ki tetahi whakahau kotahi hei tiimata i te tono. I tenei wa, node app.js.

Te Hanga i te Atahanga o te Whanga

Whakamahia te whakahau e whai ake nei hei hanga i te ahua Taungia mai i te tauranga.

docker build -t docker-tutorial .

Docker-tutorial Ko te ingoa o te whakapakoko Taungia. Ko te tohu e tohu ana i te ara o te konae ki te raarangi kaupapa, kei reira tatou i te raina whakahau.

Mena kua tohua te ahua OS me te MAI whakahau, kōpuku: hou , kaore i roto i to taputapu i tenei wa, ka unuhia mai i te Docker Hub ka whakahaerehia e koe te whakahau i runga ake nei.

Whai muri i te toia o te ahua, ka mahia takitahi tana whakahau i te tauranga.

I te mutunga o te mahi, ki te kite koe i te korero pai te hanga , kua pai te hanga o te whakapakoko taunga o te tono. Whakahaerehia tenei whakahau kia kite koe i te ahua o te kaitautoko kua hangaia i roto i te putunga ahua o te rohe.

docker images

He penei te putanga

Te Waihanga i te Ipu

Ka taea e taatau te whakamahi i te ahua kua hangaia hei hanga i ta maatau ipu Tauranga. Whakamahia te whakahau whakahaere i te tauranga ki te hanga ipu.

docker run -p 8080:3000 docker-tutorial

Anei, ko nga nama 8080 me te 3000 e tohu ana i te taha o waho me te taha o te ipu. Ko te tauranga o waho, 8080, te tauranga e whakamahia ana e taatau ki te hono atu ki te tono ma ta maatau kaitirotiro. Tauranga ā-roto, 3000, te tauranga e whakarongo ana ta maatau tono mo nga tono mai. Ma te ipu tauranga e taapiri te tauranga o waho kua tukuna ki te tauranga o roto.

Tirohia te URL http://localhost:8080 i runga i te kaitirotiro ka tiro mena ka whiwhi koe i te whaarangi me te Hello World! karere i tae atu ki a koe i te wa e toro ana http://localhost:3000 Tuhinga o mua. Ki te ae, kei te pai kei te rere to ipu Docker.

Ka taea e koe te whakamahi i tenei whakahau ki te tiro i nga ipu Docker katoa e rere ana i runga i to taputapu.

docker ps

Ma te whakahau koe e whakaputa ahua penei. Ka kitea e maatau te CONTAINER_ID me te INGOA o te ipu rere kei konei.

Te Taapiri i nga Taiao Taiao ki To Tono

Kia maumahara ki taku whakahua i tetahi tono me nga taurangi taiao me nui ake nga tohutohu mo te taunga whika? Ko te uara o te rereketanga o te taiao ka rereke me te taiao e whakahaerehia ana e ratau.

Kia mahara ki te pehea o ta maatau whakamaarama i te tauranga e rongohia ana e ta maatau Node i te wa e rere ana te kaituku. He koretake tenei huarahi, he raru hoki. Mena ka whakahaerehia e maatau ta maatau tono ki tetahi waahi kaore e tuwhera i te tauranga 3000 mo te kaituku Node, ka mutu ta maatau tono.

Ko te whakatinanatanga e tika ana ko te tango i te nama tauranga mai i te tono. Engari, ka whakamahia e matou he ingoa taurangi hei utu mo te tau tauranga ka tautuhi i te uara mo taua taurangi i te taiao whakahaere. Ki ta maatau, ko te taiao whakahaere ko te ipu Docker. Na, me taapiri e maatau te tau tauranga ki te tauranga taurangi hei taurangi taiao.

Kia kite me pehea e taea ai e tatou.

Tuatahi, taapirihia te taurangi taiao ki taatau taunga taarata me tona uara. Me taapiri he ture hou ki te tauranga taapiri kia tutuki ai tenei.

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

Ma te whakamahi i te whakahau ENV e whai ake nei te ingoa taurangi me te uara uara, ka taea e taatau te taapiri i tetahi taurangi taiao hou ki taatau taunga. I kite koe i te panonitanga o te whakahau EXPOSE 3000 kia kore e aata whakahua i te nama tauranga? Engari, e pa ana ki te taurangi PORT i hangaia hei tiki i te nama tauranga tika. Ma tenei huarahi, mena ka whakarereke i te nama tauranga, me huri noa tetahi waahi ki ta maatau waehere, kia ngawari ai te pupuri i a maatau tono.

Na kua hurihia e maatau te tauranga tauranga, ko te mahi e whai ake nei ko te huri i te app.js ki te tohu i te taurangi taiao i hangaia. Mo tenei, ka whakakapihia e maatau te nama tauranga 3000 e whakamahia ana i roto i te tikanga whakarongo ki te process.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') })

Mai i te mea kua whakarereke matou i a maatau konae tono me te taunga taapiri, me hanga he ahua hou mo tetahi ipu hou. Engari ko te mea tuatahi, me whakamutu te ipu Docker e rere ana i tenei wa kia tutuki tenei.

Ka taea e taatau te whakamahi i te whakahau aukati kati ki te aukati i te ipu.

docker stop f10

Ko te uara, f10, e whakamahia ana i roto i tenei whakahau ko nga mati tuatahi e toru o te ID ipu.

Ka taea e taatau te whakamahi i te whakahau, patu patu, hei aukati i te ipu rere.

docker kill f10

Ko te rereketanga i waenga i te kaipatu whakamate me te aukati taukati ko te aukati taukati te aukati i te ipu ki te manaaki ma te tuku rauemi ma te penapena i te kawanatanga. Ko te kaipatu patu, heoi, ka kaha te aukati i te ipu me te kore e tuku tika i nga rauemi, ka penapena ranei i te kawanatanga. Mo te ipu e rere ana i te waahi whakaputa, ko te whakamahi i te taunga tutei kia aukati i te ipu te mea pai ake.

I muri i te aukati i tetahi ipu rere, kia ma ki te horoi i nga toenga e waiho ana e te ipu mai i te taiao manaaki ma te whakamahi i nga whakahau e whai ake nei.

Te whakahaere i te Ipu i te Aratau Daemon

Ka ngana ana koe ki te whakahaere i nga whakahau o runga ake nei ki te aukati i te ipu, ka kite koe kaore e taea te whakamahi i te ripa kati i whakamahia e matou ki te hanga ipu ki te whakahaere i etahi atu whakahau mena ka patua e matou te ipu. Ka kitea e maatau he waahanga mo tenei ma te whakamahi i te ripa motuhake mo te whakahaere i nga whakahau hou.

Engari he pai ake te huarahi. Ka taea e taatau te whakahaere i te ipu i te momo daemon. Ma te momo daemon, ka rere te ipu ki muri kaore e whakamahia te ripa onaianei hei whakaatu i nga putanga.

Hei tiimata i tetahi ipu i roto i te momo daemon, me taapiri he kara -d taapiri ki te whakahau oma uta.

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

Te whakahaere i te Ipu i te Aratau Tauwhitiwhiti

Hei whakahaere i tetahi ipu i te aratau tauwhitiwhiti, me rere ke te ipu. Ka tae ana ki te aratau taunekeneke, ka taea e koe te whakahaere i nga whakahau ki te taapiri, ki te tango ranei i nga konae ki te ipu, ki te whakararangi i nga konae, ki te whakahaere ranei i etahi atu whakahau taapiri e whakamahia ana e maatau.

Whakamahia te whakahau e whai ake nei hei whakahaere i te ipu i te aratau taunekeneke.

docker exec -it e37 bash

Anei, ko e37 te ID ipu. Purei me te aratau tauwhitiwhiti ma te whakamahi i nga whakahau bash.

Whakamutunga

I roto i te akoranga tuatahi o ta maatau raupapa akoranga Docker, i ako koe me pehea te hanga ipu Docker mo te tono Node.js ngawari. Engari he maha atu nga mea ka taea e koe ki te Docker me nga ipu. I roto i a maatau akoranga ka whai ake nei, ka kite taatau me pehea te mahi me nga paataka, pukapuka, me te mahi me nga ipu maha e whakamahia ana e tetahi tono i hangaia me nga miihiniiti.