Il-containers li joħorġu minnufih b' exec format error iqanqlu l-istint ħażin: iżżid kapaċità, immonta apparat, editja l-konfigurazzjoni tat-tunnel. Xejn minn dawn ma jasal għall-problema. Il-kernel ma setax jeżegwixxi l-binarju xejn, li f'container kważi dejjem ifisser li l-immaġni hija mmirata lejn arkitettura tal-CPU differenti minn dik tal-host. Kull ma tista' tbiddel fir-rotot, fil-kredenzjali jew fil-privileġġi jiġri wara li programm ikun beda, u l-ebda programm ma beda.

Il-messaġġ tal-bidu li jidher bħal żball ta' konfigurazzjoni

Nuqqas fil-format exec jiġi mil-loader, qabel ma l-applikazzjoni taqra saħansitra setting wieħed. Għalhekk ma jipproduċi l-ebda twissija ta' konfigurazzjoni u l-ebda log tat-tunnel, għax m'hemm l-ebda proċess ħaj li jiktebhom. In-nuqqas huwa wkoll notevolment mgħaġġel, spiss qabel ma tidher saħansitra linja waħda fil-log tal-container. L-istess messaġġ qasir jidher kemm jekk il-binarju huwa għal arkitettura oħra, kemm jekk għal sistema operattiva oħra, jew jekk huwa bil-ħsara.

Irreġistra l-ambjent tal-eżekuzzjoni u l-arkitettura flimkien mar-referenza eżatta tal-immaġni, imbagħad iċċekkja x'qed toffri verament dik ir-referenza. Fuq Docker Desktop il-pjattaforma tal-container tappartjeni lill-magna virtwali Linux u mhux lill-laptop, għalhekk l-arkitettura tal-host waħedha tista' tqarraq. Aqra l-lista tad-dħul tal-indiċi għal din ir-referenza minflok it-test tal-marketing fuq il-paġna tat-tag tagħha.

Aqra l-indiċi tal-immaġni qabel il-kmand tat-tħaddim

Meta reġistru jippubblika referenza multi-pjattaforma, it-tag jindika indiċi, u kull dħul isemmi pjattaforma bid-digest tiegħu stess. Spezzjona r-referenza taħt reviżjoni u mhux tag ġar, u aqra l-indiċi minflok ma tassumi x'fih.

docker buildx imagetools inspect ghcr.io/example/vpn:1.4
docker image inspect --format '{{.Os}}/{{.Architecture}}' ghcr.io/example/vpn:1.4

L-ewwel kmand jelenka l-pjattaformi li tippubblika r-referenza. It-tieni jirrapporta l-pjattaforma tal-immaġni li diġà tinsab lokalment, u dik hija li se tħaddem l-ambjent tal-eżekuzzjoni. Referenza b'dħul wieħed biss tfisser li kull host jirċievi l-istess binarju, u t-tag ma jistax jgħin magna li għaliha qatt ma nbniet.

It-tags jagħżlu varjant; ma joħolqux wieħed

Indiċi multi-pjattaforma jippermetti lill-ambjent tal-eżekuzzjoni jagħżel dħul li jaqbel, li huwa verament konvenjenti u spiss jiġi konfuż mal-portabilità. L-għażla hija tfittxija, mhux traduzzjoni: jekk il-varjant m'hemmx, m'hemm xejn x'jintgħażel. Għalhekk l-istess tag fuq żewġ hosts jista' jirriżulta f'żewġ binarji differenti, u fuq host wieħed ma jirriżultax f'xi ħaġa użabbli.

L-immuntar bid-digest ineħħi l-ambigwità u wkoll jagħmel possibbli reviżjoni aktar tard, għax id-digest jidentifika eżattament il-bytes li ġew ittestjati. Żomm dak id-digest mar-rekord tal-varar minflok tiddependi fuq it-tag li kien kurrenti b'kumbinazzjoni.

L-emulazzjoni hija arranġament, mhux saff ta' traduzzjoni

L-emulazzjoni permezz ta' ambjent tal-eżekuzzjoni appoġġjat tista' tħaddem xi tagħbijiet tax-xogħol mhux nattivi fl-ispazju tal-utent, għalhekk il-pretensjoni assoluta li arkitettura waħda qatt ma tista' tħaddem l-immaġni ta' oħra hija ħażina. Mhijiex lanqas soluzzjoni ġenerali. L-eżekuzzjoni emulata għandha karatteristiċi tal-prestazzjoni differenti, u proċess trivjali li jibda ma jgħidlek xejn dwar jekk tagħbija tat-tunnel ġġibx ruħha b'mod aċċettabbli.

Il-gwida multi-pjattaforma ta' Docker tittratta builds nattivi, kompilazzjoni inkroċjata u emulazzjoni bħala strateġiji separati, u dik hija l-mod tajjeb kif taqra l-għażliet. Agħżel waħda b'mod deliberat, u kkwalifika t-tagħbija tal-VPN taħtha minflok ma tassumi ekwivalenza.

Il-permessi jsolvu problema differenti

L-għoti ta' kapaċità ta' amministrazzjoni tan-netwerk jew it-tgħadd ta' apparat TUN ma jista' jġiegħel fajl eżegwibbli inkompatibbli jaħdem. Dawn huma permessi tal-eżekuzzjoni li juża proċess li qed jaħdem; huma inviżibbli għal loader li diġà rrifjuta l-fajl.

Il-kuntrarju huwa daqstant veru. Binarju nattiv ma jipprova xejn dwar privileġġi, aċċess għall-apparati, integrazzjoni tar-resolver jew il-politika ta' restart li teħtieġ tunnel, għalhekk container li jibda għadu mhux container li jaħdem. Stabbilixxi l-ewwel il-kuntratt tal-pjattaforma, imbagħad għaddi għall-kuntratt tal-eżekuzzjoni bl-għażliet dokumentati tiegħu.

Żomm id-digest tal-immaġni, il-mira appoġġjata u l-konfigurazzjoni flimkien fl-istess rekord. Aġġornament tat-tag li jbiddel l-arkitettura bil-kwiet huwa aktar faċli li jinqabad meta d-digest preċedenti jkun miktub, milli meta l-uniku sintomu jkun żball familjari u waranofsinhar ġdid maħruq fid-debugging.

Artikli relatati