Kusan kowane rubutu game da wannan matsala yana zargin volume ɗin, kuma wannan shine ainihin dalilin da gyaran yake ɗaukar lokaci mai tsawo. Kana da bind mount da ke aiki, VPN na kamfanin ya haɗa, kuma docker compose up yanzu yana gazawa da hanyar tushe da ta ɓace, babban fayil mara komai, ko mount da injin ya ƙi ƙirƙira. A cikin muhallan da na tsaftace, fayil ɗin Compose bai canza ba kuma hanyar ta kasance daidai. Abin da ya canza shine wane daemon ne ya karɓi buƙatar, kuma kuskuren mount shine kawai wuri na farko da wannan bambancin ya bayyana.

Volume ɗin bai taɓa motsawa ba; buƙatar ce ta motsa

Alamar -v /srv/app:/app ba kwafin babban fayil ba ne da shell ɗinka ke yi. Abokin ciniki yana mai da ita buƙatar API, kuma daemon ɗin da ke amsa yana warware /srv/app a kan nasa tsarin fayil. Lokacin da ɓangarorin biyu suke aiki a kan kernel ɗaya, wannan hanyar ita ce da kake gani a manajan fayil ɗinka. Lokacin da endpoint ya canza, ana neman wannan igiyar a kan na'urar da ba ta taɓa jin labarin babban fayil ɗin aikinka ba, kuma daemon ko yana bayar da rahoton tushen a matsayin ɓacewa ko kuma a hankali ya ƙirƙiri babban fayil mara komai a wurinsa.

Wannan kuma shine dalilin da volume mai suna ke ci gaba da aiki yayin da bind mount ba ya aiki. -v appdata:/app yana ba da suna ga ajiya da daemon ya mallaka, don haka babu hanyar host da za ta kasance a wani takamaiman wuri. Idan canza sabis ɗaya daga bind mount zuwa volume mai suna ya sa kuskuren ya ɓace, ba ka gyara matsalar ba. Ka tabbatar cewa abokin ciniki da daemon ba su yarda a kan wace tsarin fayil ne hanyar ta ke ba, kuma wannan rashin jituwa yana dawowa a lokacin da ka sake buƙatar ainihin babban fayil na host.

Buga endpoint kafin ka taɓa mount ɗin

Saituna da yawa na iya nuna abokin ciniki zuwa endpoint, kuma ba koyaushe suke yarda ba: alamar --context , DOCKER_CONTEXT, DOCKER_HOST a cikin shell na yanzu, da kuma yanayin da aka adana a cikin saitin abokin ciniki. Maimakon yin tunani game da fifiko, buga duka ka kwatanta amsoshin.

docker context show
docker context ls
docker version
docker info --format "{{.Name}} {{.OperatingSystem}} {{.ServerVersion}}"

Saitin abokin ciniki yana cikin ~/.docker/config.json a Linux da macOS kuma a cikin %USERPROFILE%\.docker\config.json a Windows, kuma darajar da aka fitar a tashar yanzu tana wuce wadda aka adana don wannan zama kawai. Idan endpoint sunan host ne maimakon socket na gida, warwarewar suna da hanyoyi ne ke yanke shawarar inda zai sauka, kuma waɗannan su ne ainihin abin da abokin ciniki na VPN ke sake rubutawa. Ramin da ke ƙara hanya ko ya musanya resolver zai iya aika sunan da a da yake nufin wannan kwamfutar tafi-da-gidanka zuwa adireshin cikin cibiyar sadarwar kamfanin.

Kwatanta yanayi maimakon saiti. Gudanar da docker ps -a da docker images da ramin a rufe, sannan kuma da shi a buɗe. Wani jerin kwantena daban shine shaida mafi ƙarfi fiye da kowane fayil ɗin saiti, domin yana nuna cewa wani daemon ne ya amsa buƙatarka.

Tambayi daemon ko hanyar tana can

Da zarar ka san wane daemon ka isa, sa shi ya duba babban fayil ɗin. Siffar --mount tana gazawa da saƙo mafi bayyananne fiye da gajeriyar alamar, domin tana tabbatar da tushen kafin ta fara kwantenan:

docker run --rm --mount type=bind,source=/srv/app,target=/app alpine ls -la /app

Idan ya bayar da rahoton tushen a matsayin ɓacewa, ƙirƙira shi a kan na'urar da ta amsa, ko nuna sabis ɗin zuwa volume mai suna ka kwafa bayanan ciki. Abin da bai kamata ka yi ba shine sake ƙirƙirar volumes da sake shigar da injin kafin wannan bincike. Waɗannan ayyukan suna canza muhalli sosai don ɓoye rashin daidaiton yayin da suke barin shi a wurinsa.

Wata hanya kuma tana gudana a wani wuri daban: ɗebo image aikin daemon ne, ba aikin abokin ciniki ba. Ɗebo mai nasara yana tabbatar da cewa daemon zai iya isa registry kawai, kuma bind mount mai aiki yana tabbatar da cewa an warware hanya kawai. Gwada kowace hanya a inda ake aiwatar da ita, in ba haka ba za ka yi la'asar a kan mara kyau.

Sunayen intranet suna gazawa saboda wani dalili daban

Rabin na biyu na wannan rahoton yawanci shine cewa kwantena ba zai iya isa intranet.corp.exampleba. Wannan wata hanya ce daban, ba matsala ta biyu ta volume ba. Kwantena yana samun /etc/resolv.conf sa lokacin da ya fara, wanda aka ƙirƙira daga saitunan resolver na daemon, don haka uwar garken DNS da VPN ya ƙara bayan an ƙirƙiri kwantenan ba zai bayyana a ciki ba har sai an sake ƙirƙirar kwantenan.

Resolver ɗin Docker da ke ciki a kan cibiyar sadarwar da mai amfani ya ayyana yana tura tambayoyin waje zuwa uwar garken da aka saita a host, wanda ke taimakawa lokacin da VPN ke sake rubuta resolver ɗin host kuma yana cutarwa lokacin da DNS da aka raba ke aika yanki na ciki zuwa uwar garken da daemon ba ya gani kuma. Ƙunƙwarar taswira bayyananna tana guje wa muhawara ga sunayen da ba sa canzawa:

services:
  web:
    extra_hosts:
      - "intranet.corp.example:10.20.30.40"

Wannan yana rubuta shigarwa a cikin fayil ɗin hosts na kwantenan, don haka kwantenan ba ya koyon komai game da ramin, kuma yana daskare adireshin. Lokacin da host ɗin ciki ya motsa, shigarwar tana ci gaba da kuskure har sai wani ya gyara fayil ɗin Compose. Yi amfani da shi don na'ura mai tsayawa ko bayanan da aka lika, kuma bar DNS ya kula da sunayen da ke motsawa.

Abin da sake shigarwa ke canzawa a zahiri

Sake shigar da Docker Desktop yana sake ƙirƙirar VM, socket, da jerin yanayi, kuma mount ɗin ya fara aiki kuma. Wannan sakamakon gaskiya ne kuma ba ya koyar da komai, wanda shine dalilin da gazawar ɗaya ke dawowa bayan sabunta VPN na gaba. Sake shigarwa ya maye gurbin endpoint ɗin da abokin ciniki ke amfani da shi; bai daidaita hanyar da aikinka ke ambata da tsarin fayil ɗin da daemon ke karantawa a zahiri ba.

Tsarin aikina gajere ne. Tabbatar wane endpoint abokin ciniki zai yi amfani da shi. Tabbatar wane daemon ya amsa ta hanyar kwatanta jerin kwantena. Ka roƙi wannan daemon ya lissafa hanyar tushe. Bayan haka ne kawai za ka gyara mount ɗin, ƙara shigarwar hosts, ko canza nau'in volume. Idan kana kula da fayil ɗin Compose don ƙungiyar da ke aiki ta VPN, fi son volumes masu suna don bayanan da daemon ya kamata ya mallaka, don haka hanyar host ba za ta taɓa zama wani ɓangare na yarjejeniyar ba.

Labarai masu alaƙa