У обичном контејнеру са 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 копиран из локалне десктоп апликације радити неизмењен на удаљеном builder-у или серверу.

Одвојите проблеме преузимања слике: демон преузима слику пре него што апликација може да користи наведено окружење.

Повезани чланци