Accedir a un servidor intermediari de l’amfitrió des d’un contenidor bridge de Docker
Trieu una adreça de servidor intermediari accessible des del contenidor i distingiu un punt públic d’un servidor a l’amfitrió Docker.
En un contenidor normal amb xarxa bridge, 127.0.0.1 és l’adreça de bucle local del mateix contenidor. Un servidor intermediari que escolta al localhost del portàtil no escolta automàticament dins de cada contenidor.
Això explica un resultat freqüent: el mateix URL de servidor intermediari funciona al terminal de l’amfitrió però dona connexió refusada dins del contenidor. L’adreça fa referència a un punt de xarxa diferent a cada lloc.
Un servidor intermediari públic es pot utilitzar directament
Si el punt seleccionat d’un servei o de la llista de servidors intermediaris HTTP és realment una IP pública accessible, passeu aquesta adreça a l’aplicació en lloc de convertir-la 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
Substituïu l’adreça de documentació i la imatge. El programa de la imatge ha d’admetre aquestes variables d’entorn; Docker no transforma cada sòcol en una petició a través d’un servidor intermediari pel simple fet que existeixin.
Si el servidor intermediari s’executa a l’amfitrió Docker
Docker Desktop proporciona host.docker.internal per accedir a l’adreça interna de l’amfitrió. En una configuració nativa d’Engine compatible, una assignació d’amfitrió pot proporcionar aquest nom 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
Això canvia la resolució de noms; no és una ordre de reenviament de ports. En Linux natiu, un servei vinculat només al bucle local de l’amfitrió encara pot ser inaccessible per l’adreça bridge de l’amfitrió. L’escoltador, el tallafoc i la ruta del contenidor han de permetre la connexió. Si canvieu l’escoltador, limiteu-lo als clients que necessiten accés en lloc de crear un servidor intermediari obert sense autenticació.
Feu la prova des del mateix lloc que l’aplicació
Un resultat de curl a l’amfitrió només prova la ruta de l’amfitrió. Feu la petició pertinent des de l’entorn del contenidor i comproveu si arriba al punt previst.
«Amfitrió» també significa la màquina que executa Docker Engine. Amb un Engine remot, no és necessàriament el portàtil. Per tant, és especialment poc probable que una IP de bucle local copiada d’una aplicació d’escriptori local funcioni sense canvis en un constructor o servidor remot.
Separeu els problemes de baixada d’imatges: el dimoni baixa la imatge abans que l’aplicació pugui utilitzar l’entorn anterior.