Ahoana no nitondrako an'i Docker tao anaty Docker ary inona no nivoaka avy tao

Salama daholo! Amin'ny azy lahatsoratra teo aloha, Nampanantena aho fa hiresaka momba ny fampandehanana ny Docker ao amin'ny Docker sy ny lafiny azo ampiharina amin'ny fampiasana ity lesona ity. Fotoana tokony hankatoavana ny fampanantenanao izao. Ny devoser za-draharaha dia mety hanohitra fa ireo izay mila Docker ao anatin'ny Docker dia mandefa fotsiny ny socket daemon Docker avy amin'ny mpampiantrano ao anaty fitoeran-javatra ary ho ampy izany amin'ny 99% amin'ny tranga. Fa aza maika hanipy mofomamy amiko, satria hiresaka momba ny fampandehanana an'i Docker ao anaty Docker isika. Ity vahaolana ity dia manana fampiharana maro azo atao ary ity lahatsoratra ity dia momba ny iray amin'izy ireo, koa mipetraha ary ahitsio eo anoloanao ny sandrinao.

Ahoana no nitondrako an'i Docker tao anaty Docker ary inona no nivoaka avy tao

Ny fiandohana

Nanomboka tamin'ny takarivan'ny volana septambra izany rehetra izany raha nanadio ny milina nofaiko tamin'ny $5 aho tao amin'ny Ranomasimbe Digital, izay nivaingana noho ny nahafeno ny habaka kapila misy 24 gigabytes rehetra tamin'ny sary sy ny fitoerany i Docker. Ny mahatsikaiky dia ireo sary sy fitoeran-javatra rehetra ireo dia mandalo fotsiny ary ilaina fotsiny mba hitsapana ny fahombiazan'ny fampiharana nataoko isaky ny misy dikan-teny vaovao amin'ny tranomboky na rafitra iray. Nanandrana nanoratra script akorandriaka aho ary nametraka fandaharam-potoana cron mba hanadiovana ny fako, saingy tsy nanampy izany: isaky ny tsy azo ihodivirana dia nifarana tamin'ny fihinanana ny habaka kapila an'ny mpizara ary mihantona ny mpizara (amin'ny tsara indrindra). Tamin'ny fotoana iray dia nahita lahatsoratra momba ny fomba fampandehanana an'i Jenkins ao anaty fitoeran-javatra iray aho ary ny fomba ahafahany mamorona sy mamafa ny fantsona fananganana amin'ny alàlan'ny docker daemon socket alefa ao anatiny. Tiako ilay hevitra, saingy nanapa-kevitra ny handeha lavitra aho ary hanandrana hanandrana mivantana an'i Docker ao anaty Docker. Tamin'izany fotoana izany dia toa vahaolana lojika tanteraka ny télécharger sary Docker sy hamorona fitoeran-javatra ho an'ny rindranasa rehetra ilaiko amin'ny fitsapana ao anaty fitoeran-javatra hafa (aleo atao hoe container staging). Ny hevitra dia ny hanombohana fitoeran-javatra misy ny sainam-pirenena -rm, izay mamafa ho azy ny kaontenera manontolo sy ny ao anatiny rehetra rehefa mijanona. Niresaka tamin'ny sary Docker avy amin'i Docker mihitsy aho (https://hub.docker.com/_/docker), saingy lasa sarotra loatra izany ary tsy vitako mihitsy ny nanao izany tamin'ny fomba nilaiko azy ary naniry ny handeha amin'ny lalana rehetra aho.

Fanao. Cones

Nandeha nanao ny kaontenera araka izay nilaiko aho ary nanohy ny andrana nataoko, izay niteraka tsimokaretina maro. Ny vokatry ny fampijaliana ny tenako dia izao manaraka izao:

  1. Mandeha ny container Docker amin'ny fomba interactive izahay.

    docker run --privileged -it docker:18.09.6

    Tandremo ny dikan'ny kaontenera, miankavanana na miankavia ary mivadika ho voatavo ny DinD-nao. Raha ny marina, matetika dia rava ny zavatra rehefa mivoaka ny dikan-teny vaovao.
    Tsy maintsy miditra avy hatrany ao anaty akorandriaka isika.

  2. Miezaka mitady izay kaontenera mandeha izahay (Valiny: tsy misy), fa aleo atao ihany ny baiko:

    docker ps

    Ho gaga kely ianao, saingy hita fa tsy mandeha akory ny daemon Docker:

    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. Andeha isika hanao izany:

    dockerd &

    Fahagagana hafa tsy mahafinaritra:

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

  4. Apetraho ny fonosana iptables sy bash (mahafinaritra kokoa ny miasa amin'ny bash noho ny amin'ny sh):

    apk add --no-cache iptables bash

  5. Andao hanomboka bash. Farany dia miverina amin'ny akorany mahazatra isika

  6. Andao andramana hanomboka indray ny Docker:

    dockerd &

    Tokony hahita takelaka lavareny isika mifarana amin'ny:

    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. Tsindrio ny Enter. Miverina amin'ny bash izahay.

Manomboka izao dia afaka manandrana mametraka kaontenera hafa ao anatin'ny kaontenera Docker izahay, fa ahoana kosa raha te-hametraka kaontenera Docker hafa ao anatin'ny kaontenera Docker izahay na misy zavatra tsy mety ary mianjera ny container? Atombohy indray.

Fitehirizana DinD manokana sy andrana vaovao

Ahoana no nitondrako an'i Docker tao anaty Docker ary inona no nivoaka avy tao
Mba hialana amin'ny famerimberenana ireo dingana etsy ambony ireo dia namorona ny fitoeran-dranoko DinD manokana aho:

https://github.com/alekslitvinenk/dind

Ny vahaolana DinD miasa dia nanome ahy fahafahana hampandeha an'i Docker ao anatin'ny Docker miverimberina ary manao andrana mampientam-po kokoa.
Hiresaka momba ny fanandramana iray (mahomby) toy izany aho amin'ny fampandehanana MySQL sy Nodejs izao.
Ny tena tsy manam-paharetana dia afaka mahita ny fomba nisy teto

Milalao video

Ka andeha aloha:

  1. Mandeha ny DinD amin'ny fomba interactive izahay. Amin'ity dika DinD ity dia mila sarintany amin'ny tanana ny seranana rehetra azon'ny fitoeran'ny zanatsika ampiasaina (efa miasa amin'ity aho)

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

    Miditra ao amin'ny bash izahay, izay ahafahantsika manomboka avy hatrany ny fametrahana fitoeran-jaza.

  2. Sokafy ny MySQL:

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

  3. Mifandray amin'ny angon-drakitra izahay amin'ny fomba mitovy amin'ny fampifandraisana azy eo an-toerana. Andao ho azo antoka fa mandeha ny zava-drehetra.

  4. Alefaso ny container faharoa:

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

    Mariho fa ny sarintany seranan-tsambo dia ho marina 8080:8080, satria efa nanao sarintany ny seranan-tsambo 80 avy amin'ny mpampiantrano mankany amin'ny fitoeran'ny ray aman-dreny mankany amin'ny seranana 8080 izahay.

  5. Mandeha amin'ny localhost amin'ny navigateur izahay, ataovy azo antoka fa mamaly ny "Hello World!"

Raha ny amiko, ny fanandramana miaraka amin'ireo kaontenera Docker nested dia nivadika ho tsara ary hanohy hampivelatra ny tetikasa aho ary hampiasa izany amin'ny fampisehoana. Amiko dia vahaolana maivana kokoa noho i Kubernetes sy Jenkins X ity. Fa ity no hevitro manokana.

Heveriko fa izay ihany no ho an'ny lahatsoratra anio. Ao amin'ny lahatsoratra manaraka dia holazaiko amin'ny antsipiriany bebe kokoa ny fanandramana amin'ny fampandehanana an'i Docker miverimberina ao amin'ny Docker ary ny fametrahana lahatahiry lalina ao anaty fitoeran-jiro.

Sal Raha hitanao fa mahasoa ity tetikasa ity dia omeo kintana ao amin'ny GitHub izy io, vakio ary ilazao ny namanao.

Ahitsio1 Nahitsy ny lesoka, nifantoka tamin'ny horonan-tsary 2

Source: www.habr.com

Mividiana fampiantranoana azo antoka ho an'ny tranokala misy fiarovana DDoS, mpizara VPS VDS 🔥 Mividiana fampiantranoana tranonkala azo antoka miaraka amin'ny fiarovana DDoS, mpizara VPS VDS | ProHoster