¿Cómo puedo hacer que docker-compose extraiga imágenes usando un proxy socks5?

Estoy tratando de extraer imágenes a través de un proxy socks5. He iniciado el proxy socks5 en el puerto 8888 como esto:

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

Sin embargo, cuando corro docker-compose de esta manera, es evidente que no está utilizando la variable de entorno:

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

¿Cómo puedo hacer que Docker extraiga imágenes a través de este proxy?

Parece que esta característica ha sido Recientemente añadido a docker, particularmente en la versión 1.11.0. Aunque no hay suficiente documentación sobre su uso, configurar el ALL_PROXY la variable de entorno debería funcionar, de acuerdo con este comentario.

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

No estoy seguro de docker-compose en este momento.Si su objetivo principal es acelerar el proceso de descarga con socks5, es posible que pueda lograr el propósito extrayendo imágenes manualmente con docker pull antes de finalmente correr docker-compose up.

Método 1

Error:

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

a continuación, ajuste HTTP_PROXY y HTTPS_PROXY de esta manera:

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

resultado:

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

Una foto de antes HTTP_PROXY y después de configurarlos:

enter image description here

Método 2

Si el método 1 no funcionó (uno simple), puede ir con este:

primero

Buscar la ubicación de systemd para la configuración:

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

que aquí para mi en Debian 9 es /lib/systemd/system/docker.service y su directorio es /lib/systemd/system/
Tan cd en /lib/systemd/system/.

segundo

mkdir para docker.service.d o:

mkdir docker.service.d && cd !$

tercero

En docker.service.d directorio crear un .conf tipo de archivo: http-proxy.conf

adelante

Añadir estos en http-proxy.conf file:

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

Tenga en cuenta que localhost:9040 es mío, actualícelo si tiene una IP o PUERTO diferente

sexto

Porque actualizamos la ejecución de configuración:

systemctl daemon-reload

y, a continuación, reinicie el servicio Docker

systemctl restart docker

Ahora está en funcionamiento:

enter image description here

a la respuesta de @nikhilweee de arriba le falta un punto crucial.

El proxy utilizado para la extracción de imágenes se toma del entorno de dockerd. Actualmente no hay forma de cambiarlo sin reiniciar dockerd.

He presentado número de Moby #37335 al respecto, porque quería usar un proxy específico para un solo comando de extracción, pero no en general.

En Docker 17.07 y versiones posteriores, también puede usar json archivo para la configuración del proxy:

       $ 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

Mas información en documentos oficiales.

Y además de usar Socks, Puedes reenviar Socks a HTTP mediante 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

Mas información en documentos oficiales.

docker-compose no extrae imágenes. Le dice a Docker que extraiga las imágenes.