У звычайным кантэйнеры з сеткай 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

Замяніце дакументацыйны адрас і вобраз. Праграма ў вобразе павінна падтрымліваць гэтыя зменныя асяроддзя; Docker не ператварае кожны сокет у проксі-запыт толькі праз іх наяўнасць.

Калі проксі працуе на хосце 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 з лакальнай настольнай праграмы мае асабліва малыя шанцы запрацаваць без змен на аддаленым зборшчыку ці серверы.

Аддзяляйце праблемы спампоўвання вобразаў: дэман спампоўвае вобраз раней, чым праграма можа выкарыстаць паказанае асяроддзе.

Падобныя артыкулы