Як я можу дозволити всім контейнерам докера використовувати мій проксі?


18

Я беру докер на Debian Jessie, який стоїть за корпоративним проксі. Щоб мати можливість завантажувати зображення докера, мені потрібно додати наступне до свого/etc/defaults/docker

http_proxy="http://localhost:3128/"

Я можу підтвердити, що це працює.

Однак для того, щоб мати доступ до інтервебзу зсередини мого контейнера, мені потрібно почати всі сеанси, --net hostа потім встановити ці ENV змінні:

export http_proxy=http://localhost:3128/
export https_proxy=https://localhost:3128/
export ftp_proxy=${http_proxy}

В ідеалі я хотів би, щоб контейнер не потребував хост-мережі і не знав про проксі (тобто всі вихідні дзвінки на порт 20, 80, 443 в контейнері проходять через проксі-порт хоста). Це можливо?

Якщо цього немає, чи можливо встановити сайт, який забезпечить встановлення цих змінних env локально, але ніколи не експортується як частина зображення?

ОНОВЛЕННЯ : Я знаю, що можу передавати ці речі за допомогою --env http_proxy=...тощо, але це незграбно. Я хочу, щоб він працював для всіх користувачів системи, не використовуючи псевдоніми.

Відповіді:


5

Дивіться цю відповідь ТАК :

Хост-сервер запускає контейнер з проксі-сервером (в цьому випадку кальмар), який може робити прозоре проксі. Цей контейнер має деякі правила iptables, які NAT трафікують на проксі-сервер - це означає, що контейнер повинен працювати в привілейованому режимі.

Хост-сервер також містить (і ось магічні) записи таблиці таблиці ip, які перенаправляють увесь трафік з будь-якого контейнера, крім проксі, призначеного для порту 80, через контейнер проксі.

Останній біт по суті означає, що для порту 80 трафік шлях від контейнера до решти світу проходить через проксі-контейнер - даючи йому можливість NAT і прозорий проксі.

https://github.com/silarsis/docker-proxy


Це не спрацює для "https".
припинення
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.