Я пытаюсь получить изображения через прокси socks5. Я запустил прокси socks5 на порту 8888
следующим образом:
ssh -NC -D 8888 parham@***.***.**
Однако, когда я запускаю docker-compose
таким образом, очевидно, что он не использует переменную окружения:
$ ALL_PROXY=socks5://127.0.0.1:8888 docker-compose up
Как заставить Docker извлекать образы через этот прокси?
Похоже, эта функция была недавно добавлена в докер
, особенно в версии 1.11.0
.
Хотя документации по его использованию недостаточно, установка переменной среды ALL_PROXY
должна работать, согласно этому комментарию .
$ export ALL_PROXY=socks5://localhost:port
$ docker pull image
Я не уверен насчет docker- составляют
на данный момент.
Если ваша основная цель - ускорить процесс загрузки с помощью socks5, вы можете достичь этой цели, вручную извлекая образы с помощью docker pull
перед окончательным запуском docker-compose up
.
@ nikhilweee в приведенном выше ответе отсутствует важный момент.
Прокси-сервер, используемый для извлечения изображений, взят из среды dockerd
. В настоящее время нет способа изменить его, не перезапустив dockerd
.
Я подал на него вопрос № 37335 , потому что я хотел использовать конкретный прокси для одной команды pull , но не в целом.
В 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 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
и после их настройки:
Если метод 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
Теперь она запущена и работает: