Conas a rith mé Docker taobh istigh de Docker agus cad a tháinig as

Dia duit gach duine! Ina alt roimhe seo, Gheall mé go mbeinn ag caint faoi reáchtáil Docker in Docker agus na gnéithe praiticiúla a bhaineann le húsáid an cheachta seo. Tá sé in am do gheallúint a choinneáil. Is dócha go gcuirfidh devopser a bhfuil taithí acu i gcoinne go gcuirfidh na daoine sin a bhfuil gá acu le Docker taobh istigh den Docker soicéad deamhan Docker ar aghaidh ón ósta isteach sa choimeádán agus beidh sé seo go leor i 99% de na cásanna. Ach ná bíodh deifir ort fianáin a chaitheamh chugam, mar beidh muid ag caint faoi Docker a rith taobh istigh de Docker. Tá go leor feidhmchlár féideartha ag an réiteach seo agus tá an t-alt seo thart ar cheann amháin acu, mar sin suí siar agus díreach do airm os do chomhair.

Conas a rith mé Docker taobh istigh de Docker agus cad a tháinig as

Tosaigh

Thosaigh sé ar fad tráthnóna na coise tinne Meán Fómhair nuair a bhí mé ag glanadh an meaisín a fuair mé ar cíos ar $5 ar an Aigéan Digiteach, a bhí reoite mar gheall ar an bhfíric go raibh Docker líonta go léir 24 ghigibheart de spás diosca a bhí ar fáil lena íomhánna agus coimeádáin. Ba í an íoróin ná go raibh na híomhánna agus na coimeádáin seo go léir neamhbhuan agus nach raibh gá leo ach chun feidhmíocht m’iarratas a thástáil gach uair a scaoiltear leagan nua de leabharlann nó de chreat. Rinne mé iarracht scripteanna sliogán a scríobh agus sceideal cron a bhunú chun truflais a ghlanadh, ach níor chabhraigh sé: gach uair a chríochnaigh sé dosheachanta nuair a bhí spás diosca mo fhreastalaí á ithe suas agus an freastalaí ar crochadh (ar a fheabhas). Ag pointe éigin, tháinig mé trasna ar alt faoi conas Jenkins a reáchtáil i gcoimeádán agus conas is féidir leis píblínte tógála a chruthú agus a scriosadh trí soicéad deamhan docker a cuireadh ar aghaidh isteach ann. Thaitin an smaoineamh liom, ach chinn mé dul níos faide agus iarracht a dhéanamh triail a bhaint as Docker a rith go díreach taobh istigh de Docker. Ag an am sin, ba chosúil dom gur réiteach go hiomlán loighciúil a bhí ann íomhánna Docker a íoslódáil agus coimeádáin a chruthú do na feidhmchláir go léir a theastaigh uaim le haghaidh tástála taobh istigh de choimeádán eile (cuirimis coimeádán stáitse air). Ba é an smaoineamh coimeádán stáitse a thosú leis an bhratach -rm, a scriosann an coimeádán iomlán agus a bhfuil ann go huathoibríoch nuair a stoptar é. Rinne mé tinkered leis an íomhá Docker ó Docker féin (https://hub.docker.com/_/docker).

Cleachtadh. Cóin

Rinne mé amach go n-oibreodh an coimeádán mar a theastaigh uaim agus lean mé le mo thurgnaimh, rud a d'eascair go leor bachlóga. Ba é an toradh a bhí ar mo chéasadh féin ná an t-algartam seo a leanas:

  1. Seolaimid an coimeádán Docker i mód idirghníomhach.

    docker run --privileged -it docker:18.09.6

    Tabhair aird ar leagan an choimeádáin, céim ar dheis nó ar chlé agus casann do DinD ina phumpkin. Go deimhin, briseann rudaí go minic go leor nuair a eisítear leagan nua.
    Ní mór dúinn dul isteach sa bhlaosc láithreach.

  2. Táimid ag iarraidh a fháil amach cé na coimeádáin atá ag rith (Freagra: níl), ach rithfimid an t-ordú ar aon nós:

    docker ps

    Beidh beagán ionadh ort, ach tharlaíonn sé nach bhfuil an deamhan Docker ag rith fiú:

    error during connect: Get http://docker:2375/v1.40/containers/json: dial tcp: lookup docker on 
    192.168.65.1:53: no such host

  3. Déanaimis é a rith linn féin:

    dockerd &

    Iontas míthaitneamhach eile:

    failed to start daemon: Error initializing network controller: error obtaining controller instance: failed 
    to create NAT chain DOCKER: Iptables not found

  4. Suiteáil na pacáistí iptables agus bash (tá gach rud níos taitneamhaí a bheith ag obair i bash ná i sh):

    apk add --no-cache iptables bash

  5. Seolaimid bash. Ar deireadh táimid ar ais sa ghnáthbhlaosc

  6. Déanaimis iarracht Docker a thosú arís:

    dockerd &

    Ba cheart dúinn bileog fhada logs a fheiceáil ag críochnú le:

    INFO[2019-11-25T19:51:19.448080400Z] Daemon has completed initialization          
    INFO[2019-11-25T19:51:19.474439300Z] API listen on /var/run/docker.sock

  7. Brúigh Iontráil. Táimid ar ais sa bash.

As seo amach, is féidir linn iarracht a dhéanamh coimeádáin eile a sheoladh taobh istigh dár gcoimeádán Docker, ach cad má theastaíonn uainn coimeádán Docker eile a sheoladh taobh istigh dár gcoimeádán Docker nó má théann rud éigin mícheart agus tuairteanna an coimeádán? Tosaigh ar fad arís.

Féin coimeádán DinD agus turgnaimh nua

Conas a rith mé Docker taobh istigh de Docker agus cad a tháinig as
Chun na céimeanna thuas a dhéanamh arís agus arís eile a sheachaint, chruthaigh mé mo choimeádán DinD féin:

https://github.com/alekslitvinenk/dind

Thug réiteach oibre DinD an cumas dom Docker a rith taobh istigh de Docker go hathchúrsach agus turgnaimh níos eachtrúla a dhéanamh.
Táim chun cur síos a dhéanamh ar thurgnamh (rathúil) amháin den sórt sin le MySQL agus Nodejs a rith anois.
Is féidir leis an duine is mífhoighneach a fheiceáil conas a bhí sé anseo

Mar sin, tosaímid:

  1. Seolaimid DinD i mód idirghníomhach. Sa leagan seo de DinD, ní mór dúinn na poirt go léir is féidir lenár gcoimeádáin leanaí a úsáid a mhapáil de láimh (tá mé ag obair air seo cheana féin)

    docker run --privileged -it 
    -p 80:8080 
    -p 3306:3306 
    alekslitvinenk/dind

    Faighimid isteach sa bash, as ar féidir linn tosú láithreach ag seoladh coimeádáin leanaí.

  2. Seoladh MySQL:

    docker run --name mysql -e MYSQL_ROOT_PASSWORD=strongpassword -d -p 3306:3306 mysql

  3. Déanaimid nasc leis an mbunachar sonraí ar an mbealach céanna agus a dhéanfaimis ceangal leis go háitiúil. Déanaimis cinnte go n-oibríonn gach rud.

  4. Seoladh an dara coimeádán:

    docker run -d --rm -p 8080:8080 alekslitvinenk/hello-world-nodejs-server

    Tabhair faoi deara le do thoil go mbeidh an léarscáiliú calafoirt go díreach 8080:8080, ós rud é go bhfuil calafort 80 mapáilte againn cheana féin ón ósta go dtí an coimeádán tuismitheora go calafort 8080.

  5. Téimid go localhost sa bhrabhsálaí, déan cinnte go bhfreagraíonn an freastalaí "Hello World!"

I mo chás féin, bhí an turgnamh le coimeádáin Docker neadaithe go leor dearfach agus leanfaidh mé ag forbairt an tionscadail agus é a úsáid le haghaidh stáitse. Feictear dom gur réiteach i bhfad níos éadromaí é seo ná Kubernetes agus Jenkins X. Ach is é seo mo thuairim suibiachtúil.

Sílim go bhfuil sé sin go léir le haghaidh alt an lae inniu. Sa chéad alt eile déanfaidh mé cur síos níos mionsonraithe ar thurgnaimh le Docker a rith go hathchúrsach i Docker agus eolairí gléasta go domhain isteach i gcoimeádáin neadaithe.

PS Má cheapann tú go bhfuil an tionscadal seo úsáideach, tabhair réalta dó ar GitHub, forc é agus inis do do chairde.

Cuir in eagar1 Earráidí ceartaithe, dírithe ar 2 fhíseán

Foinse: will.com

Add a comment