Mar a ruith mi Docker taobh a-staigh Docker agus dè a thàinig a-mach às

Hi uile! Anns a artaigil roimhe, Gheall mi bruidhinn mu bhith a 'ruith Docker ann an Docker agus na taobhan practaigeach de bhith a' cleachdadh an leasan seo. Tha an t-àm ann do ghealladh a chumail. Is dòcha gun cuir neach-devopser eòlach an aghaidh gum bi an fheadhainn a dh’ fheumas Docker taobh a-staigh Docker dìreach a’ cuir air adhart socaid daemon an Docker bhon òstair a-steach don ghobhar agus bidh seo gu leòr ann an 99% de chùisean. Ach na dèan cabhag gus briosgaidean a thilgeil orm, oir bruidhnidh sinn mu bhith a’ ruith Docker taobh a-staigh Docker. Tha mòran thagraidhean comasach aig an fhuasgladh seo agus tha an artaigil seo mu dheidhinn aon dhiubh, mar sin suidh air ais agus dìrich do ghàirdeanan air do bheulaibh.

Mar a ruith mi Docker taobh a-staigh Docker agus dè a thàinig a-mach às

An toiseach

Thòisich e uile air feasgar fliuch san t-Sultain nuair a bha mi a’ glanadh an inneal a fhuair mi air màl airson $5 air Digital Ocean, a bha reòta leis gu robh Docker air na 24 gigabytes de dh’ àite diosc a lìonadh leis na h-ìomhaighean agus na soithichean aige. B’ e an ìoranas gun robh na h-ìomhaighean agus na soithichean sin uile neo-ghluasadach agus nach robh feum orra ach airson coileanadh an tagraidh agam a dhearbhadh a h-uile uair a chaidh dreach ùr de leabharlann no frèam a leigeil ma sgaoil. Dh’ fheuch mi ri sgriobtaichean shligean a sgrìobhadh agus clàr cron a stèidheachadh airson sgudal a ghlanadh, ach cha do chuidich e: a h-uile uair a thàinig e gu crìch gu do-sheachanta le àite diosc an fhrithealaiche agam ag ithe agus an frithealaiche crochte (aig a’ char as fheàrr). Aig àm air choreigin, thàinig mi tarsainn air artaigil mu mar a ruitheas tu Jenkins ann an soitheach agus mar as urrainn dha pìoban togail a chruthachadh agus a dhubhadh às tro socaid daemon docker air a chuir air adhart. Chòrd am beachd rium, ach chuir mi romham a dhol nas fhaide agus feuchainn ri ruith gu dìreach Docker taobh a-staigh Docker. Aig an àm sin, bha e coltach riumsa mar fhuasgladh gu tur loidsigeach airson ìomhaighean Docker a luchdachadh sìos agus soithichean a chruthachadh airson a h-uile tagradh a bha a dhìth orm airson deuchainn taobh a-staigh soitheach eile (canaidh sinn inneal stèidse ris). B 'e am beachd soitheach stèidse a thòiseachadh leis a' bhratach -rm, a bhios gu fèin-obrachail a 'toirt air falbh an soitheach gu lèir agus a h-uile stuth a th' ann nuair a thèid a stad. Rinn mi tinkered leis an ìomhaigh Docker bho Docker fhèin (https://hub.docker.com/_/docker).

Cleachdaich. Cònaichean

Chaidh mi a-mach gus toirt air a’ ghobhar obrachadh mar a bha feum agam agus lean mi air adhart leis na deuchainnean agam, a lean gu grunn gheugan. B’ e toradh m’ fhèin-chràdh an algairim a leanas:

  1. Bidh sinn a’ cur air bhog an Docker container ann am modh eadar-ghnìomhach.

    docker run --privileged -it docker:18.09.6

    Thoir aire don dreach den t-soitheach, ceum air dheas no clì agus tionndaidh an DinD agad gu bhith na phumpkin. Gu dearbh, bidh cùisean a’ briseadh gu math tric nuair a thèid dreach ùr fhoillseachadh.
    Feumaidh sinn a dhol a-steach don t-slige sa bhad.

  2. Tha sinn a’ feuchainn ri faighinn a-mach dè na soithichean a tha a’ ruith (Freagair: gin), ach ruithidh sinn an àithne co-dhiù:

    docker ps

    Bidh beagan iongnadh ort, ach tha e a ’tionndadh a-mach nach eil an deamhan Docker eadhon a’ ruith:

    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. Ruithidh sinn e fhèin:

    dockerd &

    iongnadh mì-thlachdmhor eile:

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

  4. Stàlaich na pasganan iptables agus bash (tha a h-uile dad nas tlachdmhoire a bhith ag obair ann am bash na ann an sh):

    apk add --no-cache iptables bash

  5. Leig leinn bash a chuir air bhog. Mu dheireadh tha sinn air ais anns an t-slige àbhaisteach

  6. Feuchaidh sinn ri Docker a chuir air bhog a-rithist:

    dockerd &

    Bu chòir dhuinn duilleag fhada de logaichean fhaicinn a’ crìochnachadh 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ùth Enter. Tha sinn air ais anns a’ bhasgaid.

Bho seo a-mach, is urrainn dhuinn feuchainn ri soithichean eile a chuir air bhog taobh a-staigh ar soitheach Docker, ach dè ma tha sinn airson inneal Docker eile a chuir air bhog taobh a-staigh ar soitheach Docker no rudeigin a’ dol ceàrr agus an soitheach a ’tuiteam? Tòisich a-rithist.

Sealbhadair DinD agad agus deuchainnean ùra

Mar a ruith mi Docker taobh a-staigh Docker agus dè a thàinig a-mach às
Gus nach bi mi ag ath-aithris na ceumannan gu h-àrd a-rithist agus a-rithist, chruthaich mi an soitheach DinD agam fhèin:

https://github.com/alekslitvinenk/dind

Thug am fuasgladh obrach DinD an comas dhomh Docker a ruith taobh a-staigh Docker gu ath-chuairteach agus deuchainnean nas dàna a dhèanamh.
Tha mi a’ dol a thoirt cunntas air aon deuchainn mar sin (soirbheachail) le bhith a’ ruith MySQL agus Nodejs a-nis.
Chì an fheadhainn as mì-fhoighidneach mar a bha e an seo

Mar sin, tòisichidh sinn:

  1. Bidh sinn a’ cur air bhog DinD ann am modh eadar-ghnìomhach. Anns an dreach seo de DinD, feumaidh sinn a h-uile port a dh’ fhaodas na soithichean cloinne againn a chleachdadh a mhapadh le làimh (tha mi ag obair air seo mu thràth)

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

    Bidh sinn a’ faighinn a-steach don bash, às am faod sinn tòiseachadh sa bhad air soithichean cloinne a chuir air bhog.

  2. Cuir air bhog MySQL:

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

  3. Bidh sinn a’ ceangal ris an stòr-dàta san aon dòigh ’s a bhiodh sinn a’ ceangal ris gu h-ionadail. Dèan cinnteach gun obraich a h-uile dad.

  4. Cuir air bhog an dàrna container:

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

    Thoir an aire gum bi am mapadh puirt dìreach 8080:8080, leis gu bheil sinn mu thràth air port 80 a mhapadh bhon òstair chun a’ phàrant-ghobhar gu port 8080.

  5. Bidh sinn a’ dol gu localhost sa bhrobhsair, dèan cinnteach gu bheil am frithealaiche a’ freagairt “Hello World!”

Anns a 'chùis agam, bha an deuchainn le soithichean Docker neadachaidh gu math dòchasach agus cumaidh mi a' leasachadh a 'phròiseict agus ga chleachdadh airson a bhith air a chuir air dòigh. Tha e coltach riumsa gur e fuasgladh tòrr nas aotrom a tha seo na Kubernetes agus Jenkins X. Ach is e seo mo bheachd cuspaireil.

Tha mi a’ smaoineachadh gu bheil sin uile airson artaigil an latha an-diugh. Anns an ath artaigil bheir mi cunntas nas mionaidiche air deuchainnean le bhith a’ ruith Docker gu ath-chùrsach ann an Docker agus a’ cur suas chlàran gu domhainn ann an soithichean neadachaidh.

PS Ma tha am pròiseact seo feumail dhut, feuch an toir thu rionnag dha air GitHub, forc e agus innis dha do charaidean.

Deasaich1 Mearachdan ceartaichte, le fòcas air 2 bhidio

Source: www.habr.com

Cuir beachd ann