¿Por qué un proxy enlazado localmente no funciona?
El problema
Si está ejecutando un proxy enlazado localmente , por ejemplo, escuchando 127.0.0.1:8989
, NO FUNCIONARÁ en Docker para Mac . De la documentación de Docker :
Quiero conectarme desde un contenedor a un servicio en el host
La Mac tiene una dirección IP cambiante (o ninguna si no tiene acceso a la red). Nuestra recomendación actual es adjuntar una IP no utilizada a la lo0
interfaz en la Mac; por ejemplo: sudo ifconfig lo0 alias 10.200.10.1/24
y asegúrese de que su servicio esté escuchando en esta dirección o 0.0.0.0
(es decir, no 127.0.0.1
). Entonces los contenedores pueden conectarse a esta dirección.
Lo mismo es para el lado del servidor Docker. (Para comprender el lado del servidor y el lado del cliente de Docker, intente ejecutar docker version
). Y el lado del servidor se ejecuta en una capa de virtualización que tiene la suya localhost
. Por lo tanto, no se conectará al servidor proxy en el localhost
sistema operativo host.
La solución
Entonces, si está usando un proxy vinculado localmente como yo, básicamente tendría que hacer lo siguiente para que funcione con Docker para Mac:
Haga que su servidor proxy escuche en 0.0.0.0
lugar de 127.0.0.1
. Precaución: necesitará una configuración de firewall adecuada para evitar el acceso malicioso.
Agregue un alias de bucle invertido a la lo0
interfaz, por ejemplo 10.200.10.1/24
:
sudo ifconfig lo0 alias 10.200.10.1/24
Establecer HTTP y / o HTTPS proxy para 10.200.10.1:8989
de Preferencias de menú de la bandeja acoplable (Suponga que el servidor proxy está escuchando en el puerto 8989
).
Después de eso, pruebe la configuración del proxy ejecutando un comando en un nuevo contenedor desde una imagen que no se descarga:
$ docker rmi -f hello-world
...
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c04b14da8d14: Pull complete
Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
Status: Downloaded newer image for hello-world:latest
...
Aviso: el alias de bucle invertido establecido porifconfig
no se conserva después de un reinicio. Hacerlo persistente es otro tema. Consulte esta publicación de blog en japonés (el Traductor de Google puede ayudar).
Acquire::socks::proxy
significa establecer el proxy para todas las URL que comienzan con unsocks
esquema. Como susources.list
no tiene ningunasocks://
URL, esa línea se ignora por completo.docker-compose
?