Acceder a un proxy do host desde un contedor bridge de Docker
Escolla un enderezo de proxy accesible desde o contedor e distinga un punto público dun proxy no host de Docker.
Nun contedor normal con rede bridge, 127.0.0.1 é o enderezo de loopback do propio contedor. Un proxy que escoita no localhost do portátil non escoita automaticamente dentro de cada contedor.
Isto explica unha diferenza habitual: o mesmo URL de proxy funciona no terminal do host, pero dá conexión rexeitada dentro do contedor. O enderezo refírese a un punto de rede distinto en cada lugar.
Un proxy público pode usarse directamente
Se o punto escollido nun servizo ou na lista de proxies HTTP é realmente unha IP pública accesible, pase ese enderezo á aplicación en vez de convertelo en localhost:
docker run --rm \
-e HTTP_PROXY=http://203.0.113.10:8080 \
-e HTTPS_PROXY=http://203.0.113.10:8080 \
your-image
Substitúa o enderezo de documentación e a imaxe. O programa da imaxe aínda debe admitir estas variables de contorno; Docker non converte cada socket nunha petición por proxy só porque existan as variables.
Se o proxy se executa no host de Docker
Docker Desktop ofrece host.docker.internal para acceder ao enderezo interno do host. Nunha configuración nativa de Engine compatible, unha asignación de host pode proporcionar ese nome convencional:
docker run --rm \
--add-host host.docker.internal=host-gateway \
-e HTTP_PROXY=http://host.docker.internal:8080 \
-e HTTPS_PROXY=http://host.docker.internal:8080 \
your-image
Isto cambia a resolución de nomes; non é unha orde de reenvío de portos. En Linux nativo, un servizo ligado só ao loopback do host pode seguir sendo inaccesible polo enderezo bridge do host. O escoitador, a devasa e a ruta do contedor deben permitir a conexión. Se cambia o escoitador, restrínxao aos clientes que necesitan acceso en vez de crear un proxy aberto sen autenticación.
Probe desde o mesmo lugar que a aplicación
Un resultado de curl no host só proba a ruta do host. Faga a petición pertinente desde o contorno do contedor e comprobe se chega ao punto previsto.
«Host» tamén significa a máquina que executa Docker Engine. Cun Engine remoto, non é necesariamente o seu portátil. Por iso é especialmente pouco probable que unha IP de loopback copiada dunha aplicación de escritorio local funcione sen cambios nun construtor ou servidor remoto.
Separe os problemas de descarga de imaxes: o daemon descarga a imaxe antes de que a aplicación poida usar o contorno anterior.