Yadda na gudu Docker a cikin Docker da abin da ya fito daga ciki

Sannu duka! A cikin nasa labarin da ya gabata, Na yi alkawarin yin magana game da Gudun Docker a Docker da kuma abubuwan da ke amfani da wannan darasi. Lokaci yayi da zaka cika alkawari. Gogaggen mai ba da sabis na iya ƙila waɗanda ke buƙatar Docker a cikin Docker kawai tura soket ɗin Docker daemon daga mai masaukin zuwa cikin akwati kuma wannan zai isa a cikin 99% na lokuta. Amma kada ku yi gaggawar jefa mini kukis, saboda za mu yi magana game da ainihin gudanar da Docker a cikin Docker. Wannan bayani yana da aikace-aikace masu yawa da yawa kuma wannan labarin game da ɗayan su ne, don haka zauna a baya kuma ku daidaita hannuwanku a gaban ku.

Yadda na gudu Docker a cikin Docker da abin da ya fito daga ciki

Начало

Lamarin ya fara ne da maraice na watan Satumba a lokacin da nake tsaftace injin da na yi hayar dala $5 akan Dijital Ocean, wanda ya daskare saboda gaskiyar cewa Docker ya cika dukkan gigabytes 24 na sararin faifai da hotuna da kwantena. Abin ban mamaki shine duk waɗannan hotuna da kwantena sun kasance masu wucewa kuma ana buƙatar su kawai don gwada aikin aikace-aikacena duk lokacin da aka fitar da sabon sigar ɗakin karatu ko tsarin. Na yi ƙoƙarin rubuta rubutun harsashi da kafa tsarin cron don tsaftace datti, amma bai taimaka ba: duk lokacin da babu makawa ya ƙare tare da faifan diski na uwar garken da ake cinyewa da kuma rataye sabar (mafi kyau). A wani lokaci, na ci karo da wata kasida game da yadda ake tafiyar da Jenkins a cikin akwati da kuma yadda za ta iya ƙirƙira da share bututun gini ta hanyar soket daemon docker da aka tura a ciki. Na ji daɗin ra'ayin, amma na yanke shawarar ci gaba da ƙoƙarin gwada Docker kai tsaye a cikin Docker. A wannan lokacin, ya zama a gare ni cikakkiyar ma'ana don zazzage hotunan Docker da ƙirƙirar kwantena don duk aikace-aikacen da nake buƙata don gwadawa a cikin wani akwati (bari mu kira shi babban akwati). Manufar ita ce a fara babban akwati tare da tutar -rm, wanda ke goge gabaɗayan akwati da duk abin da ke cikin ta atomatik lokacin da aka dakatar da shi. Na yi la'akari da hoton Docker daga Docker kanta (https://hub.docker.com/_/docker), amma ya zama mai wahala kuma ban taɓa samun damar yin aiki yadda nake buƙata ba kuma ina so in bi duk hanyar da kaina.

Yi aiki. Cones

Na tashi don yin aikin kwandon yadda nake buƙata kuma na ci gaba da gwaje-gwaje na, wanda ya haifar da ɗimbin buds. Sakamakon azabtar da kaina shine algorithm mai zuwa:

  1. Muna ƙaddamar da kwandon Docker a cikin yanayin hulɗa.

    docker run --privileged -it docker:18.09.6

    Kula da nau'in akwati, mataki dama ko hagu kuma DinD ɗin ku ya zama kabewa. A zahiri, abubuwa suna karya sau da yawa lokacin da aka fitar da sabon sigar.
    Dole ne mu shiga cikin harsashi nan da nan.

  2. Muna ƙoƙarin gano waɗanne kwantena ne ke gudana (Amsa: babu), amma bari mu aiwatar da umarnin ko ta yaya:

    docker ps

    Za ku ɗan yi mamaki, amma ya juya cewa Docker daemon baya gudana:

    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. Mu gudanar da kanmu:

    dockerd &

    Wani abin mamaki mara dadi:

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

  4. Shigar da iptables da fakitin bash (komai ya fi jin daɗin aiki a cikin bash fiye da na sh):

    apk add --no-cache iptables bash

  5. Mu kaddamar da bash. A ƙarshe mun dawo cikin harsashi da aka saba

  6. Bari mu sake gwada ƙaddamar da Docker:

    dockerd &

    Ya kamata mu ga doguwar takardan katako ta ƙare da:

    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. Danna Shigar. Mun dawo cikin bash.

Daga yanzu, za mu iya ƙoƙarin ƙaddamar da wasu kwantena a cikin kwandon Docker ɗinmu, amma menene idan muna son ƙaddamar da wani akwati na Docker a cikin kwandon Docker ɗinmu ko wani abu ya ɓace kuma kwandon ya fado? Fara duka kuma.

Mallakar kwandon DinD da sabbin gwaje-gwaje

Yadda na gudu Docker a cikin Docker da abin da ya fito daga ciki
Don guje wa maimaita matakan da ke sama akai-akai, na ƙirƙiri akwati na DinD:

https://github.com/alekslitvinenk/dind

Maganin DinD mai aiki ya ba ni ikon gudanar da Docker a cikin Docker akai-akai da yin ƙarin gwaje-gwaje masu ban sha'awa.
Zan bayyana irin wannan gwajin (nasara) tare da gudanar da MySQL da Nodejs yanzu.
Wanda ya fi kowa haƙuri zai iya ganin yadda abin yake a nan

Don haka, bari mu fara:

  1. Mun ƙaddamar da DinD a cikin yanayin hulɗa. A cikin wannan sigar ta DinD, muna buƙatar yin taswirar duk tashoshin jiragen ruwa waɗanda kwantenan yaranmu za su iya amfani da su da hannu (na riga na yi aiki akan wannan)

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

    Mun shiga cikin bash, daga inda za mu iya fara kaddamar da kwantena na yara nan da nan.

  2. Kaddamar da MySQL:

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

  3. Muna haɗi zuwa bayanan bayanai kamar yadda za mu haɗa su a cikin gida. Mu tabbatar komai yana aiki.

  4. Kaddamar da akwati na biyu:

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

    Lura cewa taswirar tashar jiragen ruwa za ta kasance daidai 8080:8080, Tun da mun riga mun tsara tashar jiragen ruwa 80 daga mai masaukin zuwa ga mahaifa zuwa tashar jiragen ruwa 8080.

  5. Muna zuwa localhost a cikin mai binciken, tabbatar cewa uwar garken ya amsa "Hello Duniya!"

A halin da nake ciki, gwajin tare da kwantena Docker na gida ya zama mai inganci kuma zan ci gaba da haɓaka aikin da amfani da shi don tsarawa. Da alama a gare ni wannan shine mafi sauƙi mafi sauƙi fiye da Kubernetes da Jenkins X. Amma wannan shine ra'ayi na.

Ina tsammanin wannan shine kawai labarin yau. A cikin labarin na gaba zan bayyana dalla-dalla gwaje-gwajen tare da gudanar da Docker akai-akai a cikin Docker da kundayen adireshi masu zurfi cikin kwantena masu gida.

PS Idan kun sami wannan aikin yana da amfani, da fatan za a ba shi tauraro akan GitHub, cokali mai yatsa kuma ku gaya wa abokanka.

Gyara1 Kurakurai da aka gyara, an mayar da hankali kan bidiyoyi 2

source: www.habr.com

Add a comment