Как я могу создать вытягивающие образы в 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 извлекать образы через этот прокси?

5
задан 28 November 2015 в 20:34
4 ответа

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

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

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

14
ответ дан 3 December 2019 в 00:58

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

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

Я подал на него вопрос № 37335 , потому что я хотел использовать конкретный прокси для одной команды pull , но не в целом.

1
ответ дан 3 December 2019 в 00:58

В 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

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

0
ответ дан 31 July 2020 в 12:58

Метод 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/web
b380bbd43752: Downloading [===================>                               ]  10.36MB/27.14MB
0312863d422f: Download complete
503063a74a58: Downloading [============================>                      ]  7.998MB/14.15MB
392a862abfe3: Download complete
41a073b705ed: Download complete
a8f4844f6941: Download complete
f500f1f2f4ae: 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 -proxy.conf

далее

Добавьте эти в http -proxy.conf файл:

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

ВНИМАНИЕ, что localhost:9040мой, обновите его, если у вас другой IP или ПОРТ

шестой

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

systemctl daemon-reload

, а затем перезапустите службу докеров

systemctl restart docker

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

enter image description here

0
ответ дан 31 October 2021 в 07:36

Теги

Похожие вопросы