Как я могу использовать все мои контейнеры для докеров, используя мой прокси?

Я запускаю докер на 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