VPN කන්ටේනරය 'exec format error' සමඟ නතර වේ: වැරදි වේදිකාව
'exec format error' යනු ද්විමය ගොනුව වෙනත් CPU එකක් සඳහා ගොඩනගා ඇති බවයි, NET_ADMIN නොමැති බව නොවේ. මාර්ග හෝ අක්තපත්ර සංස්කරණය කිරීමට පෙර රුව ඉන්ඩෙක්ස් කියවන්න.
exec format error සමඟ වහාම නතර වන කන්ටේනර වැරදි නැඹුරුවක් ඇති කරයි: හැකියාවක් එකතු කිරීම, උපාංගයක් සවි කිරීම, ටනල් සැකසුම සංස්කරණය කිරීම. මේ කිසිවක් ගැටලුවට ළඟා නොවේ. කර්නලයට ද්විමය ගොනුව කිසිසේත් ධාවනය කළ නොහැකි විය, එය කන්ටේනරයක බොහෝ විට අදහස් වන්නේ රුව සත්කාරකයට වඩා වෙනස් CPU ගෘහ නිර්මාණයක් ඉලක්ක කරන බවයි. මාර්ග, අක්තපත්ර හෝ අයිතිවාසිකම් වෙනස් කළ හැකි සියල්ල සිදුවන්නේ වැඩසටහනක් ආරම්භ වූ පසුවය, කිසිදු වැඩසටහනක් ආරම්භ නොවීය.
සැකසුම් දෝෂයක් ලෙස පෙනෙන ආරම්භක පණිවිඩය
exec ආකෘති අසාර්ථකත්වය පැමිණෙන්නේ පූරකයෙනි, යෙදුම එකම සැකසුමක් කියවීමටත් පෙර. එබැවින් එය කිසිදු සැකසුම් අනතුරු ඇඟවීමක් හෝ ටනල් ලොගයක් සාදන්නේ නැත, මක්නිසාද ඒවා ලිවීමට ජීවමාන කාර්යයක් නොමැති බැවිනි. අසාර්ථකත්වය ද විශ්මයජනක ලෙස වේගවත් ය, බොහෝ විට කන්ටේනර ලොගයේ එකම පේළියක් පෙනීමටත් පෙර. ද්විමය ගොනුව වෙනත් ගෘහ නිර්මාණයකට, වෙනත් මෙහෙයුම් පද්ධතියකට හෝ හානි වූ එකකට වුවද එම කෙටි පණිවිඩය පෙනේ.
ධාවන පරිසරය සහ ගෘහ නිර්මාණය නිශ්චිත රුව යොමුව සමඟ සටහන් කරන්න, පසුව එම යොමුව සැබවින්ම ලබා දෙන්නේ කුමක්දැයි පරීක්ෂා කරන්න. Docker Desktop හි කන්ටේනර වේදිකාව ලැප්ටොප් එකට නොව Linux වර්චුවල් මැෂින් එකට අයත් වේ, එබැවින් සත්කාරක ගෘහ නිර්මාණය පමණක් අපගමනය කළ හැකිය. මෙම යොමුව සඳහා ඉන්ඩෙක්ස් සටහන් ලැයිස්තුව කියවන්න, එහි ටැග් පිටුවේ අලෙවි පෙළ නොවේ.
ධාවන විධානයට පෙර රුව ඉන්ඩෙක්ස් කියවන්න
ලේඛනාගාරයක් බහු-වේදිකා යොමුවක් පළ කරන විට, ටැගය ඉන්ඩෙක්ස් එකකට යොමු වේ, සහ සෑම සටහනක්ම තමන්ගේම digest සහිත වේදිකාවක් නම් කරයි. සමාලෝචනයේ ඇති යොමුව පරීක්ෂා කරන්න, අසල ටැගයක් නොව, එහි ඇති දේ උපකල්පනය කිරීම වෙනුවට ඉන්ඩෙක්ස් කියවන්න.
docker buildx imagetools inspect ghcr.io/example/vpn:1.4
docker image inspect --format '{{.Os}}/{{.Architecture}}' ghcr.io/example/vpn:1.4
පළමු විධානය යොමුව පළ කරන වේදිකා ලැයිස්තුගත කරයි. දෙවැන්න දැනටමත් දේශීයව ඇති රුවේ වේදිකාව වාර්තා කරයි, ධාවන පරිසරය ධාවනය කරන්නේ එයයි. එක් සටහනක් පමණක් ඇති යොමුවක් යනු සෑම සත්කාරකයක්ම එකම ද්විමය ගොනුව ලබන බවයි, කිසිදා ගොඩනගා නොමැති මැෂින් එකකට ටැගය උදව් කළ නොහැක.
ටැග් විකල්පයක් තෝරයි; ඒවා එය සාදන්නේ නැත
බහු-වේදිකා ඉන්ඩෙක්ස් ධාවන පරිසරයට ගැලපෙන සටහනක් තෝරා ගැනීමට ඉඩ දෙයි, එය සැබවින්ම පහසු වන අතර බොහෝ විට ගෙනයා හැකියාව ලෙස වැරදි ලෙස තේරුම් ගැනේ. තේරීම සෙවීමක් මිස පරිවර්තනයක් නොවේ: විකල්පය නොමැති නම් තෝරා ගැනීමට කිසිවක් නැත. එබැවින් එකම ටැගය සත්කාරක දෙකක දෙවෙනස් ද්විමය ගොනු දෙකකට හේතු විය හැක, සත්කාරක එකක එය කිසිදු ඵලදායී දෙයකට හේතු නොවේ.
digest මගින් සවි කිරීම අපැහැදිලි බව ඉවත් කරයි, පසුව සමාලෝචනය කිරීම ද හැකි කරයි, මක්නිසාද digest පරීක්ෂා කළ බයිට නිශ්චිතව හඳුනා ගන්නා බැවිනි. එම digest අනුගමනය සටහන සමඟ තබා ගන්න, අහම්බෙන් වත්මන් වූ ටැගය මත රැඳී සිටීම වෙනුවට.
අනුකරණය එකඟතාවක් මිස පරිවර්තන ස්තරයක් නොවේ
සහාය දක්වන ධාවන පරිසරයක් හරහා අනුකරණයට සමහර දේශීය නොවන පරිශීලක අවකාශ කාර්ය භාර ධාවනය කළ හැක, එබැවින් එක් ගෘහ නිර්මාණයක් කිසිදා තවත් එකක රුව ධාවනය කළ නොහැක යන සම්පූර්ණ කියමන වැරදිය. එය සාමාන්ය විසඳුමක් ද නොවේ. අනුකරණය කළ ධාවනයට වෙනස් කාර්ය සාධන ලක්ෂණ ඇත, ආරම්භ වන සුළු කාර්යයක් ටනල් කාර්ය භාරය පිළිගත හැකි ලෙස හැසිරේද යන්න ගැන කිසිවක් නොකියයි.
Docker හි බහු-වේදිකා මාර්ගෝපදේශය දේශීය ගොඩනැගීම්, හරස්-සම්පාදනය සහ අනුකරණය වෙනස් උපාය මාර්ග ලෙස සලකයි, විකල්ප කියවීමට නිවැරදි මාර්ගය එයයි. එකක් හිතාමතා තෝරන්න, සමානාත්මතාව උපකල්පනය කිරීම වෙනුවට එය යටතේ VPN කාර්ය භාරය ඇගයන්න.
අවසර වෙනත් ගැටලුවක් විසඳයි
ජාල පරිපාලන හැකියාවක් දීම හෝ TUN උපාංගයක් යැවීම නොගැලපෙන ධාවන ගොනුවක් ධාවනය කිරීමට සැලැස්විය නොහැක. මේවා ධාවනය වන කාර්යයක් භාවිතා කරන ධාවන අවසර වේ; ගොනුව දැනටමත් පිළිනොගත් පූරකයට ඒවා නොපෙනේ.
විරුද්ධ දෙය ද එසේම සැබෑ ය. දේශීය ද්විමය ගොනුවක් වරප්රසාද, උපාංග ප්රවේශය, resolver ඒකාබද්ධතාව හෝ ටනලයට අවශ්ය නැවත ආරම්භ කිරීමේ ප්රතිපත්තිය ගැන කිසිවක් ඔප්පු නොකරයි, එබැවින් ආරම්භ වන කන්ටේනරය තවම ක්රියා කරන කන්ටේනරයක් නොවේ. පළමුව වේදිකා ගිවිසුම ස්ථාපිත කරන්න, පසුව එහි ලේඛනගත විකල්ප සමඟ ධාවන ගිවිසුමට යන්න.
රුව digest, සහාය දක්වන ඉලක්කය සහ සැකසුම එකම සටහනේ එකට තබා ගන්න. ගෘහ නිර්මාණය නිහඬව වෙනස් කරන ටැග් යාවත්කාලීනයක් අල්ලා ගැනීම පහසු වන්නේ පෙර digest ලියා ඇති විටය, එකම රෝග ලක්ෂණය හුරුපුරුදු දෝෂයක් සහ දෝෂ නිරාකරණයට වැය කළ නව දහවලක් වන විටට වඩා.