Yuav ua li cas kuv khiav Docker hauv Docker thiab dab tsi tawm ntawm nws

Nyob zoo sawv daws! Hauv nws tsab xov xwm dhau los, Kuv tau cog lus tias yuav tham txog kev khiav Docker hauv Docker thiab cov tswv yim ntawm kev siv zaj lus qhia no. Nws yog lub sijhawm ua raws li koj cov lus cog tseg. Ib tus kws paub txog devopser tej zaum yuav tsis pom zoo tias cov neeg xav tau Docker hauv Docker tsuas yog xa mus rau Docker daemon socket los ntawm tus tswv tsev rau hauv lub thawv thiab qhov no yuav txaus rau 99% ntawm cov neeg mob. Tab sis tsis txhob maj muab ncuav qab zib rau kuv, vim peb yuav tham txog kev khiav Docker hauv Docker. Qhov kev daws teeb meem no muaj ntau daim ntawv thov thiab cov kab lus no yog hais txog ib qho ntawm lawv, yog li zaum rov qab thiab ncaj koj txhais tes rau pem hauv ntej ntawm koj.

Yuav ua li cas kuv khiav Docker hauv Docker thiab dab tsi tawm ntawm nws

Начало

Nws tag nrho pib thaum lub Cuaj Hlis los nag thaum kuv tab tom ntxuav lub tshuab uas kuv xauj rau $ 5 ntawm Digital Dej Hiav Txwv, uas tau khov vim tias Docker tau ntim tag nrho 24 gigabytes ntawm qhov chaw muaj disk nrog nws cov duab thiab ntim. Qhov tsis txaus ntseeg yog tias tag nrho cov duab thiab cov thawv no tau hloov pauv thiab tsuas yog xav tau los ntsuas qhov ua tau zoo ntawm kuv daim ntawv thov txhua zaus ib qho tshiab ntawm lub tsev qiv ntawv lossis lub moj khaum raug tso tawm. Kuv sim sau cov ntawv plhaub thiab teeb tsa lub sijhawm cron los ntxuav cov khib nyiab, tab sis nws tsis tau pab: txhua zaus nws tsis tuaj yeem xaus nrog kuv lub server qhov chaw disk tau noj thiab cov neeg rau zaub mov dai (zoo tshaj). Qee lub sij hawm, kuv tuaj hla ib tsab xov xwm hais txog yuav ua li cas khiav Jenkins hauv lub thawv thiab yuav ua li cas nws tuaj yeem tsim thiab tshem tawm cov kav dej los ntawm docker daemon socket xa mus rau hauv nws. Kuv nyiam lub tswv yim, tab sis kuv txiav txim siab mus ntxiv thiab sim sim nrog ncaj qha khiav Docker hauv Docker. Thaum lub sijhawm ntawd, nws zoo li kuv qhov kev daws teeb meem tag nrho los rub tawm Docker cov duab thiab tsim cov thawv rau txhua daim ntawv thov uas kuv xav tau rau kev sim hauv lwm lub thawv (cia hu nws lub thawv staging). Lub tswv yim yog pib lub thawv staging nrog tus chij -rm, uas yuav rho tawm tag nrho lub thawv thiab tag nrho nws cov ntsiab lus thaum nws nres. Kuv tinkered nrog Docker duab los ntawm Docker nws tus kheej (https://hub.docker.com/_/docker), tab sis nws tau dhau los ua nyuaj heev thiab kuv yeej tsis tau tswj kom tau nws mus ua haujlwm raws li kuv xav tau thiab kuv xav mus rau txhua txoj kev kuv tus kheej.

Xyaum. Cones

Kuv tau teeb tsa kom lub thawv ua haujlwm raws li qhov kuv xav tau thiab txuas ntxiv kuv cov kev sim, uas ua rau muaj ntau lub paj. Qhov tshwm sim ntawm kuv tus kheej tsim txom yog cov hauv qab no algorithm:

  1. Peb tso lub thawv Docker hauv kev sib tham sib.

    docker run --privileged -it docker:18.09.6

    Ua tib zoo saib rau lub thawv ntim, kauj ruam sab xis lossis sab laug thiab koj DinD tig mus rau hauv taub dag. Qhov tseeb, tej yam tawg ntau heev thaum lub tshiab version raug tso tawm.
    Peb yuav tsum tam sim ntawd nkag mus rau hauv lub plhaub.

  2. Peb tab tom sim nrhiav seb lub ntim twg tau khiav (Teb: tsis muaj), tab sis cia peb khiav cov lus txib lawm:

    docker ps

    Koj yuav xav tsis thoob me ntsis, tab sis nws hloov tawm tias Docker daemon tseem tsis tau khiav:

    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. Cia peb khiav nws peb tus kheej:

    dockerd &

    Lwm unpleasant surprise:

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

  4. Nruab cov iptables thiab pob pob bash (txhua yam zoo siab ua haujlwm hauv bash dua li hauv sh):

    apk add --no-cache iptables bash

  5. Cia peb pib bash. Thaum kawg peb rov qab rau hauv lub plhaub li qub

  6. Cia peb sim rov pib Docker dua:

    dockerd &

    Peb yuav tsum pom ib daim ntawv ntev ntawm cov cav uas xaus nrog:

    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. Nias Enter. Peb rov qab rau hauv bash.

Txij no mus, peb tuaj yeem sim tso lwm lub thawv hauv peb lub thawv Docker, tab sis yuav ua li cas yog tias peb xav tso lwm lub thawv Docker hauv peb lub thawv Docker lossis qee yam tsis raug thiab lub thawv tsoo? Pib tag nrho dua.

Muaj lub thawv DinD thiab kev sim tshiab

Yuav ua li cas kuv khiav Docker hauv Docker thiab dab tsi tawm ntawm nws
Txhawm rau kom tsis txhob rov ua cov kauj ruam saum toj no ib zaug ntxiv, Kuv tsim kuv lub thawv DinD:

https://github.com/alekslitvinenk/dind

Qhov kev daws teeb meem DinD ua haujlwm tau muab kuv lub peev xwm los khiav Docker hauv Docker recursively thiab ua ntau yam kev sim siab.
Kuv yuav piav qhia txog ib qho kev sim (ua tiav) nrog kev khiav MySQL thiab Nodejs tam sim no.
Cov neeg siab ntev tuaj yeem pom tias nws nyob ntawm no li cas

Yog li, cia peb pib:

  1. Peb tso DinD hauv kev sib tham sib hom. Nyob rau hauv no version ntawm DinD, peb yuav tsum manually daim ntawv qhia tag nrho cov ports uas peb cov me nyuam ntim siv tau (Kuv twb ua hauj lwm rau qhov no)

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

    Peb nkag mus rau hauv bash, los ntawm qhov chaw uas peb tuaj yeem pib tso cov thawv me nyuam tam sim ntawd.

  2. Qhib MySQL:

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

  3. Peb txuas mus rau lub database ib yam li peb yuav txuas rau nws hauv zos. Cia peb ua kom txhua yam ua haujlwm.

  4. Tua lub thawv thib ob:

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

    Thov nco ntsoov tias daim ntawv qhia chaw nres nkoj yuav yog raws nraim 8080:8080, txij li thaum peb twb tau mapped chaw nres nkoj 80 los ntawm tus tswv tsev mus rau lub thawv niam txiv rau qhov chaw nres nkoj 8080.

  5. Peb mus rau localhost hauv browser, xyuas kom meej tias cov neeg rau zaub mov teb "Nyob Zoo Ntiaj Teb!"

Hauv kuv qhov xwm txheej, qhov kev sim nrog cov ntim Docker nested tau zoo heev thiab kuv yuav txuas ntxiv txhim kho qhov project thiab siv nws rau kev ua haujlwm. Nws zoo nkaus li kuv tias qhov no yog ib qho kev daws teeb meem ntau dua li Kubernetes thiab Jenkins X. Tab sis qhov no yog kuv qhov kev xav.

Kuv xav tias yog tag nrho rau hnub no tsab xov xwm. Hauv tsab xov xwm tom ntej no kuv yuav piav qhia ntau ntxiv txog kev sim nrog kev khiav Docker recursively hauv Docker thiab mounting directory tob rau hauv nested ntim.

PS Yog tias koj pom qhov project no muaj txiaj ntsig, thov muab nws lub hnub qub ntawm GitHub, nkhaus nws thiab qhia koj cov phooj ywg.

Kho kom raugXXX Kho qhov yuam kev, tsom rau 2 cov yeeb yaj kiab

Tau qhov twg los: www.hab.com

Ntxiv ib saib