Я пытаюсь использовать докер за корпоративным брандмауэром.
Я хотел бы заставить докер использовать системный прокси, но эта опция недоступна. Как я могу сделать докер для системного прокси.
Я пытаюсь использовать докер за корпоративным брандмауэром.
Я хотел бы заставить докер использовать системный прокси, но эта опция недоступна. Как я могу сделать докер для системного прокси.
Я написал сообщение в блоге об использовании странного виртуального коммутатора DummyDesperatePoitras в качестве якоря для CNTLM, и это решает некоторые проблемы, о которых я упоминал здесь (помимо прочего, необходимость менять прокси-адрес для Docker каждый раз, когда ваш IP-адрес меняется):
http://mandie.net/2017/12/10/docker-for-windows-behind-a-corporate-web-proxy-tips-and-tricks/
По состоянию на ноябрь 2017 года эта функция все еще не была реализована в Docker для Windows: https://github.com/docker/for-win/issues/589
Лучшее решение, которое я нашел, это CNTLM, но я не в восторге от него, потому что:
1) CNTLM не обновлялся 5 лет
2) Вы должны установить IP-адрес прокси-сервера в графическом интерфейсе Docker, что делает его довольно устойчивым к автоматизации. Графический интерфейс Docker для Windows считывает параметры прокси-сервера с виртуальной машины MobyLinux, а не из реестра Windows, файла конфигурации или переменных среды Windows. Установка HTTP_PROXY и HTTPS_PROXY в Windows абсолютно не влияет на Docker. Я не нашел способа программно установить значение прокси; виртуальная машина MobyLinux не принимает соединения ssh. Если кто-нибудь когда-нибудь найдет способ сделать это из командной строки или сценария, я бы хотел знать.
3) Установка IP-адреса прокси-сервера на 127.0.0.1 не будет работать, потому что это заставит виртуальную машину, на которой Docker на самом деле работает, попробовать свой собственный интерфейс, а не тот, который находится на хост-компьютере с CNTLM. . Я также пробовал IP-адрес интерфейса DockerNAT, 10.0.75.1, но безуспешно.
4) Это означает, что IP-адрес прокси-сервера должен быть текущим IP-адресом вашего активного внешнего сетевого интерфейса. Если вы много перемещаетесь по зданиям, вам нужно проверять это каждый раз, когда вы хотите использовать Docker.
Использование CNTLM автоматизирует работу за прокси. Это позволяет нам везде указывать IP-адрес без каких-либо учетных данных, поэтому безопасность лучше, и всякий раз, когда мы меняем пароль, нам нужно делать это только в одном месте, мы также можем указать URL-адреса, которые не должны передаваться через прокси. Начиная с версии Docker 18.03 доступно специальное DNS-имя: host.docker.internal
. Это позволяет подключаться к хост-машине из контейнеров Docker. Теперь, когда мы настраиваем наш прокси-сервер CNTLM в cntlm.ini, чтобы он прослушивал 0.0.0.0:3128
:
Listen 0.0.0.0:3128
Затем мы можем указать в настройках Docker прокси, используя адрес host.docker.internal:3128
, который будет преобразован в соответствующий и текущий локальный адрес нашей машины.
вы можете настроить две переменные среды http_proxy и https_proxy
http_proxy со значением http://username:password@proxyIp:proxyport
например, в моем случае это было http://venkat_krish:[email protected]:80
вы можете использовать то же самое для https-прокси
Примечание:
Если у вас есть какие-либо специальные символы, кроме _ & . в имени пользователя или пароле вы должны закодировать URL. перейдите по этой ссылке для кодировки URL-адреса https://grox.net/utils/encoding.html
Например, если ваш пароль abc@123, то он будет записан как abc%40123.