Пытаюсь вытащить изображения через прокси 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
.
В ответе @ 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
Больше информация в официальных документах.