Ịghọta Docker

A na m eji Docker ọtụtụ ọnwa ugbu a iji hazie usoro mmepe / nnyefe nke ọrụ weebụ. Ana m enye ndị na-agụ Habrakhabr ntụgharị asụsụ nke edemede mmalite gbasara docker - "Nghọta docker".

Kedu ihe bụ docker?

Docker bụ ikpo okwu mepere emepe maka ịmepụta, ibufe na ngwa arụ ọrụ. Emebere Docker iji wepụta ngwa gị ngwa ngwa. Site na docker, ị nwere ike ihichapụ ngwa gị site na akụrụngwa gị wee were akụrụngwa dịka ngwa a na-achịkwa. Docker na-enyere gị aka ibubata koodu gị ngwa ngwa, nwalee ngwa ngwa, bupu ngwa ngwa ngwa, wee belata oge n'etiti koodu ederede na koodu ịgba ọsọ. Docker na-eme nke a site na ikpo okwu njiri mara akpa dị fechaa, na-eji usoro na akụrụngwa na-enyere gị aka ijikwa ma kwado ngwa gị.

Na isi ya, docker na-enye gị ohere ịme ihe fọrọ nke nta ka ọ bụrụ ngwa ọ bụla, nke dịpụrụ adịpụ n'ime akpa. Kewapụ nke ọma na-enye gị ohere ịme ọtụtụ akpa n'otu onye ọbịa n'otu oge. Ọdịdị dị arọ nke akpa ahụ, nke na-agba ọsọ na-enweghị ibu ọzọ nke hypervisor, na-enye gị ohere ịnweta ihe ndị ọzọ na ngwaike gị.

Igwe ikpo okwu na akụrụngwa nwere ike ịba uru n'ọnọdụ ndị a:

  • na-akwakọba ngwa gị (na ihe ndị ị na-eji) n'ime arịa docker;
  • nkesa na nnyefe nke arịa ndị a na ndị otu gị maka mmepe na ule;
  • Ịtọpụta arịa ndị a na saịtị mmepụta gị, ma na ebe data na n'ígwé ojii.

Kedu ihe m nwere ike iji docker maka?

Bipụta ngwa gị ngwa ngwa

Docker dị mma maka ịhazi okirikiri mmepe. Docker na-enye ndị mmepe ohere iji ngwa na ọrụ were akpa akpa mpaghara. Nke emesia na-enye gị ohere ijikọ na usoro nke ntinye aka na ntinye ọrụ na-aga n'ihu.

Dịka ọmụmaatụ, ndị mmepe gị na-ede koodu na mpaghara wee kesaa ndị ọrụ ibe ha nchịkọta mmepe ha (otu ihe oyiyi Docker). Mgbe ha dị njikere, ha na-atụgharị koodu na arịa gaa na saịtị nnwale wee mee ule ọ bụla dị mkpa. Site na saịtị nnwale, ha nwere ike izipu koodu na onyonyo na mmepụta.

Ọ dị mfe ịtọpụta na mkpughe

Ikpokoro akpa akpa docker na-eme ka ọ dị mfe ibufe ibu ọrụ gị. Akpa Docker nwere ike na-agba ọsọ na igwe mpaghara gị, ma ọ bụ n'ezie ma ọ bụ na igwe mebere na ebe data, ma ọ bụ n'igwe ojii.

Mbugharị na ọdịdị dị fechaa nke docker na-eme ka ọ dị mfe ijikwa ike ọrụ gị. Ị nwere ike iji docker ka ibugharị ma ọ bụ mechie ngwa ma ọ bụ ọrụ gị. Ọsọ nke docker na-enye ohere ime nke a ozugbo ozugbo.

Ibu dị elu yana ibu ndị ọzọ akwụ ụgwọ

Docker dị fechaa na ngwa ngwa. Ọ na-enye ihe ọzọ na-agbanwe agbanwe, dị ọnụ ala karịa igwe mebere hypervisor dabere. Ọ bara uru karịsịa na gburugburu nnukwu ibu, dịka ọmụmaatụ, mgbe ị na-emepụta igwe ojii ma ọ bụ ikpo okwu-dị ka ọrụ. Mana ọ bara uru maka ngwa obere na ọkara mgbe ịchọrọ ị nwetakwu ihe na akụrụngwa ị nwere.

Ngwa isi Docker

Docker nwere isi ihe abụọ:

  • Docker: ikpo okwu mepere emepe nke mepere emepe;
  • Docker Hub: ikpo okwu anyị dị ka ọrụ maka ikesa na ijikwa arịa Docker.

Mara! A na-ekesa Docker n'okpuru ikike Apache 2.0.

Docker architecture

Docker na-eji nhazi ihe nkesa nke ndị ahịa. Onye ahịa Docker na-ekwurịta okwu na Docker daemon, nke na-ebu ibu nke imepụta, ịgba ọsọ na ikesa arịa gị. Ma onye ahịa na ihe nkesa nwere ike na-agba ọsọ n'otu usoro, ị nwere ike jikọọ onye ahịa na daemon docker dịpụrụ adịpụ. Onye ahịa na ihe nkesa na-ekwurịta okwu site na oghere ma ọ bụ RESTful API.

Ịghọta Docker

Docker daemon

Dị ka e gosiri na eserese, daemon na-agba ọsọ na igwe nnabata. Onye ọrụ anaghị emekọrịta ihe na sava ozugbo, mana ọ na-eji onye ahịa maka nke a.

Onye ahịa Docker

Onye ahịa Docker, mmemme docker, bụ isi interface na Docker. Ọ na-enweta iwu n'aka onye ọrụ wee soro docker daemon na-emekọrịta ihe.

N'ime docker

Iji ghọta ihe docker nwere, ị kwesịrị ịma gbasara ihe atọ:

  • onyonyo
  • ndekọ
  • akpa

Foto

Ihe onyonyo Docker bụ ndebiri naanị ọgụgụ. Dịka ọmụmaatụ, onyonyo a nwere ike ịnwe sistemụ arụmọrụ Ubuntu nwere Apache yana ngwa dị na ya. A na-eji ihe onyonyo mepụta arịa. Docker na-eme ka ọ dị mfe ịmepụta onyonyo ọhụrụ, melite ndị dị adị, ma ọ bụ ị nwere ike budata onyonyo nke ndị ọzọ mepụtara. Onyonyo bụ akụkụ nke ihe nrụpụta docker.

Ndebanye aha

Ndebanye aha Docker na-echekwa onyonyo. Enwere ndekọ ọha na nke nzuzo nke ị nwere ike ibudata ma ọ bụ bulite onyonyo. Ndebanye aha Docker ọha bụ Ogwe Docker. Enwere nnukwu nchịkọta ihe oyiyi echekwara n'ebe ahụ. Dị ka ị maara, ị nwere ike ịmepụta ihe oyiyi ma ọ bụ ị nwere ike iji ihe oyiyi ndị ọzọ kere. Ndebanye aha bụ mpaghara nkesa.

.Онтейнеры

Akpa dị ka akwụkwọ ndekọ aha. Ngwa nwere ihe niile ngwa chọrọ ka ọ na-agba. A na-emepụta akpa ọ bụla site na onyonyo. Enwere ike ịmepụta, malite, kwụsị, ịkwaga ma ọ bụ ihichapụ arịa. Akpa ọ bụla dịpụrụ adịpụ ma na-enye ikpo okwu echekwara maka ngwa ahụ. Akpa bụ akụkụ nke ọrụ ahụ.

Yabụ kedu ka Docker si arụ ọrụ?

Ruo ugbu a, anyị maara na:

  • anyị nwere ike ịmepụta ihe oyiyi nke ngwa anyị dị;
  • anyị nwere ike ịmepụta arịa si na ihe oyiyi na-agba ọsọ ngwa;
  • Anyị nwere ike kesaa onyonyo site na Docker Hub ma ọ bụ ndekọ onyonyo ọzọ.

Ka anyị hụ otú ihe ndị a si kwekọọ ọnụ.

Kedu ka ihe onyonyo a si arụ ọrụ?

Anyị amatalarị na onyonyo bụ ndebiri naanị ọgụgụ nke e si kee akpa. Onyonyo ọ bụla nwere usoro ọkwa. Docker na-eji usoro faịlụ otu iji jikọta ọkwa ndị a n'otu onyonyo. Sistemụ faịlụ Union na-enye ohere faịlụ na akwụkwọ ndekọ aha sitere na sistemụ faịlụ dị iche iche (alaka dị iche iche) ka ha na-adaba n'ụzọ doro anya, na-ekepụta usoro faịlụ na-ejikọta ọnụ.

Otu ihe kpatara docker ji dị fechaa bụ n'ihi na ọ na-eji akwa dị ka nke a. Mgbe ị gbanwere onyonyo a, dị ka imelite ngwa, a na-emepụta oyi akwa ọhụrụ. Yabụ, na-enweghị dochie onyonyo niile ma ọ bụ wughachi ya, dịka ị nwere ike iji igwe mebere, naanị akwa akwa ka etinyere ma ọ bụ melite ya. Na ịkwesighi ikesa ihe oyiyi ọhụrụ ahụ dum, naanị mmelite na-ekesa, na-eme ka ọ dị mfe na ngwa ngwa ikesa ihe oyiyi.

N'ime obi nke ihe oyiyi ọ bụla bụ ihe oyiyi bụ isi. Dịka ọmụmaatụ, ubuntu, isi ihe oyiyi nke Ubuntu, ma ọ bụ fedora, isi ihe oyiyi nke nkesa Fedora. Ịnwekwara ike iji onyonyo dịka ntọala maka imepụta onyonyo ọhụrụ. Dịka ọmụmaatụ, ọ bụrụ na ị nwere ihe oyiyi apache, ị nwere ike iji ya dị ka ihe ndabere maka ngwa weebụ gị.

Mara! Docker na-adọtakarị onyonyo site na ndekọ Docker Hub.

Enwere ike ịmepụta ihe oyiyi docker site na ihe oyiyi ntọala ndị a; anyị na-akpọ usoro iji mepụta ntuziaka foto ndị a. Ntuziaka ọ bụla na-emepụta onyonyo ma ọ bụ ọkwa ọhụrụ. Ntuziaka ga-abụ nke a:

  • ọsọ iwu
  • na-agbakwụnye faịlụ ma ọ bụ ndekọ
  • ịmepụta mgbanwe gburugburu ebe obibi
  • ntụziaka maka ihe ị ga-agba ọsọ mgbe akpa ihe oyiyi a malitere

A na-echekwa ntuziaka ndị a na faịlụ Dockerfile. Docker gụrụ nke a Dockerfile, mgbe ị na-ewu ihe onyonyo a, mebie ntuziaka ndị a wee weghachi onyonyo ikpeazụ.

Kedu ka ndekọ docker si arụ ọrụ?

Ndebanye aha bụ ebe nchekwa maka onyonyo docker. Ozugbo emepụtara onyonyo a, ị nwere ike ibipụta ya na ndekọ Docker Hub ọha ma ọ bụ na ndekọ nkeonwe gị.

Site na onye ahịa docker, ị nwere ike chọọ onyonyo ebipụtalarị wee budata ha na igwe docker gị ka imepụta arịa.

Docker Hub na-enye ebe nchekwa onyonyo ọha na nke onwe. Ịchọ na nbudata onyonyo sitere na ebe nchekwa ọha dị maka onye ọ bụla. Agụnyeghi ọdịnaya nke nchekwa nkeonwe na nsonaazụ ọchụchọ. Na naanị gị na ndị ọrụ gị nwere ike ịnata onyonyo ndị a wee mepụta arịa n'aka ha.

Kedu ka akpa si arụ ọrụ?

Otu akpa nwere sistemụ arụmọrụ, faịlụ ndị ọrụ na metadata. Dị ka anyị maara, a na-emepụta akpa ọ bụla site na ihe oyiyi. Onyonyo a na-agwa docker ihe dị na akpa, usoro ị ga-amalite, mgbe akpa ahụ malitere, yana data nhazi ndị ọzọ. Ihe onyonyo Docker bụ naanị ọgụgụ. Mgbe docker na-amalite akpa, ọ na-emepụta oyi akwa na-agụ / dee n'elu ihe oyiyi ahụ (iji usoro faịlụ otu dị ka ekwuru na mbụ) nke enwere ike ịme ngwa ahụ.

Kedu ihe na-eme mgbe akpa ahụ malitere?

Ma ọ bụ iji mmemme docker, ma ọ bụ iji API RESTful, onye ahịa docker na-agwa docker daemon ka ọ malite akpa ahụ.

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

Ka anyị leba anya n'iwu a. A na-eji iwu ahụ malite onye ahịa ahụ docker, na nhọrọ run, nke na-ekwu na a ga-ebuba akpa ọhụrụ. Opekempe chọrọ iji rụọ akpa bụ àgwà ndị a:

  • Kedu ihe oyiyi ị ga-eji mepụta akpa ahụ. N'ọnọdụ anyị ubuntu
  • iwu nke ịchọrọ ịgba ọsọ mgbe akpa ahụ malitere. N'ọnọdụ anyị /bin/bash

Kedu ihe na-eme n'okpuru mkpuchi mgbe anyị na-eme iwu a?

Docker, n'usoro, na-eme ihe ndị a:

  • budata onyonyo ubuntu: docker na-enyocha ihe oyiyi dị ubuntu na igwe mpaghara, ma ọ bụrụ na ọ nọghị, wee budata ya Ogwe Docker. Ọ bụrụ na e nwere ihe oyiyi, ọ na-eji ya emepụta akpa;
  • na-emepụta akpa: mgbe enwetara onyonyo a, docker na-eji ya mepụta akpa;
  • na-ebido sistemụ faịlụ wee bulie ọkwa naanị ọgụgụ: A na-emepụta akpa ahụ na usoro faịlụ ma tinye ihe oyiyi ahụ na ọkwa ọgụgụ naanị;
  • malite netwọk/akwa: na-emepụta netwọk netwọk nke na-enye ohere docker ka ya na igwe nnabata na-ekwurịta okwu;
  • Ịtọlite ​​adreesị IP: chọta ma tọọ adreesị;
  • Na-amalite usoro akọwapụtara: malite ngwa gị;
  • Na-ahazi ma na-emepụta ihe sitere na ngwa gị: jikọọ na dekọọ ndenye ọkọlọtọ, mmepụta na njehie ngwa gị ka ị nwee ike soro ka ngwa gị si arụ ọrụ.

Ị nwere akpa na-arụ ọrụ ugbu a. Ị nwere ike ijikwa akpa gị, jikọọ ngwa gị. Mgbe ị kpebiri ịkwụsị ngwa ahụ, hichapụ akpa ahụ.

Teknụzụ eji

Edere Docker na Go ma jiri ụfọdụ atụmatụ nke kernel Linux mejuputa ọrụ dị n'elu.

Oghere aha

Docker na-eji teknụzụ namespaces iji hazie ebe ọrụ dịpụrụ adịpụ, nke anyị na-akpọ arịa. Mgbe anyị malitere akpa, docker na-emepụta oghere aha maka akpa ahụ.

Nke a na-emepụta oyi akwa dịpụrụ adịpụ, na akụkụ ọ bụla nke akpa na-agba ọsọ na aha nke ya ma ghara ịnweta usoro mpụga.

Ndepụta ụfọdụ oghere aha ndị docker na-eji:

  • pid: ikewapụ usoro ahụ;
  • ụgbụ: maka ijikwa netwọk netwọk;
  • ipc: iji jikwaa akụrụngwa IPC. (ICP: InterProccess Communication);
  • mnt: ijikwa ebe ugwu;
  • utc: ikewapụ kernel na ọgbọ ụdị njikwa (UTC: Unix timesharing system).

Otu njikwa

Docker na-ejikwa teknụzụ cgroups ma ọ bụ otu njikwa. Isi ihe na-eme ngwa na-anọpụ iche bụ ịnye ngwa ahụ naanị akụrụngwa ịchọrọ ịnye. Nke a na-eme ka o doo anya na akpa ndị ahụ ga-abụ ezigbo ndị agbata obi. Otu njikwa na-enye gị ohere ịkekọrịta akụrụngwa ngwaike dị yana, ọ bụrụ na ọ dị mkpa, tọọ oke na mmachi. Dịka ọmụmaatụ, kpachie oke ebe nchekwa maka akpa.

Sistemụ faịlụ Union

Union File Sysem ma ọ bụ UnionFS bụ sistemụ faịlụ na-arụ ọrụ site na ịmepụta akwa akwa, na-eme ka ọ dị fechaa na ngwa ngwa. Docker na-eji UnionFS mepụta ngọngọ nke ejiri wuo akpa ahụ. Docker nwere ike iji ọtụtụ ụdị dị iche iche nke UnionFS gụnyere: AUFS, btrfs, vfs na DeviceMapper.

Ụdị akpa

Docker na-ejikọta ihe ndị a n'ime ihe mkpuchi anyị na-akpọ usoro akpa. A na-akpọ usoro ndabara libcontainer. Docker na-akwado usoro akpa ọdịnala na Linux site na iji LXC. N'ọdịnihu, Docker nwere ike ịkwado ụdị akpa ndị ọzọ. Dịka ọmụmaatụ, ijikọ na BSD Jails ma ọ bụ Mpaghara Solaris.

isi: www.habr.com

Tinye a comment