Kumhanya kwandakaita Docker mukati meDocker uye chii chakabuda mairi

Mhoroi mose! Mune yake nyaya yapfuura, Ndakavimbisa kutaura nezve kumhanya Docker muDocker uye maitiro anoshanda ekushandisa chidzidzo ichi. Yasvika nguva yekuchengeta chivimbiso chako. Ane ruzivo devopser angangopokana kuti avo vanoda Docker mukati meDocker vanongoendesa iyo Docker daemon socket kubva kumuenzi mumudziyo uye izvi zvinokwana mu99% yemakesi. Asi usamhanye kukanda makuki kwandiri, nekuti isu tichataura nezve kumhanyisa Docker mukati meDocker. Iyi mhinduro ine akawanda anogoneka maapplication uye chinyorwa ichi chiri nezve chimwe chazvo, saka gara kumashure uye gadzirisa maoko ako pamberi pako.

Kumhanya kwandakaita Docker mukati meDocker uye chii chakabuda mairi

Musha

Izvo zvose zvakatanga pamvura yaSeptember manheru pandakanga ndichichenesa muchina wandakabhadhara $ 5 paDhijitari Ocean, iyo yakanga yakaomeswa nechando nekuda kwekuti Docker yakanga yazadza zvose 24 gigabytes yedhisiki nzvimbo iripo nemifananidzo uye midziyo. Chishamiso ndechekuti mifananidzo yese iyi nemidziyo zvaive zvenguva pfupi uye zvaingodiwa kuti ndiedze kushanda kwechikumbiro changu pese paiburitswa shanduro itsva yeraibhurari kana hurongwa. Ndakaedza kunyora magwaro egobolo uye kumisikidza cron purogiramu yekuchenesa marara, asi hazvina kubatsira: nguva imwe neimwe yaingopera nevhavha yedhisiki yangu ichidyiwa uye sevha yakarembera (papamusoro). Pane imwe nguva, ndakasangana nechinyorwa nezve maitiro ekumhanyisa Jenkins mumudziyo uye nemagadzirirwo aanogona kugadzira nekudzima mapaipi ekuvaka kuburikidza nedocker daemon socket inotumirwa mairi. Ndakafarira zano, asi ndakafunga kuenderera mberi uye kuyedza kuyedza nekumhanyisa Docker mukati meDocker. Panguva iyoyo, kwandiri zvaiita senge mhinduro ine musoro kurodha mifananidzo yeDocker uye kugadzira midziyo yezvese zvikumbiro zvandaida kuti ndiedze mukati mechimwe chigadziko (ngatichidaidze chigaba chekugadzira). Pfungwa iyi yaive yekutanga chigaba chine -rm mureza, icho chinodzima chigaba chose nezvose zvirimo kana chamiswa. Ndakatarisa nemufananidzo weDocker kubva kuDocker pachayo (https://hub.docker.com/_/docker), asi zvakazonyanya kunetsa uye handina kumbokwanisa kuita kuti ishande nenzira yandaida uye ndaida kuenda ini pachangu.

Dzidzira. Cones

Ndakagadzirira kuita kuti mudziyo ushande nenzira yandaida uye ndakaenderera mberi nekuedza kwangu, izvo zvakaguma nezviuru zvemabuds. Mhedzisiro yekuzvitambudza kwangu yaive inotevera algorithm:

  1. Isu tinotangisa mudziyo weDocker mune inopindirana modhi.

    docker run --privileged -it docker:18.09.6

    Teerera kune vhezheni yemudziyo, nhanho kurudyi kana kuruboshwe uye DinD yako inoshanduka kuita nhanga. Muchokwadi, zvinhu zvinoputsika kazhinji kana vhezheni itsva yaburitswa.
    Tinofanira pakarepo kupinda mugoko.

  2. Tiri kuedza kutsvaga kuti ndeapi midziyo iri kushanda (Mhinduro: hapana), asi ngatimhanyei murairo zvakadaro:

    docker ps

    Iwe uchashamisika zvishoma, asi zvinozoitika kuti iyo Docker daemon haisi kana kumhanya:

    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. Ngatimhanyei pachedu:

    dockerd &

    Chimwe chishamiso chisingafadzi:

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

  4. Isa iyo iptables uye bash mapakeji (zvese zvinonyanya kunakidza kushanda mu bash pane mu sh):

    apk add --no-cache iptables bash

  5. Ngatitangei bash. Pakupedzisira tadzoka mugoko rakajairika

  6. Ngatiedze kuvhura Docker zvakare:

    dockerd &

    Tinofanira kuona pepa refu rematanda rinopera ne:

    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. Dzvanya Enter. Tadzoka mubash.

Kubva zvino zvichienda mberi, tinogona kuyedza kuvhura zvimwe midziyo mukati meDocker mudziyo wedu, asi ko kana tichida kuburitsa imwe mudziyo weDocker mukati meDocker mudziyo wedu kana chimwe chinhu chikatadza uye mudziyo ukaputsika? Tanga patsva zvakare.

Own DinD mudziyo uye zviedzo zvitsva

Kumhanya kwandakaita Docker mukati meDocker uye chii chakabuda mairi
Kuti ndidzivise kudzokorora nhanho dziri pamusoro kakawanda, ndakagadzira yangu DinD mudziyo:

https://github.com/alekslitvinenk/dind

Iyo inoshanda yeDinD mhinduro yakandipa kugona kumhanyisa Docker mukati meDocker nekudzokorodza uye kuita mamwe maedventurous kuyedza.
Ndiri kuzotsanangura imwe yakadaro (yakabudirira) kuyedza nekumhanyisa MySQL neNodejs izvozvi.
Vasina moyo murefu vanogona kuona kuti zvanga zvaita sei pano

Saka ngatitangei:

  1. Isu tinotangisa DinD mune inopindirana modhi. Mune iyi vhezheni yeDinD, isu tinofanirwa kupeta mamepu ese madoko anogona kushandiswa nevana vedu (ini ndiri kutoshanda pane izvi)

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

    Isu tinopinda mubash, kubva kwatinogona kutanga nekukasira midziyo yevana.

  2. Tanga MySQL:

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

  3. Isu tinobatanidza kune dhatabhesi nenzira imwechete yatingabatanidza nayo munharaunda. Ngative nechokwadi kuti zvese zvinoshanda.

  4. Tangisa mudziyo wechipiri:

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

    Ndokumbira utarise kuti mepu yechiteshi ichanyatso 8080:8080, sezvo isu takatogadzira mepu yechiteshi 80 kubva kumugadziri kuenda kune mudziyo wevabereki kuenda kuchiteshi 8080.

  5. Isu tinoenda kune localhost mubrowser, ita shuwa kuti sevha inopindura "Mhoro Nyika!"

Mune yangu, kuyedza nemidziyo yeDocker yakave yakanaka uye ini ndicharamba ndichigadzira chirongwa ichi uye nekuchishandisa pakuita. Zvinoratidzika kwandiri kuti iyi ndiyo yakanyanya kureruka mhinduro kupfuura Kubernetes naJenkins X. Asi iyi ndiyo yangu subjective maonero.

Ndinofunga kuti ndizvo chete zvechinyorwa chanhasi. Muchinyorwa chinotevera ini ndichatsanangura mune zvakadzama kuyedza nekumhanyisa Docker kudzokorora muDocker uye kukwidza madhairekitori akadzika mumidziyo yakavharirwa.

PS Kana iwe ukaona ichi purojekiti ichibatsira, ndapota ipa nyeredzi paGitHub, forogo uye uudze shamwari dzako.

Edit1 Mhosho dzakagadziriswa, dzakanangana nemavhidhiyo maviri

Source: www.habr.com

Voeg