Ko Docker-in-Docker he taiao Docker daemon mariko e rere ana i roto i te ipu hei hanga whakaahua ipu. Ko te kaupapa matua o te hanga Docker-in-Docker he awhina ki te whakawhanake i a Docker ake. He maha nga tangata e whakamahi ana hei whakahaere i a Jenkins CI. He ahua noa tenei i te tuatahi, engari ka puta nga raru ka taea te karo ma te whakauru i a Docker ki roto i te ipu Jenkins CI. Ka korero tenei tuhinga ki a koe me pehea e mahi ai. Mena kei te pirangi koe ki te otinga whakamutunga kaore he taipitopito, panuihia te waahanga whakamutunga o te tuhinga, "Te Whakaoti Raruraru."
Docker-in-Docker: "He pai"
Neke atu i te rua tau ki muri ka whakauru ahau ki Docker
- hackity hack;
- hanga;
- te whakamutu i te daemon Docker e rere ana;
- te whakarewa i tetahi daemon Docker hou;
- whakamatautau;
- tuaruatia te huringa.
Mena ka hiahia koe ki te hanga i tetahi huihuinga ataahua, ka taea te whakaputa (ara, i roto i te ipu), katahi ka tino uaua:
- hackity hack;
- kia mohio kei te rere tetahi putanga mahi o Docker;
- hanga Docker hou me Docker tawhito;
- mutu Docker daemon;
- tīmatahia he daemon Docker hou;
- whakamātautau;
- whakamutua te daemon Docker hou;
- tukurua.
Na te taenga mai o Docker-in-Docker, kua ngawari ake te mahi:
- hackity hack;
- te huihuinga + whakarewa i te waahanga kotahi;
- tuaruatia te huringa.
Ehara i te mea pai ake i tenei huarahi?
Docker-in-Docker: "Kino"
Heoi, he rereke ki nga whakapono rongonui, ko Docker-in-Docker ehara i te 100% nga whetu, nga poni me nga unicorn. Ko taku tikanga he maha nga take e tika ana kia mohiohia e te kaiwhakawhanake.
Ko tetahi o ratou e pa ana ki nga LSM (Linux security modules) penei i te AppArmor me te SELinux: i te wa e whakahaere ana i tetahi ipu, ka ngana te "Docker o roto" ki te tono i nga korero haumarutanga ka taupatupatu, ka pohehe ranei i te "Docker waho". Koinei te raru tino uaua ki te whakaoti i te wa e ngana ana ki te hanumi i te whakatinanatanga taketake o te haki -privileged. I mahi aku huringa ka paahi nga whakamatautau katoa ki taku miihini Debian me nga VM whakamatautau Ubuntu, engari ka pakaru, ka wera ki runga i te miihini a Michael Crosby (kei a ia a Fedora e maumahara ana ahau). Kaore au e mahara ki te tino take o te raru, engari na te mea he tangata mohio a Mike e mahi tahi ana me SELINUX=enforce (I whakamahia e ahau te AppArmor) a ko aku huringa kaore i aro ki nga korero a SELinux.
Docker-in-Docker: "Kino"
Ko te take tuarua ko nga taraiwa rokiroki Docker. Ka whakahaerehia e koe a Docker-in-Docker, ka rere a Docker o waho ki runga ake o te punaha konae (EXT4, BTRFS, aha ranei kei a koe) ka rere a Docker o roto ki runga ake o te punaha kape-tuhi-tuhi (AUFS, BTRFS, Pūrere Mahere , etc.). , i runga i nga mea i whirihorahia hei whakamahi i te Docker waho). Ka hangaia e tenei he maha nga huinga kaore e mahi. Hei tauira, kare e taea e koe te whakahaere AUFS ki runga ake o AUFS.
Mena kei te whakahaere koe i te BTRFS ki runga ake o te BTRFS, me mahi i te tuatahi, engari i te wa kua kohanga nga waahanga iti, ka kore te whakakore i te riipene matua. Karekau he mokowāingoa o te kōwae Pūrere Mahere, na mena he maha nga tauira Docker e whakahaere ana i runga i te miihini kotahi, ka taea e ratou katoa te kite (me te awe) i nga whakaahua ki a raatau me nga taputapu taapiri ipu. He kino tenei.
He huarahi hei whakaoti i te maha o enei raru. Hei tauira, ki te hiahia koe ki te whakamahi i te AUFS i roto i te Docker o roto, huri noa i te kōpaki /var/lib/docker ki te rōrahi ka pai koe. Kua taapirihia e Docker etahi mokowā ingoa turanga ki nga ingoa whainga a Pūrere Mahere, mena he maha nga waea a Docker e rere ana i runga i te miihini kotahi, kare ratou e takahi tetahi ki tetahi.
Heoi ano, ehara i te mea ngawari noa iho, penei i te mea ka kitea mai i enei
Docker-in-Docker: Ka kino haere
Me pehea te keteroki hanga? He tino uaua ano tenei. He maha nga patai a nga tangata ki a au "mehemea kei te whakahaere ahau i te Docker-in-Docker, me pehea e taea ai e au te whakamahi i nga whakaahua e whakahaerehia ana i runga i taku kaihautu, kaua ki te whakahoki i nga mea katoa ki roto i taku Docker o roto"?
Kua ngana etahi tangata pukumahi ki te here i te /var/lib/docker mai i te kaihautu ki tetahi ipu Docker-in-Docker. I etahi wa ka tiri /var/lib/docker ki nga ipu maha.
Kei te pirangi koe ki te whakakino i o raraunga? Na te mea koinei tonu te mea ka pakaru o raraunga!
Ko te Docker daemon i tino hangaia kia whai waahi motuhake ki /var/lib/docker. Kaore he mea ke atu kia "pa, paopao, kii" ki nga konae Docker kei roto i tenei kōpaki.
He aha i penei ai? Na te mea koinei te hua o tetahi o nga akoranga tino uaua i akohia i te wa e whakawhanake ana i te dotCloud. I rere te miihini ipu dotCloud ma te maha o nga tukanga e uru ana ki /var/lib/dotcloud i te wa kotahi. Ko nga mahi tinihanga penei i te whakakapi i nga konae ngota (kaore i te whakatika i roto i te waahi), te pepa pepa me nga raka tohutohu me te whakahau, me etahi atu whakamatautau me nga punaha haumaru penei i te SQLite me te BDB kaore i mahi i nga wa katoa. I a matou e whakahoahoa ana i to matou miihini ipu, i te mutunga ka noho ko Docker, ko tetahi o nga whakatau hoahoa nui ko te whakakotahi i nga mahi ipu katoa ki raro i te daemon kotahi hei whakakore i nga mahi poauau katoa.
Kaua e pohehe: ka taea te hanga i tetahi mea pai, pono me te tere e uru ana ki nga tukanga maha me te mana whakarara hou. Engari ki ta matou whakaaro he maamaa ake te tuhi me te pupuri i nga waehere ma te whakamahi i a Docker hei kaitakaro anake.
Ko te tikanga mena ka tohatoha koe i te raarangi /var/lib/docker i waenga i nga tauira Docker maha, ka raru koe. Ae, ka taea e tenei te mahi, ina koa i nga waahanga tuatahi o te whakamatautau. "Whakarongo, e Ma, ka taea e au te whakahaere i te ubuntu hei kaipakihi!" Engari me whakamatau tetahi mea uaua ake, penei i te toia te ahua ano mai i nga ahuatanga rereke e rua, ka kite koe i te ahi o te ao.
Ko te tikanga mena ka mahia e to punaha CI te hanga me te hanga ano, i nga wa katoa ka whakaara ano koe i to ipu Docker-in-Docker, ka tupono koe ki te tuku nuke ki roto i tana keteroki. Ehara tenei i te tino pai!
Nga raruraru
Kia hoki ki muri. Kei te tino hiahia koe ki a Docker-in-Docker, kei te hiahia noa koe ki te whakahaere i a Docker me te hanga me te whakahaere i nga ipu me nga whakaahua mai i to punaha CI i te mea kei roto tonu te punaha CI i roto i te ipu?
Kei te pai ahau ko te nuinga o nga tangata e hiahia ana ki te whiringa whakamutunga, ko te tikanga kei te pirangi ratou ki te punaha CI penei i a Jenkins kia kaha ki te whakahaere ipu. A ko te huarahi ngawari ki te mahi i tenei ko te whakauru noa i te turanga Docker ki roto i to ipu CI me te hono atu ki te haki -v.
Maamaa noa, ka whakahaere koe i to ipu CI (Jenkins me etahi atu), kaua ki te tarai i tetahi mea me te Docker-in-Docker, tiimata me te raina:
docker run -v /var/run/docker.sock:/var/run/docker.sock ...
Ka whai waahi tenei ipu ki te turanga Docker na reira ka taea te whakahaere ipu. Haunga te whakahaere i nga ipu "tamariki", ka whakarewahia e ia nga ipu "teina".
Whakamātauria tenei ma te whakamahi i te ahua docker mana (kei roto te Docker rua):
docker run -v /var/run/docker.sock:/var/run/docker.sock
-ti docker
He rite te ahua me te mahi penei i a Docker-in-Docker, engari ehara i te Docker-in-Docker: ka hanga e tenei ipu etahi atu ipu, ka hangaia ki te Docker taumata-runga. Kare koe e pa ki nga paanga o te kohanga ka tohatohahia te keteroki huihuinga puta noa i nga waea maha.
Tuhipoka: Ko nga putanga o mua o tenei tuhinga i tohutohu ki te hono i te Docker rua mai i te kaihautu ki te ipu. Ko tenei kua kore e pono i te mea kua kore te miihini Docker e kapi i nga whare pukapuka tuuturu, tata-tata ranei.
Na, ki te hiahia koe ki te whakamahi i a Docker mai i a Jenkins CI, e rua nga whiringa:
te whakauru i te Docker CLI ma te whakamahi i te punaha kohinga whakaahua taketake (arā, mena ko to ahua kei runga i a Debian, whakamahia nga kohinga .deb), ma te whakamahi i te Docker API.
Ko etahi panui 🙂
Mauruuru koe mo te noho ki a matou. He pai ki a koe a maatau tuhinga? Kei te hiahia koe ki te kite i etahi atu mea whakamere? Tautokohia matou ma te tuku ota me te tuku korero ki o hoa,
Dell R730xd 2x iti ake i te pokapū raraunga Equinix Tier IV i Amsterdam? Anei i konei
Source: will.com