Chee echiche nke ọma tupu iji Docker-in-Docker maka CI ma ọ bụ nwalee gburugburu

Chee echiche nke ọma tupu iji Docker-in-Docker maka CI ma ọ bụ nwalee gburugburu

Docker-in-Docker bụ gburugburu Docker daemon mebere nke ọma na-agba n'ime akpa n'onwe ya iji wuo ihe onyonyo akpa. Ebumnuche bụ isi nke ịmepụta Docker-in-Docker bụ iji nyere aka ịzụlite Docker n'onwe ya. Ọtụtụ ndị mmadụ na-eji ya na-agba Jenkins CI. Nke a dị ka ihe nkịtị na mbụ, mana nsogbu na-ebilite nke enwere ike izere site na ịwụnye Docker n'ime akpa Jenkins CI. Akụkọ a na-agwa gị otu esi eme nke a. Ọ bụrụ na ị nwere mmasị na ngwọta ikpeazụ na-enweghị nkọwa, naanị gụọ akụkụ ikpeazụ nke isiokwu ahụ, "Ndozi nsogbu ahụ."

Chee echiche nke ọma tupu iji Docker-in-Docker maka CI ma ọ bụ nwalee gburugburu

Docker-in-Docker: "Ọ dị mma"

Ihe karịrị afọ abụọ gara aga etinyere m Docker ọkọlọtọ – ihe ùgwù na dee mbụ version nke dind. Ebumnuche bụ inyere ndị otu isi aka ịzụlite Docker ngwa ngwa. Tupu Docker-in-Docker, usoro mmepe a na-ahụkarị dị ka nke a:

  • mbanye anataghị ikike;
  • wuo;
  • ịkwụsị Docker daemon na-agba ọsọ;
  • ịmalite Docker daemon ọhụrụ;
  • ule;
  • megharịa okirikiri.

Ọ bụrụ na ịchọrọ ịme mgbakọ mara mma, nke a na-emegharịgharị (ya bụ, n'ime akpa), mgbe ahụ ọ bịara dị mgbagwoju anya:

  • mbanye anataghị ikike;
  • gbaa mbọ hụ na ụdị Docker na-arụ ọrụ;
  • jiri Docker ochie wuo Docker ọhụrụ;
  • kwụsị Docker daemon;
  • malite docker daemon ọhụrụ;
  • nwale;
  • kwụsị Docker daemon ọhụrụ;
  • kwugharịa.

Site na ọbịbịa nke Docker-in-Docker, usoro a adịla mfe:

  • mbanye anataghị ikike;
  • mgbakọ + mmalite na otu ogbo;
  • megharịa okirikiri.

Ọ bụ na ọ kaghị mma otú a?

Chee echiche nke ọma tupu iji Docker-in-Docker maka CI ma ọ bụ nwalee gburugburu

Docker-in-Docker: "Ọjọrọ"

Agbanyeghị, megidere nkwenye ndị ama ama, Docker-in-Docker abụghị 100% kpakpando, ponies na unicorns. Ihe m na-ekwu bụ na enwere ọtụtụ okwu onye nrụpụta kwesịrị ịma.

Otu n'ime ha na-eche banyere LSMs (Modul nchekwa Linux) dị ka AppArmor na SELinux: mgbe ị na-agba akpa, "Docker ime" nwere ike ịnwa itinye profaịlụ nchekwa nke ga-emegide ma ọ bụ gbaghaa "Docker mpụga". Nke a bụ nsogbu kacha sie ike idozi mgbe ị na-agbalị ijikọ mmejuputa iwu mbụ nke ọkọlọtọ -privileged. Mgbanwe m na-arụ ọrụ na ule niile ga-agafe na igwe Debian m na Ubuntu nwale VM, ma ha ga-adaba na ọkụ na igwe Michael Crosby (o nwere Fedora ka m na-echeta). Enweghị m ike icheta kpọmkwem ihe kpatara nsogbu ahụ, ma ọ nwere ike ịbụ n'ihi na Mike bụ onye maara ihe nke na-arụ ọrụ na SELINUX = enforce (m na-eji AppArmor) na mgbanwe m ejighị profaịlụ SELinux n'uche.

Docker-in-Docker: "Ajọ"

Okwu nke abụọ bụ na ndị ọkwọ ụgbọ ala nchekwa Docker. Mgbe ị na-agba Docker-in-Docker, Docker mpụga na-agba ọsọ n'elu sistemụ faịlụ mgbe niile (EXT4, BTRFS, ma ọ bụ ihe ọ bụla ị nwere) na Docker n'ime ya na-agba n'elu sistemụ nnomi na-ede (AUFS, BTRFS, Mapper Device). , wdg). , dabere n'ihe ahaziri iji Docker mpụga). Nke a na-emepụta ọtụtụ nchikota na-agaghị arụ ọrụ. Dịka ọmụmaatụ, ịgaghị enwe ike ịgba AUFS n'elu AUFS.

Ọ bụrụ na ị na-agba ọsọ BTRFS n'elu BTRFS, ọ kwesịrị ịrụ ọrụ na mbụ, ma ozugbo enwere obere mpịakọta, ihichapụ subvolume nne na nna ga-ada. Ngwaọrụ Mapper modul enweghị aha aha, yabụ ọ bụrụ na ọtụtụ Docker na-agba ya n'otu igwe, ha niile ga-enwe ike ịhụ (ma nwee mmetụta) onyonyo na ibe ha yana na ngwaọrụ nchekwa akpa. Nke a dị njọ.

Enwere ụzọ iji dozie ọtụtụ nsogbu ndị a. Dịka ọmụmaatụ, ọ bụrụ na ịchọrọ iji AUFS na Docker ime, gbanwee folda / var / lib / docker ka ọ bụrụ olu ma ị ga-adị mma. Docker agbakwunyela ụfọdụ oghere aha ntọala na aha ebumnuche ngwaọrụ Mapper nke mere na ọ bụrụ na ọtụtụ oku Docker na-agba n'otu igwe, ha agaghị agba ụkwụ na ibe ha.

Otú ọ dị, nhazi dị otú ahụ adịghị mfe ma ọlị, dị ka a pụrụ ịhụ site na ndị a isiokwu na ebe nchekwa dind na GitHub.

Docker-in-Docker: Ọ na-akawanye njọ

Kedu maka ebe nchekwa ihe nrụpụta? Nke a nwekwara ike isi ike. Ndị mmadụ na-ajụkarị m “ọ bụrụ na m na-agba Docker-in-Docker, kedu ka m ga-esi jiri onyonyo akwadoro na onye ọbịa m kama iweghachite ihe niile na Docker nke ime m”?

Ụfọdụ ndị ọchụnta ego agbalịwo ijikọta /var/lib/docker site na onye ọbịa na akpa Docker-in-Docker. Mgbe ụfọdụ, ha na-ekerịta /var/lib/docker na ọtụtụ akpa.

Chee echiche nke ọma tupu iji Docker-in-Docker maka CI ma ọ bụ nwalee gburugburu
Ị chọrọ imebi data gị? N'ihi na nke a bụ kpọmkwem ihe ga-emebi data gị!

Emebere Docker daemon nke ọma ka ọ nwee ohere pụrụ iche na /var/lib/docker. Ọ dịghị ihe ọzọ kwesịrị 'metụ, kpatụ, ma ọ bụ prod' faịlụ Docker ọ bụla dị na folda a.

Gịnị mere nke a ji dị otú a? N'ihi na nke a bụ nsonaazụ nke otu nkuzi kacha sie ike a mụtara mgbe ị na-etolite dotCloud. Igwe akpa dotCloud na-agba ọsọ site n'inwe ọtụtụ usoro ịnweta /var/lib/dotcloud n'out oge. Aghụghọ aghụghọ dị ka ndochi faịlụ atomic (kama idezi ebe), koodu ose nwere ndụmọdụ na mkpọchi iwu, yana nnwale ndị ọzọ nwere sistemu echedoro dị ka SQLite na BDB anaghị arụ ọrụ mgbe niile. Mgbe anyị na-emezigharị igwe akpa anyị, nke mechara bụrụ Docker, otu n'ime mkpebi ndị dị oke mkpa bụ ijikọ ọrụ akpa niile n'okpuru otu daemon iji wepụ okwu nzuzu niile.

Aghọtaghị m: ọ ga-ekwe omume kpamkpam ịme ihe dị mma, ntụkwasị obi na ngwa ngwa nke gụnyere ọtụtụ usoro na njikwa ihe n'oge a. Mana anyị chere na ọ dị mfe ma dị mfe ide na idobe koodu site na iji Docker dị ka naanị onye ọkpụkpọ.

Nke a pụtara na ọ bụrụ na ị na-ekekọrịta ndekọ / var/lib/docker n'etiti ọtụtụ oge Docker, ị ga-enwe nsogbu. N'ezie, nke a nwere ike ịrụ ọrụ, karịsịa na mmalite nke ule. "Gee ntị, Ma, enwere m ike ịgba ọsọ ubuntu dị ka docker!" Ma gbalịa ihe dị mgbagwoju anya, dị ka ịdọrọ otu ihe oyiyi site n'ụdị abụọ dị iche iche, ị ga-ahụkwa ụwa ọkụ.

Nke a pụtara na ọ bụrụ na sistemụ CI gị na-ewulite ma wughachi ya, oge ọ bụla ịmalitegharị akpa Docker-in-Docker gị, ị nwere ike itinye nuke n'ime oghere ya. Nke a adịghị mma ma ọlị!

Nchọpụta nsogbu

Ka anyị were nzọụkwụ azụ azụ. Ị chọrọ Docker-in-Docker n'ezie ma ọ bụ na ịchọrọ ka ị nwee ike ịgba ọsọ Docker wee wuo ma na-agba ọsọ na ihe oyiyi site na sistemụ CI gị ebe usoro CI n'onwe ya nọ n'ime akpa?

M nzọ na ọtụtụ ndị chọrọ nke ikpeazụ nhọrọ, nke pụtara na ha chọrọ a CI usoro dị ka Jenkins na-enwe ike na-agba ọsọ arịa. Ụzọ kachasị mfe iji mee nke a bụ naanị itinye oghere Docker n'ime akpa CI gị wee jikọta ya na ọkọlọtọ -v.

N'ikwu ya n'ụzọ dị mfe, mgbe ị na-agba ọsọ CI gị (Jenkins ma ọ bụ ndị ọzọ), kama iji Docker-in-Docker mee ihe, malite ya na ahịrị:

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

Akpa a ga-enwezi ohere ịbanye na oghere Docker wee nwee ike ịgbanye arịa. Ewezuga na kama ịgbanye arịa “ụmụaka”, ọ ga-ebunye arịa “ụmụnne”.

Nwaa nke a site na iji onyonyo docker (nke nwere ọnụọgụ abụọ Docker):

docker run -v /var/run/docker.sock:/var/run/docker.sock 
           -ti docker

Ọ na-ele anya ma na-arụ ọrụ dị ka Docker-in-Docker, mana ọ bụghị Docker-in-Docker: mgbe akpa a na-emepụta arịa ndị ọzọ, a ga-emepụta ha na Docker dị elu. Ị gaghị enweta mmetụta dị n'akụkụ akwu, a ga-ekekọrịta cache mgbakọ n'oku ọtụtụ oku.

Mara: Ụdị edemede a gara aga nyere ndụmọdụ ijikọ ọnụọgụ abụọ Docker site na onye ọbịa na akpa ahụ. Nke a abụrụla ihe a na-apụghị ịdabere na ya n'ihi na injin Docker anaghịkwa ekpuchi ọba akwụkwọ dị nso ma ọ bụ static.

Yabụ, ọ bụrụ na ịchọrọ iji Docker si Jenkins CI, ị nwere nhọrọ abụọ:
ịwụnye Docker CLI site na iji usoro nkwakọ ihe oyiyi bụ isi (ya bụ, ọ bụrụ na onyonyo gị dabere na Debian, jiri ngwugwu .deb), na-eji Docker API.

Ụfọdụ mgbasa ozi 🙂

Daalụ maka ịnọnyere anyị. Akụkọ anyị ọ masịrị gị? Chọrọ ịhụ ọdịnaya na-adọrọ mmasị karị? Kwado anyị site n'itinye iwu ma ọ bụ ịkwado ndị enyi, igwe ojii VPS maka ndị mmepe sitere na $ 4.99, analog pụrụ iche nke sava ọkwa ntinye, nke anyị chepụtara maka gị: Eziokwu niile gbasara VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps site na $19 ma ọ bụ otu esi ekekọrịta ihe nkesa? (dị na RAID1 na RAID10, ruo 24 cores na ruo 40GB DDR4).

Dell R730xd 2x dị ọnụ ala na etiti data Equinix Tier IV na Amsterdam? Naanị ebe a 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV sitere na $199 na Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - sitere na $99! Gụkwuo banyere ya Kedu otu esi emepụta Infrastructure Corp. klas na iji Dell R730xd E5-2650 v4 sava kwesịrị 9000 euro maka otu penny?

isi: www.habr.com

Tinye a comment