Docker: එක් කන්ටේනරයක් VPN හරහා යවා අනෙක සෘජුවම තබා ගන්න
ටියුනලයට එහිම කන්ටේනරය දෙන්න, එය අවශ්ය වන සේවාවලට පමණක් එම නාම අවකාශය බෙදා ගැනීමට ඉඩ දෙන්න, පසුව හිමිකරුට පසුව එන දේ සලකා බලන්න: වරායන්, localhost, DNS.
එක් සත්කාරකයක්, කාර්ය භාර දෙකක් සහ ඒවා වෙන් කරන එක් අවශ්යතාවක්: වාණිජ VPN එකකින් පිටවිය යුතු බාගත කිරීමේ සේවාදායකය සහ සත්කාරකයේ සම්බන්ධතාව දිගටම භාවිත කළ යුතු කළමනාකරණ අතුරුමුහුණත. සත්කාරකයේ VPN සේවාදායකය ස්ථාපනය කිරීම අවශ්යතාව වහාම බිඳ දමයි, මන්ද එවිට කාර්ය භාර දෙකම එක් පිටවීමක් බෙදා ගනී. සැබවින්ම ක්රියා කරන රටාව වන්නේ ටියුනලය එහිම කන්ටේනරයට ගෙන යාම සහ එය අවශ්ය වන කාර්ය භාරවලට පමණක් එම කන්ටේනරයේ ජාල නාම අවකාශයට එක් වීමට ඉඩ දීමයි. ඉතිරි සියල්ල සාමාන්ය Docker මාර්ගය රඳවා ගනී, සහ ඊළඟට එන විස්තර නාම අවකාශය කා සතුද යන්නේ ප්රතිවිපාකයන් ය.
බෙදාගත් නාම අවකාශයක් නීති වෙනස් කරන්නේ ඇයි
තවත් එකක නාම අවකාශයට එක් වන කන්ටේනරයට තමන්ගේම ජාල තට්ටුවක් ලැබෙන්නේ නැත. එය එක් වූ කන්ටේනරයට සමාන අතුරුමුහුණත්, එම මාර්ගගත කිරීමේ වගුව සහ එම loopback දකියි, එබැවින්ම මෙම රටාව ප්රයෝජනවත් වේ: කාර්ය භාරය සාමාන්ය පරිදි විසඳා සම්බන්ධ වේ, සහ යටින් ඇති ටියුනලය යෙදුමට නොදැනී ගමන් පිටුපස හසු කර ගනී. මිල වන්නේ සෑම ජාල සැකසුමකටම දැන් එක් හිමිකරුවෙක් සිටින අතර, එක් වන කන්ටේනරය ඔහු නොවීමයි.
මෙම හිමිකාරිත්ව නියමය බොහෝ වින්යාස ප්රශ්නවලට ඒවා අසන පෙරම පිළිතුරු දෙයි. සැකසුම ජාල තට්ටුවේ ජීවත් වන්නේ නම් එය පැති කන්ටේනරයට අයත් වේ. එය ක්රියාවලිය විස්තර කරන්නේ නම් එය කාර්ය භාරය සමඟ රැඳේ.
loopback යනු මිනිසුන් පුදුම කරන කොටසයි. එක් වන කන්ටේනරය තුළ, localhost පැති කන්ටේනරයේ loopback වෙත විසඳෙන අතර, තමන්ගේම පෞද්ගලික එකකට නොවේ, එබැවින් හුදකලාව අපේක්ෂා කරමින් 127.0.0.1 වෙත බැඳෙන සේවාවක් දැන් එම ලිපිනය ටියුනල් කන්ටේනරය සමඟ බෙදා ගනී.
නාම අවකාශය හිමි කන්ටේනරයේ වරායන් ප්රකාශයට පත් කරන්න
වරාය සිතියම්කරණය නාම අවකාශයේ හිමිකරුට අයත් වේ, සවන් දෙන ක්රියාවලිය අනෙක් කන්ටේනරයේ ධාවනය වුවද. සිතියම්කරණය පැති කන්ටේනරයේ ප්රකාශ කරන්න, සහ කාර්ය භාරය තමන්ගේම ක්රියාවලි වින්යාසය නොවෙනස්ව තබා ගනීවා. එක් වන සේවාවේ සිතියම්කරණය ක්රියාත්මක විය නොහැක, එන්ජිම එය ප්රතික්ෂේප කළත් කන්ටේනරය ආරම්භ වන ආකාරය අනුව නිහඬව නොසලකා හැරියත්, එබැවින්ම මොහොතකට පෙර ළඟා විය හැකිව තිබූ අතුරුමුහුණත රටාව යෙදූ වහාම අතුරුදහන් වේ.
services:
gluetun:
image: qmcgaw/gluetun
cap_add: [NET_ADMIN]
ports: ["8080:8080"]
client-vpn:
image: example/client
network_mode: "service:gluetun"
client-direct:
image: example/client
ports: ["8081:8080"]මෙම කොටස සේවා තුනක් ලෙස නොව තීරණ තුනක් ලෙස කියවන්න. පැති කන්ටේනරය ටියුනලය සහ ප්රකාශිත වරාය හිමිකර ගනී; එක් වන සේවාදායකය කිසිදු ජාලයක් ප්රකාශ නොකරයි; සෘජු සේවාදායකය පෙරනිමි ජාලයේ තමන්ගේම සිතියම්කරණය තබා ගනී. හැකියාව NET_ADMIN පැති කන්ටේනරයට අතුරුමුහුණත් සෑදීමට සහ මාර්ග වෙනස් කිරීමට ඉඩ දෙන්නේ එයයි, එබැවින්ම මෙම කන්ටේනරය එය සේවය කරන කාර්ය භාරවලට වඩා වැඩි වරප්රසාද අවශ්ය වේ.
සෘජුවම රැඳෙන සේවාව තමන්ගේම ජාලය තබා ගනී
ටියුනලය හරහා නොයා යුතු කාර්ය භාරය පෙරනිමි පාලම හෝ තමන්ගේම පරිශීලක-නිර්වචිත ජාලය තමන්ගේම ප්රකාශිත වරාය සහ පිටවීම සමඟ තබා ගනී. කන්ටේනර දෙකට නාමයෙන් කතා කළ හැකි වන පිණිස එය පැති කන්ටේනරයේ ජාලයට සම්බන්ධ කිරීමට පෙළඹවීමක් ඇත, නමුත් එම එක් පියවරම එහි ගමන් නිහඬව ටියුනලයට ගෙන යයි. ඒවා එකිනෙකට ළඟා විය යුතු නම්, වෙනම පරිශීලක-නිර්වචිත ජාලයක් ගොඩනගා දෙකම එයට සම්බන්ධ කරන්න, සහ පැති කන්ටේනරය පිටතට යන එකම මාර්ගය ලෙස තබන්න.
ප්රශ්න දෙක වෙන් කර තබන්න: කුමන කන්ටේනර එකිනෙකට ළඟා විය හැකිද, සහ කුමක් කොහෙන් පිටවේද. ඒවා ඒකාබද්ධ කිරීම මෙම සැලසුම නැවත සමස්ත සත්කාරක-ව්යාප්ත VPN එකක් වීමේ වඩාත් පොදු මාර්ගයයි.
පළමු පැය සඳහා අසාර්ථකතා න්යාසය
බොහෝ පළමු උත්සාහ හතරෙන් එකකින් අසාර්ථක වේ, සහ එක් එක් එකට වෙනස් හේතුවක් ඇත. මේ අනුපිළිවෙලින් ඒවා පරීක්ෂා කරන්න, මන්ද පළමු දෙක සියලුම වාර්තා පාහේ පැහැදිලි කරයි.
| Symptom | Likely cause |
|---|---|
| Web UI unreachable after the change | Port mapping declared on the joining container instead of the sidecar |
| Both containers show the provider's exit address | The direct service was attached to the sidecar network |
| Internal names stop resolving | Resolver settings live on the host, not in the shared namespace |
| Health check fails but the app works | The check probes localhost, which now means the sidecar |
හතරවන පේළිය යනු මිනිසුන් වැරදි ලෙස යෙදුම් දෝෂයක් ලෙස රෝග විනිශ්චය කරන දෙයයි. කාර්ය භාරයේ තමන්ගේම loopback එකට එරෙහිව ලියා ඇති පරීක්ෂණයක් දැන් ටියුනල් කන්ටේනරය පරීක්ෂා කරයි, එබැවින් එය අසාර්ථක වේ හෝ සම්පූර්ණයෙන්ම වැරදි සේවාවක් වාර්තා කරයි.
එක් සත්කාරක නාමයකට ටියුනලය අවශ්ය වන විට
සමහර විට සම්පූර්ණ ටියුනලයක් වැඩිපුරය: එක් අභ්යන්තර නාමයක් ආයතනික VPN හරහා යා යුතු අතර, දේශීය සොකට් එකක් හෝ සංදර්ශක සම්බන්ධතාවක් ක්රියා කරමින් පවතී. කන්ටේනරය තුළ සම්පූර්ණ ටියුනලයක් එම මාර්ගය සහ සත්කාරකයට යොමු කරන සියල්ල බිඳ දමයි, එබැවින් අවශ්ය උපසර්ගය පමණක් මාර්ගගත කරන්න. සේවාදායකය වටා ඇති බෙදුණු මාර්ගගත කිරීමේ ආවරණය එය කරයි, නම් කළ සත්කාරකය ටියුනලය හරහා යවා අනෙක් සියල්ලට පෙර මාර්ගය නොවෙනස්ව තබයි.
ඔබට එක් සේවාවකට පමණක් ළඟා වීමට අවශ්ය වන අතර කන්ටේනරයේ සියලුම ගමන් වෙනස් කිරීමට උත්සාහ නොකරන විට මෙය තෝරන්න. එය පැති කන්ටේනරයට වඩා වෙනස් මෙවලමක් වන අතර වෙනස් ප්රශ්නයකට පිළිතුරු දෙයි.
සත්යාපනය කරන්න, පසුව නැවත ආරම්භ කිරීමට ඔරොත්තු දෙන ලෙස සකසන්න
සෑම කන්ටේනරයකින්ම එය පැමිණෙන ලෙස පෙනෙන ලිපිනය අසන්න. ටියුනලයේ ඇති එක සැපයුම්කරුගේ ලිපිනය මුද්රණය කළ යුතු අතර සෘජු එක සත්කාරකයේ පිටවීම මුද්රණය කළ යුතුය. සමාන පිළිතුරු යනු සෘජු සේවාව වැරදි නාම අවකාශය උරුම කරගෙන ඇති බව හෝ සත්කාරක මට්ටමේ VPN තවමත් සියල්ල හසු කර ගන්නා බවයි, සහ එම නිවැරදි කිරීම් දෙක වෙනස් ය. සෑම compose සංස්කරණයකට පසුව පරීක්ෂාව නැවත ධාවනය කරන්න, මන්ද පිටපත් කළ එක් සේවා කොටසක් ගැටලුව නැවත ගෙන ඒමට ප්රමාණවත් ය.
දේවල් තුනක් පසුව කැඩීමට නැඹුරු වේ. DNS නාම අවකාශයේ හිමිකරු අනුගමනය කරයි, එබැවින් විසඳනය සහ සෙවුම් වසම් සැකසුම් සත්කාරකයේ නොව පැති කන්ටේනරයේ තිබිය යුතුය. වරාය ඉදිරියට යවන VPN එකක් නැවත සම්බන්ධ වන විට එහි සවන් දෙන වරාය වෙනස් කරයි, එබැවින් සැපයුම්කරුගේ ඉදිරියට යවන ලද වරාය සහ කන්ටේනර් පැත්තේ සවන් දෙන වරාය සේවාදායක වින්යාසයට හෝ වරාය සිතියම්කරණයට නැවත ලිවිය යුතුය, සාමාන්යයෙන් සැපයුම්කරුගේ API කියවන කුඩා යාවත්කාලීන කරන්නෙකු මගින්. සහ localhost එරෙහිව ලියා ඇති ඕනෑම පරීක්ෂණයක් දැන් කාර්ය භාරය වෙනුවට ටියුනල් කන්ටේනරයෙන් අසයි.
රටාව ලියා තබන්න, කුමන කන්ටේනරය නාම අවකාශය හිමිකර ගනී සහ කුමන වරාය එයට අයත් ද යන්නද ඇතුළත් කරමින්. ඊළඟ පුද්ගලයා සේවාවක් එකතු කර, වැරදි කොටස පිටපත් කර, මෙම ලිපියේ පළමු අසාර්ථකතාව නැවත නිපදවනු ඇත.