Доступ до проксі хоста з 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
Замініть документаційну адресу й образ. Програма в образі має підтримувати ці змінні середовища; 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 із локального настільного застосунку має особливо малі шанси запрацювати без змін на віддаленому збирачі чи сервері.
Відокремлюйте проблеми завантаження образів: демон завантажує образ раніше, ніж застосунок може використати наведене середовище.