Как я могу заставить docker-compose извлекать изображения с помощью прокси-сервера socks5?

Я пытаюсь извлекать изображения через прокси-сервер socks5. Я запустил прокси-сервер socks5 на порту 8888 подобный этому:

ssh -NC -D 8888 parham@***.***.**

Однако, когда я запускаю docker-compose таким образом, очевидно, что он не использует переменную окружения:

$ ALL_PROXY=socks5://127.0.0.1:8888 docker-compose up

Как я могу заставить Docker извлекать изображения через этот прокси-сервер?

Похоже, эта функция была недавно добавлено к docker, особенно в версии 1.11.0. Хотя документации о его использовании недостаточно, настройка ALL_PROXY переменная среды должна работать в соответствии с этот комментарий.

$ export ALL_PROXY=socks5://localhost:port $ docker pull image

Я не уверен насчет docker-compose в данный момент.Если ваша основная цель - ускорить процесс загрузки с помощью socks5, вы можете достичь этой цели, вручную извлекая изображения с помощью docker pull прежде чем, наконец, бежать docker-compose up.

Способ 1

Ошибка:

docker-compose up Pulling web (jitsi/web:stable-6433)...ERROR: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit

затем установка HTTP_PROXY и HTTPS_PROXY таким образом:

export HTTP_PROXY=socks5://localhost:9040/export HTTPS_PROXY=socks5://localhost:9040/

результат:

docker-compose up Pulling web (jitsi/web:stable-6433)...stable-6433: Pulling from jitsi/webb380bbd43752: Downloading [===================>                               ]  10.36MB/27.14MB0312863d422f: Download complete503063a74a58: Downloading [============================>                      ]  7.998MB/14.15MB392a862abfe3: Download complete41a073b705ed: Download completea8f4844f6941: Download completef500f1f2f4ae: Downloading [============>                                      ]  11.69MB/47.56MB

Снимок до того, как HTTP_PROXY и после их настройки:

enter image description here

Способ 2

Если метод 1 не сработал (простой), вы можете использовать этот:

первый

Найдите расположение systemd для настройки:

systemctl status docker | grep docker.service\;   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)

который здесь для моего на Debian 9 является /lib/systemd/system/docker.service и его каталог находится /lib/systemd/system/
Так cd в /lib/systemd/system/.

второй

mkdir для docker.service.d или:

mkdir docker.service.d && cd !$

третий

В docker.service.d каталог создает .conf файл, подобный: http-прокси.conf

вперед

Добавьте их в http-прокси.conf файл:

[Service]Environment="HTTP_PROXY=socks5://localhost:9040"Environment="HTTPS_PROXY=socks5://localhost:9040"

Обратите внимание, что localhost:9040 это мой, обновите его, если у вас другой IP или ПОРТ

шестой

Потому что мы обновляем конфигурацию запуска:

systemctl daemon-reload

а затем перезапустите службу docker

systemctl restart docker

Теперь он запущен и работает:

enter image description here

В приведенном выше ответе @nikhilweee отсутствует важный момент.

Прокси-сервер, используемый для извлечения изображений, берется из среды dockerd. В настоящее время нет способа изменить его без перезапуска dockerd.

Я подал заявление моби выпуск #37335 об этом, потому что я хотел использовать конкретный прокси-сервер для одной команды извлечения, но не в целом.

В Docker 17.07 и выше вы также можете использовать json файл для настройки прокси-сервера:

       $ vim ~/.docker/config.json          {            "proxies":              {                "default":                 {                  "httpProxy": "http://127.0.0.1:8118",                  "httpsProxy": "http://127.0.0.1:8118"                  }              }          }        $  docker pull ubuntu:18.04        $  docker-compose build

Больше информация в официальных документах.

И в дополнение к использованию Socks, Вы можете переслать Socks к HTTP с помощью privoxy:

    $ sudo apt install -y privoxy    $ sudo vim /etc/privoxy/config                  forward-socks5 / 127.0.0.1:9090  .              forward-socks4a / 127.0.0.1:9090 .              forward-socks5t             /     127.0.0.1:9090 .              forward         192.168.*.*/     .              forward            10.*.*.*/     .              forward           127.*.*.*/     .              forward           localhost/     .        $ sudo service privoxy restart

Больше информация в официальных документах.

docker-compose не извлекает изображения. Он сообщает Docker извлекать изображения.