Indlela endiyiqhube ngayo iDocker ngaphakathi kweDocker kunye nento ephuma kuyo

Molweni nonke! Kweyakhe inqaku elidlulileyo, Ndathembisa ukuthetha malunga nokuqhuba i-Docker kwi-Docker kunye nemiba ephathekayo yokusebenzisa esi sifundo. Lixesha lokuba ugcine isithembiso sakho. I-devopser enamava iyakuchasa ukuba abo bafuna i-Docker ngaphakathi kwe-Docker bagqithise nje i-Docker daemon socket ukusuka kumamkeli ukuya kwisingxobo kwaye oku kuyakwanela kwi-99% yamatyala. Kodwa ungangxami ukundijulela amaqebengwana, kuba siza kuthetha ngokuqhuba iDocker ngaphakathi kweDocker. Esi sisombululo sinezicelo ezininzi ezinokwenzeka kwaye eli nqaku limalunga nenye yazo, ke hlala emva kwaye wolule iingalo zakho phambi kwakho.

Indlela endiyiqhube ngayo iDocker ngaphakathi kweDocker kunye nento ephuma kuyo

Ukuqala

Konke kwaqala ngorhatya lwemvula kaSeptemba xa ndicoca umatshini endiwuqeshileyo nge-5 yeedola kwi-Digital Ocean, eyayikhenkceke ngenxa yokuba i-Docker yayigcwalise zonke iigigabhayithi ezingama-24 zendawo ekhoyo yedisk enemifanekiso kunye nezikhongozeli zayo. Into ehlekisayo yayikukuba yonke le mifanekiso kunye nezikhongozeli zazidlula kwaye zazifuneka kuphela ukuvavanya ukusebenza kwesicelo sam rhoqo xa kukhutshwe inguqulelo entsha yethala leencwadi okanye isakhelo. Ndazama ukubhala izikripthi zeqokobhe kunye nokuseta ishedyuli ye-cron yokucoca inkunkuma, kodwa ayizange incede: ngalo lonke ixesha iphelile ngokugqibeleleyo nendawo yedisk yomncedisi wam idliwe kwaye iseva ijinga (eyona nto ingcono). Ngexesha elithile, ndifumene inqaku malunga nendlela yokuqhuba i-Jenkins kwisikhongozeli kunye nendlela enokuyenza kwaye icime imibhobho yokwakha nge-docker socket ye-daemon ethunyelwe kuyo. Ndiwuthandile lo mbono, kodwa ndaye ndagqiba kwelokuba ndiye phambili kwaye ndizame ukulinga ukusebenzisa ngokuthe ngqo iDocker ngaphakathi kweDocker. Ngelo xesha, kwakubonakala kum isisombululo esinengqiqo ngokupheleleyo sokukhuphela imifanekiso yeDocker kwaye ndenze izikhongozeli zazo zonke izicelo endizidingayo ukuze ndivavanywe ngaphakathi kwesinye isikhongozeli (masiyibize ngokuba sisikhongozeli). Umbono yayikukuqala isikhongozeli esine--rm iflegi, esisusa ngokuzenzekelayo isikhongozeli sonke kunye nayo yonke imixholo yaso xa simisiwe. Ndikhe ndajonga umfanekiso weDocker ukusuka kwiDocker ngokwayo (https://hub.docker.com/_/docker), kodwa kuye kwaba nzima kakhulu kwaye andizange ndikwazi ukuyifumana ukuba isebenze ngendlela endiyidinga ngayo kwaye ndandifuna ukuhamba yonke indlela ngokwam.

Ziqhelise. Iicones

Ndiye ndazimisela ukwenza isikhongozeli sisebenze ngendlela endiyidinga ngayo kwaye ndaqhubeka novavanyo lwam, olukhokelele kwintaphane yee-buds. Isiphumo sokuzingcungcuthekisa kwam yaba yile algorithm ilandelayo:

  1. Siphehlelela isikhongozeli seDocker kwimowudi esebenzayo.

    docker run --privileged -it docker:18.09.6

    Nika ingqalelo kuguqulelo lwesikhongozeli, nyathelo ngasekunene okanye ngasekhohlo kwaye iDinD yakho ijike ibe lithanga. Ngapha koko, izinto zophuka rhoqo xa inguqulelo entsha ikhutshwa.
    Kufuneka singene kwangoko eqokobheni.

  2. Sizama ukufumanisa ukuba zeziphi izikhongozeli ezisebenzayo (Impendulo: akukho nanye), kodwa masiqhube umyalelo nokuba kunjalo:

    docker ps

    Uya kumangaliswa kancinci, kodwa kuya kuvela ukuba i-daemon ye-Docker ayisebenzi:

    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. Masiyiqhube ngokwethu:

    dockerd &

    Enye into emangalisayo engathandekiyo:

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

  4. Faka iiptables kunye neepakethe ze-bash (yonke into imnandi kakhulu ukusebenza kwi-bash kune-sh):

    apk add --no-cache iptables bash

  5. Masiqalise i-bash. Ekugqibeleni sibuyele kwiqokobhe lesiqhelo

  6. Masizame ukusungula iDocker kwakhona:

    dockerd &

    Kufuneka sibone iphepha elide leelog eliphela ngo:

    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. Cofa u-Enter. Sibuyele kwi bash.

Ukusukela ngoku ukuya phambili, sinokuzama ukwazisa ezinye iziqulathi ngaphakathi kwesikhongozeli sethu seDocker, kodwa kuthekani ukuba sifuna ukuphehlelela esinye isikhongozeli seDocker ngaphakathi kwesikhongozeli sethu seDocker okanye kukho into engahambanga kakuhle kwaye isikhongozeli singqubeka? Qala kwakhona.

Isikhongozeli sakho seDinD kunye nemifuniselo emitsha

Indlela endiyiqhube ngayo iDocker ngaphakathi kweDocker kunye nento ephuma kuyo
Ukunqanda ukuphindaphinda la manyathelo angentla, ndizenzele esam isitya seDinD:

https://github.com/alekslitvinenk/dind

Isisombululo se-DinD esisebenzayo sandinika amandla okuqhuba i-Docker ngaphakathi kwe-Docker ngokuphindaphindiweyo kwaye ndenze imifuniselo emininzi.
Ndiza kuchaza umfuniselo onjalo (ophumeleleyo) wokuqhuba iMySQL kunye neNodejs ngoku.
Oyena ungenamonde uyabona ukuba bekunjani apha

Ke, masiqalise:

  1. Siphehlelela iDinD kwimowudi yonxibelelwano. Kolu guqulelo lwe-DinD, kufuneka senze imephu ngesandla onke amazibuko anokusebenzisa izikhongozeli zethu zabantwana (sele ndisebenza koku)

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

    Singena kwi-bash, apho sinokuqala khona ngokukhawuleza ukusungula izitya zabantwana.

  2. Qalisa i-MySQL:

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

  3. Sidibanisa kwisiseko sedatha ngendlela efanayo njengoko siza kudibanisa kuyo ekuhlaleni. Masiqinisekise ukuba yonke into iyasebenza.

  4. Yazisa isikhongozeli sesibini:

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

    Nceda uqaphele ukuba imephu yezibuko iyakuba ngqo 8080:8080, kuba sele senze imephu ye-80 ukusuka kumamkeli ukuya kwisingxobo sabazali ukuya kwi-8080.

  5. Siya kwi-localhost kwi-browser, qinisekisa ukuba umncedisi uyaphendula "Molo Hlabathi!"

Kwimeko yam, uvavanyo lwezikhongozeli ze-Docker ezifakwe kwindlwane luye lwabonakala lulungile kwaye ndiza kuqhubeka nokuphuhlisa iprojekthi kwaye ndiyisebenzisele ukwenza iqonga. Kubonakala kum ukuba esi sisisombululo esilula ngakumbi kune-Kubernetes kunye ne-Jenkins X. Kodwa lo ngumbono wam ophantsi.

Ndicinga ukuba kuphelele apho inqaku lanamhlanje. Kwinqaku elilandelayo ndiza kuchaza ngakumbi umfuniselo othe kratya wokuqhuba i-Docker ngokuphindaphindiweyo kwi-Docker kunye nokufakwa kwezalathisi nzulu kwizikhongozeli ezifakwe kwindlwane.

PS Ukuba ufumana le projekthi iluncedo, nceda unike inkwenkwezi kwi-GitHub, ifolokhwe kwaye uxelele abahlobo bakho.

Hlela1 Iimpazamo ezilungisiweyo, ezigxininiswe kwiividiyo ezi-2

umthombo: www.habr.com

Yongeza izimvo