Docker bridge կոնտեյներից հասնել հոսթի պրոքսիին
Ընտրեք կոնտեյներից հասանելի պրոքսիի հասցե և տարբերակեք հանրային վերջնակետը Docker հոսթի վրա աշխատող պրոքսիից։
Սովորական bridge ցանցով կոնտեյների համար 127.0.0.1-ը հենց կոնտեյների loopback հասցեն է։ Նոթբուքի localhost-ում լսող պրոքսին ինքնաբերաբար չի լսում յուրաքանչյուր կոնտեյների ներսում։
Սա բացատրում է տարածված տարբերությունը․ նույն պրոքսիի URL-ը գործում է հոսթի տերմինալում, բայց կոնտեյներում կապը մերժվում է։ Հասցեն յուրաքանչյուր տեղում ցույց է տալիս ցանցի տարբեր վերջնակետ։
Հանրային պրոքսին կարելի է օգտագործել անմիջապես
Եթե ծառայությունից կամ HTTP պրոքսիների ցանկից ընտրված վերջնակետն իսկապես հասանելի հանրային IP է, այդ հասցեն փոխանցեք հավելվածին՝ localhost-ի վերածելու փոխարեն․
docker run --rm \
-e HTTP_PROXY=http://203.0.113.10:8080 \
-e HTTPS_PROXY=http://203.0.113.10:8080 \
your-image
Փոխարինեք փաստաթղթավորման օրինակային հասցեն և image-ը։ Image-ի ներսի ծրագիրը դեռ պետք է աջակցի միջավայրի այդ փոփոխականներին․ Docker-ը ամեն socket չի դարձնում պրոքսիով հարցում միայն փոփոխականների առկայության պատճառով։
Եթե պրոքսին աշխատում է Docker հոսթի վրա
Docker Desktop-ը տրամադրում է host.docker.internal՝ հոսթի ներքին հասցեին հասնելու համար։ Աջակցվող բնիկ Engine կազմաձևում հոսթի համապատասխանեցումը կարող է ապահովել այդ ընդունված անունը․
docker run --rm \
--add-host host.docker.internal=host-gateway \
-e HTTP_PROXY=http://host.docker.internal:8080 \
-e HTTPS_PROXY=http://host.docker.internal:8080 \
your-image
Սա փոխում է անունների լուծումը․ պորտերի վերահասցեավորման հրաման չէ։ Բնիկ Linux-ում միայն հոսթի loopback հասցեին կապված ծառայությունը կարող է դեռ անհասանելի լինել հոսթի bridge հասցեով։ Լսող բաղադրիչը, հրապատը և կոնտեյների երթուղին պետք է թույլ տան այդ կապը։ Լսող բաղադրիչը փոխելիս այն սահմանափակեք հասանելիության կարիք ունեցող հաճախորդներով՝ առանց նույնականացման բաց պրոքսի ստեղծելու փոխարեն։
Փորձարկեք հավելվածի նույն միջավայրից
Հոսթի curl արդյունքը ստուգում է միայն հոսթի երթուղին։ Համապատասխան հարցումն ուղարկեք կոնտեյների միջավայրից և ստուգեք՝ արդյոք այն հասնում է նախատեսված վերջնակետին։
«Հոսթ» նշանակում է նաև Docker Engine-ն աշխատեցնող մեքենան։ Հեռավոր Engine-ի դեպքում դա պարտադիր չէ, որ ձեր նոթբուքը լինի։ Ուստի տեղային աշխատասեղանի հավելվածից պատճենված loopback IP-ի՝ հեռավոր կառուցման մեքենայի կամ սերվերի վրա անփոփոխ աշխատելու հավանականությունը հատկապես փոքր է։
Image-ի ներբեռնման խնդիրներն առանձնացրեք․ դեմոնը ներբեռնում է image-ը, նախքան հավելվածը կկարողանա օգտագործել վերևի միջավայրը։