У звичайному контейнері з мережею 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 із локального настільного застосунку має особливо малі шанси запрацювати без змін на віддаленому збирачі чи сервері.

Відокремлюйте проблеми завантаження образів: демон завантажує образ раніше, ніж застосунок може використати наведене середовище.

Схожі статті