Cuireann beagnach gach scríbhinn faoin bhfadhb seo an locht ar an toirt, agus is é sin go díreach an fáth a dtógann an deisiú chomh fada. Bhí bind mount agat a d'oibrigh, cheangail an VPN corparáideach, agus docker compose up teipeann sé anois le cosán foinse ar iarraidh, eolaire folamh, nó mount a dhiúltaíonn an t-inneall a chruthú. Sna timpeallachtaí a ghlan mé, ní raibh an comhad Compose athraithe agus bhí an cosán ceart. An rud a d'athraigh ná cé acu daemon a fuair an iarratas, agus ní raibh san earráid shuiteála ach an chéad áit ar tháinig an difríocht sin chun solais.

Níor bhog an toirt riamh; bhog an t-iarratas

Ní -v /srv/app:/app cóip eolaire é a dhéanann do shell. Casann an cliant ina iarratas API é, agus réitíonn an daemon a fhreagraíonn /srv/app in aghaidh a chórais comhad féin. Nuair a ritheann an dá thaobh ar an eithne chéanna, is é an cosán sin an ceann a fheiceann tú i do bhainisteoir comhad. Nuair a athraíonn an endpoint, cuardaítear an teaghrán céanna ar mheaisín nár chuala riamh faoi eolaire do thionscadail, agus deir an daemon go bhfuil an fhoinse ar iarraidh nó cruthaíonn sé eolaire folamh ina háit gan focal.

Sin é an fáth freisin a leanann toirt ainmnithe ag obair nuair nach leanann bind mount. -v appdata:/app ainmníonn sé stóras atá ag an daemon, mar sin ní gá cosán ósta a bheith ann in aon áit ar leith. Má dhéanann malartú seirbhíse amháin ó bind mount go toirt ainmnithe an earráid a chur ar ceal, níor cheartaigh tú an fhadhb. Dhearbhaigh tú nach n-aontaíonn an cliant agus an daemon faoi cé acu córas comhad lena mbaineann an cosán, agus filleann an easaontas sin an nóiméad a dteastaíonn fíoreolaire ósta uait arís.

Priontáil an endpoint sula dteagmhálann tú leis an mount

Is féidir le roinnt socruithe an cliant a dhíriú ar endpoint, agus ní aontaíonn siad i gcónaí: --context bratach, DOCKER_CONTEXT, DOCKER_HOST sa shell reatha, agus an comhthéacs atá sábháilte i gcumraíocht an chliaint. In ionad réasúnaíocht a dhéanamh ar thosaíocht, priontáil iad go léir agus cuir na freagraí i gcomparáid.

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

Tá cumraíocht an chliaint in ~/.docker/config.json ar Linux agus macOS agus in %USERPROFILE%\.docker\config.json ar Windows, agus sáraíonn luach a onnmhairítear sa teirminéal reatha an ceann sábháilte don seisiún sin amháin. Más ainm ósta é an endpoint in ionad socket áitiúil, cinneann réiteach ainmneacha agus bealaí cá dtiteann sé, agus is iad sin go beacht a athscríobhann cliant VPN. Is féidir le tollán a chuireann bealach leis nó a mhalartaíonn an réiteoir ainm a bhíodh ag ciallú an ríomhaire glúine seo a sheoladh chuig seoladh laistigh den líonra corparáideach.

Cuir staid i gcomparáid seachas cumraíocht. Rith docker ps -a agus docker images leis an tollán síos, agus ansin arís leis suas. Is fianaise níos láidre é liosta coimeádán difriúil ná aon chomhad cumraíochta, mar taispeánann sé gur fhreagair daemon eile d'iarratas.

Fiafraigh den daemon an bhfuil an cosán ann

Nuair a bhíonn a fhios agat cén daemon a shroich tú, cuir air breathnú ar an eolaire. Teipeann an fhoirm --mount le teachtaireacht níos soiléire ná an bhratach ghearr, mar déanann sí an fhoinse a bhailíochtú sula dtosaíonn sí an coimeádán:

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

Má thuairiscíonn sí an fhoinse ar iarraidh, cruthaigh í ar an meaisín a d'fhreagair, nó dírij an tseirbhís chuig toirt ainmnithe agus cóipeáil na sonraí isteach. Is é an rud nár cheart duit a dhéanamh toirteanna a athchruthú agus an t-inneall a athshuiteáil roimh an seiceáil seo. Athraíonn na gníomhartha sin an timpeallacht go leor chun an mhíréir a cheilt agus í fós ina háit.

Ritheann cosán amháin eile in áit eile ar fad: is obair daemon é image a tharraingt, ní obair cliant. Ní chruthaíonn tarraingt rathúil ach go bhféadann an daemon registry a shroicheadh, agus ní chruthaíonn bind mount oibre ach gur réitíodh cosán. Tástáil gach cosán san áit a gcuirtear i gcrích é i ndáiríre, nó caithfidh tú tráthnóna ar an gceann mícheart.

Teipeann ainmneacha intranet ar chúis eile

Is é an dara leath den tuarascáil chéanna de ghnáth nach féidir leis an coimeádán intranet.corp.examplea shroicheadh. Is meicníocht ar leith í sin, ní dara fadhb toirte. Faigheann coimeádán a /etc/resolv.conf nuair a thosaíonn sé, ginte as socruithe réiteora an daemon, mar sin ní bheidh freastalaí DNS a chuir an VPN leis tar éis an coimeádán a chruthú le feiceáil ann go dtí go n-athchruthaítear an coimeádán.

Seolann réiteoir leabaithe Docker ar líonra sainithe ag an úsáideoir fiosruithe seachtracha chuig freastalaithe cumraithe an ósta, rud a chabhraíonn nuair a athscríobhann an VPN réiteoir an ósta agus a dhéanann dochar nuair a sheolann DNS scoilte crios inmheánach chuig freastalaí nach bhfeiceann an daemon a thuilleadh. Seachnaíonn mapáil chúng shoiléir an díospóireacht maidir le hainmneacha nach n-athraíonn riamh:

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

Scríobhann sé seo iontráil i gcomhad hosts an choimeádáin, mar sin ní fhoghlaimíonn an coimeádán aon rud faoin tollán, agus reoann sé an seoladh freisin. Nuair a bhogann an t-óst inmheánach, fanann an iontráil mícheart go dtí go n-eagraíonn duine éigin an comhad Compose. Úsáid é le haghaidh fearas seasta nó bunachar sonraí pionnáilte, agus lig do DNS ainmneacha a bhogann a láimhseáil.

Cad a athraíonn athshuiteáil i ndáiríre

Athchruthaíonn athshuiteáil Docker Desktop an VM, an socket agus an liosta comhthéacs, agus tosaíonn an mount ag obair arís. Tá an toradh sin fíor agus ní mhúineann sé aon rud, agus is é sin an fáth a bhfillfidh an mhainneachtain chéanna tar éis an chéad nuashonrú VPN eile. Tháinig an athshuiteáil in ionad an endpoint a bhí á úsáid ag an gcliant; níor réitigh sí an cosán a ainmníonn do thionscadal leis an gcóras comhad a léann an daemon i ndáiríre.

Tá mo ord oibre gearr. Deimhnigh cén endpoint a úsáidfidh an cliant. Deimhnigh cén daemon a d'fhreagair trí liostaí coimeádán a chur i gcomparáid. Iarr ar an daemon sin an cosán foinse a liostú. Ní dhéanfaidh tú an mount a chur in eagar ach ansin, iontráil hosts a chur leis, nó cineál toirte a athrú. Má choinníonn tú an comhad Compose do fhoireann a oibríonn thar VPN, b'fhearr leat toirteanna ainmnithe do shonraí ar cheart don daemon a bheith acu, ionas nach dtiocfaidh cosán ósta chun bheith ina chuid den chonradh riamh.

Ailt ghaolmhara