Как я могу использовать все мои контейнеры для докеров, используя мой прокси?
Я запускаю докер на Debian Jessie, который стоит за корпоративным прокси. Чтобы иметь возможность загружать изображения докеров, мне нужно добавить следующее к моему /etc/defaults/docker
http_proxy="http://localhost:3128/"
Я могу подтвердить, что это работает.
Однако, чтобы иметь возможность доступа к interwebz из моего контейнера, мне нужно запустить все сеансы с --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=...
т.д., Но это неудобно. Я хочу, чтобы он работал для всех пользователей в системе без использования псевдонимов.
(Отказ от ответственности: я спросил об этом на https://superuser.com/posts/890196, но вопрос о docker
для дома на данный момент немного неоднозначен).
Ответы
Ответ 1
См. Прокси-сервер всех контейнеров:
Хост-сервер запускает контейнер с прокси-сервером (в данном случае, squid), который может выполнять прозрачное проксирование. В этом контейнере есть некоторые правила iptables, которые трафик NAT на прокси-сервер - это означает, что контейнер должен запускаться в привилегированном режиме.
Хост-сервер также содержит (и здесь магические) записи таблицы маршрутов ip, которые перенаправляют весь трафик из любого контейнера, но прокси-сервер, предназначенный для порта 80, через контейнер-посредник.
Этот последний бит по существу означает, что для трафика порта 80 маршрут от контейнера до остального мира проходит через контейнер прокси-сервера, что дает ему возможность NAT и прозрачный прокси.
https://github.com/silarsis/docker-proxy