Te mohio ki a Docker

He maha nga marama e whakamahi ana ahau i a Docker ki te hanga i nga mahi whanaketanga/tuku o nga kaupapa tukutuku. Ka tukuna e ahau ki nga kaipānui Habrakhabr he whakamaoritanga o te tuhinga whakataki mo te docker - "Maramatanga docker".

He aha te docker?

Ko Docker he papa tuwhera mo te whakawhanake, te tuku, me te whakahaere tono. I hangaia a Docker kia tere ake te tuku i o tono. Ma te docker, ka taea e koe te wetewete i to tono mai i to hanganga me te mahi i nga hanganga hei tono whakahaere. Ka awhina a Docker ki a koe ki te tuku tere i to waehere, ki te whakamatautau tere, ki te tuku tono tere, me te whakaiti i te wa i waenga i te tuhi waehere me te waehere whakahaere. Ka mahia e Docker tenei na roto i te papa marikotanga ipu maamaa, ma te whakamahi i nga tikanga me nga taputapu hei awhina i a koe ki te whakahaere me te manaaki i o tono.

I tona uho, ka taea e te docker te whakahaere tata ki nga tono katoa, ka noho humarie ki roto i te ipu. Ma te noho motuhake ka taea e koe te whakahaere i nga ipu maha i runga i te ope kotahi i te wa kotahi. Ko te ahua mama o te ipu, e rere ana me te kore he taumahatanga atu o te hypervisor, ka taea e koe te tiki atu i o taputapu.

Ka whai hua te papa mariko ipu me nga taputapu i roto i nga keehi e whai ake nei:

  • tākai i tō tono (me ngā wāhanga e whakamahia ana e koe) ki roto i ngā ipu docker;
  • te tohatoha me te tuku i enei ipu ki o roopu hei whakawhanake me te whakamatautau;
  • te whakatakoto i enei ipu ki runga i o waahi whakaputanga, i nga pokapu raraunga me nga kapua.

Ka taea e au te whakamahi docker mo te aha?

Kia tere te whakaputa i o tono

He pai a Docker mo te whakarite i te huringa whanaketanga. Ka taea e Docker nga kaiwhakawhanake ki te whakahaere i nga ipu o te rohe me nga tono me nga ratonga. I muri mai ka taea e koe te whakauru ki te tukanga o te whakauru tonu me te tohatoha rerenga mahi.

Hei tauira, ka tuhia e to kaiwhakawhanake te waehere ki te rohe me te tiri i o raatau kohinga whanaketanga (he huinga whakaahua Docker) me o hoa mahi. Ka rite, ka panaia e ratou te waehere me nga ipu ki te waahi whakamatautau ka whakahaere i nga whakamatautau e tika ana. Mai i te waahi whakamatautau, ka taea e raatau te tuku waehere me nga whakaahua ki te whakaputa.

He ngawari ake te whakatakoto me te whakatuwhera

Ko te papaa-a-waa-a-waa ka ngawari ki te kawe i to utu. Ka taea e nga ipu Docker te rere i runga i to miihini rohe, ahakoa he mea tuuturu, he miihini mariko ranei i roto i te pokapū raraunga, i te kapua ranei.

Ko te ahua kawe me te ngawari o te docker he ngawari ki te whakahaere hihiri i to kawenga mahi. Ka taea e koe te whakamahi docker ki te tuku, ki te kati ranei i to tono, ratonga ranei. Ko te tere o te docker ka taea tenei mahi i roto i te waa tino.

He nui ake nga kawenga me te nui ake o nga utu

He mama, he tere hoki a Docker. Ka whakaratohia he momo rereke, he utu-utu ki nga miihini mariko-a-iipera. He tino whai hua i roto i nga taiao kawenga nui, hei tauira, i te wa e hanga ana i to ake kapua, i to turanga-as-ratonga ranei. Engari he pai hoki mo nga tono iti me te reo-rahi ina hiahia koe ki te whiwhi atu i nga rauemi kei a koe.

Nga Waahanga Docker Matua

E rua nga waahanga matua a Docker:

  • Docker: he papa mariko puna tuwhera;
  • Docker Hub: To tatou turanga-hei-ratonga mo te tohatoha me te whakahaere i nga ipu Docker.

Tuhipoka! Ka tohatohahia a Docker i raro i te raihana Apache 2.0.

Hangahanga Docker

Ka whakamahi a Docker i te hoahoanga-kaitono. Ka korero te kiritaki Docker ki te Docker daemon, e kawe ana i te taumaha ki te hanga, ki te whakahaere, ki te tohatoha i o ipu. Ka taea e te kiritaki me te kaimau te whakahaere i runga i te punaha kotahi, ka taea e koe te hono atu i te kiritaki ki te daemon docker mamao. Ka whakawhitiwhiti korero te kiritaki me te tūmau ma te turanga, he API RESTful ranei.

Te mohio ki a Docker

Docker daemon

Ka rite ki te whakaatu i te hoahoa, ka rere te daemon i runga i te miihini manaaki. Kaore te kaiwhakamahi e taunekeneke tika me te tūmau, engari ka whakamahi i te kiritaki mo tenei.

Kaitaki Docker

Ko te kiritaki Docker, te kaupapa docker, ko te atanga matua ki a Docker. Ka whiwhi tono mai i te kaiwhakamahi me te taunekeneke ki te daemon docker.

Kaitautoko o roto

Kia mohio ai koe he aha te docker, me mohio koe mo nga waahanga e toru:

  • whakaahua
  • rehita
  • nga ipu

Ngā whakaahua

Ko te ahua Docker he tauira panui-anake. Hei tauira, kei roto pea i te ahua te punaha whakahaere Ubuntu me Apache me tetahi tono kei runga. Ka whakamahia nga whakaahua hei hanga ipu. He maamaa te hanga a Docker ki te hanga whakaahua hou, whakahou i nga whakaahua o mua, ka taea ranei e koe te tango whakaahua i hangaia e etahi atu tangata. Ko nga whakaahua he waahanga o te hanga docker.

Rēhita

Ko te rehita Docker kei te rongoa whakaahua. He rehitatanga a-iwi me nga rehita motuhake ka taea e koe te tango, te tuku whakaahua ranei. He rēhita Docker tūmatanui he Hub tauranga. He kohinga nui o nga whakaahua kei reira. E mohio ana koe, ka taea e koe te hanga whakaahua, ka taea ranei e koe te whakamahi i nga whakaahua i hangaia e etahi atu. Ko nga rehitatanga he waahanga tohatoha.

Tuhinga

He rite nga ipu ki nga whaiaronga. Kei roto i nga ipu nga mea katoa e hiahia ana te tono ki te whakahaere. He mea hanga ia ipu mai i te ahua. Ka taea te hanga, ka timata, ka mutu, ka heke, ka mukua ranei nga ipu. Ka wehea ia ipu, ka whakarato i tetahi papaa haumaru mo te tono. Ko nga ipu he waahanga o te mahi.

Na me pehea te mahi a Docker?

I tenei wa e mohio ana matou:

  • ka taea e tatou te hanga whakaahua kei roto o tatou tono;
  • ka taea e tatou te hanga ipu mai i nga whakaahua hei whakahaere tono;
  • Ka taea e taatau te tohatoha whakaahua ma te Docker Hub, tetahi atu rehita whakaahua ranei.

Kia kite tatou he pehea te hono tahi o enei waahanga.

He pehea te mahi o te ahua?

Kua mohio tatou he tauira panui-anake te ahua i hangaia ai he ipu. He huinga taumata kei ia ahua. Ka whakamahia e Docker pūnaha kōnae uniana ki te whakakotahi i enei taumata ki te ahua kotahi. Ka taea e te punaha konae uniana nga konae me nga raarangi mai i nga punaha konae rereke (nga peka rereke) kia whiti marama, ka hanga he punaha konae.

Ko tetahi o nga take he maamaa te docker na te mea ka whakamahia e ia nga paparanga penei. Ina huri koe i te ahua, penei i te whakahou i tetahi tono, ka hangaia he paparanga hou. Na, me te kore e whakakapi i te ahua katoa, te hanga ano ranei, na te mea ka mahi koe ki te miihini mariko, ko te paparanga anake ka taapirihia, ka whakahouhia ranei. A kaore koe e tohatoha i te ahua hou katoa, ko te whakahou anake ka tohatohahia, ka ngawari ake, ka tere ake te tohatoha whakaahua.

Kei te ngakau o ia ahua he ahua taketake. Hei tauira, ko ubuntu, te ahua turanga o Ubuntu, ko te fedora ranei, te ahua o te tohatoha Fedora. Ka taea hoki e koe te whakamahi whakaahua hei turanga mo te hanga whakaahua hou. Hei tauira, mena he ahua apache koe, ka taea e koe te whakamahi hei ahua turanga mo o tono paetukutuku.

Tuhipoka! Ka kumea e Docker nga whakaahua mai i te rehita Docker Hub.

Ka taea te hanga whakaahua Docker mai i enei whakaahua taketake; ka kiia e matou nga hikoi hei hanga i enei whakaahua hei tohutohu. Ka hangaia e ia tohutohu he ahua hou, he taumata ranei. Ko nga tohutohu e whai ake nei:

  • whakahau rere
  • te taapiri i te konae, i te whaiaronga ranei
  • te hanga taurangi taiao
  • he tohutohu mo nga mea hei whakahaere ina whakarewahia te ipu o tenei ahua

Ka penapenahia enei tohutohu ki tetahi konae Dockerfile. Ka panuihia e Docker tenei Dockerfile, ka hanga e koe te ahua, mahia enei tohutohu ka whakahokia te ahua whakamutunga.

Me pehea te mahi rehita docker?

Ko te rehita he putunga mo nga whakaahua docker. Kia oti te hanga te ahua, ka taea e koe te whakaputa ki te rehita Docker Hub mo te iwi, ki to rehitatanga whaiaro ranei.

Ma te kiritaki docker, ka taea e koe te rapu whakaahua kua oti te whakaputa me te tango ki to miihini docker hei hanga ipu.

Ka whakarato a Docker Hub i nga putunga whakaahua a te iwi me te tangata takitahi. Kei te waatea te rapu me te tango whakaahua mai i nga whare pupuri a te iwi katoa. Ko nga ihirangi o nga rokiroki motuhake kaore i whakauruhia ki nga hua rapu. Ko koe anake me o kaiwhakamahi ka taea te tango i enei whakaahua me te hanga ipu mai i a raatau.

He pehea te mahi o te ipu?

Kei roto i tetahi ipu he punaha whakahaere, he konae kaiwhakamahi, he raraunga meta. E mohio ana tatou, he mea hanga ia ipu mai i te ahua. Ko tenei ahua e whakaatu ana ki te docker he aha kei roto i te ipu, he aha te tukanga ka timata, ka timata te ipu, me etahi atu raraunga whirihoranga. Ko te ahua Docker he panui-anake. I te wa e tiimata ana te Docker i tetahi ipu, ka hangaia he paparanga panui/tuhi ki runga ake o te ahua (ma te whakamahi i te punaha konae uniana pera i korero i mua) ka taea te whakahaere i te tono.

Ka aha ina timata te ipu?

Ma te whakamahi ranei i te papatono docker, ma te whakamahi ranei i te RESTful API, ka kii te kiritaki docker ki te daemon docker ki te timata i te ipu.

$ sudo docker run -i -t ubuntu /bin/bash

Kia titiro tatou ki tenei whakahau. Ka whakarewahia te kiritaki ma te whakamahi i te whakahau docker, me te kōwhiringa run, e kii ana ka whakarewahia he ipu hou. Ko nga whakaritenga iti mo te whakahaere ipu ko nga huanga e whai ake nei:

  • ko tehea whakaahua hei hanga i te ipu. I roto i to tatou take ubuntu
  • te whakahau e hiahia ana koe ki te whakahaere ina timata te ipu. I roto i to tatou take /bin/bash

He aha te mea ka tupu i raro i te awhi ina whakahaere tatou i tenei whakahau?

Ka mahia e Docker nga mea e whai ake nei:

  • ka tango i te ahua ubuntu: Ka tirohia e te kaitautoko mo te waatea o te ahua ubuntu i runga i te miihini o te rohe, a ki te kore i reira, katahi ka tango mai Hub tauranga. Mena he whakaahua, ka whakamahia hei hanga ipu;
  • hanga ipu: ka riro mai te ahua, ka whakamahia e te docker ki te hanga ipu;
  • ka arawhiti i te punaha konae ka whakairihia te taumata panui-anake: ka hangaia te ipu ki roto i te punaha konae ka taapirihia te ahua ki te taumata panui-anake;
  • ka arawhiti i te whatunga/piriti: ka hangaia he atanga whatunga e taea ai e te docker te korero ki te miihini manaaki;
  • Te tautuhi i te wāhitau IP: ka kimi me te tautuhi i te wahitau;
  • Ka timata te tukanga kua tohua: ka whakarewahia to tono;
  • Nga tukanga me te whakaputa putanga mai i to tono: ka hono me te tuhi i te whakaurunga paerewa, te putanga, me te awa hapa o to tono kia taea ai e koe te whai i te mahi a to tono.

He ipu mahi kei a koe inaianei. Ka taea e koe te whakahaere i to ipu, te taunekeneke me to tono. Ina whakatau koe ki te aukati i te tono, mukua te ipu.

Hangarau whakamahia

Kua tuhia a Docker ki te Haere me te whakamahi i etahi o te kernel Linux ki te whakatinana i nga mahi o runga ake nei.

Mokowāingoa

Ka whakamahi a Docker i te hangarau namespaces ki te whakarite mokowāmahi taratahi, e kiia nei he ipu. Ina timata tatou i tetahi ipu, ka hangaia e te docker he huinga mokowā ingoa mo taua ipu.

Ka waihangahia he paparanga taratahi, me ia ahuatanga o te ipu ka rere ki tona ake mokowāingoa me te kore e uru ki te punaha o waho.

Rarangi o etahi mokowāingoa e whakamahia ana e te docker:

  • pid: ki te wehe i te tukanga;
  • kupenga: mo te whakahaere atanga whatunga;
  • ipc: ki te whakahaere i nga rauemi IPC. (ICP: InterProccess Communication);
  • mnt: ki te whakahaere i nga tohu maunga;
  • utc: ki te wehe i te pata me te whakahaere i te whakaputanga whakaputanga (UTC: Unix timesharing system).

Nga roopu whakahaere

Ka whakamahi hoki a Docker i te hangarau cgroups rōpū whakahaere ranei. Ko te mea nui ki te whakahaere i tetahi tono motuhake ko te whakarato ki te tono nga rauemi e hiahia ana koe ki te whakarato. Ma tenei ka whakarite kia noho tata nga ipu. Ka taea e nga roopu whakahaere te tiri i nga rauemi taputapu e waatea ana, me te mea e tika ana, whakatauhia nga rohe me nga here. Hei tauira, whakawhāitihia te rahi o te pūmahara mō te ipu.

Pūnaha Kōnae Uniana

Ko te Union File Sysem, ko te UnionFS ranei he punaha konae e mahi ana ma te hanga i nga paparanga, kia tino mama, kia tere hoki. Ka whakamahi a Docker i te UnionFS hei hanga i nga poraka i hangaia ai te ipu. Ka taea e Docker te whakamahi i nga momo rereke o UnionFS tae atu ki: AUFS, btrfs, vfs me DeviceMapper.

Nga whakatakotoranga ipu

Ka whakakotahihia e Docker enei waahanga ki te takai e kiia nei ko te whakatakotoranga ipu. Ka karangahia te whakatakotoranga taunoa libcontainer. Kei te tautoko a Docker i te whakatakotoranga ipu tuku iho i runga i te Linux ma te whakamahi LXC. Ake ake nei, ka tautoko pea a Docker i etahi atu whakatakotoranga ipu. Hei tauira, te whakauru ki nga Whareherehere BSD me nga Rohe Solaris ranei.

Source: will.com

Tāpiri i te kōrero