我正在traefik作为docker容器中的代理运行
我在Windows 10中使用DockerToolBox
traefik代理能够识别在127.0.0.1中运行的服务应用程序,但是该服务应用程序实际上在docker host = 192.168.99.x ip
version: '3'
services:
reverse_proxy:
image: traefik
command: --api --docker
ports:
- "81:80"
- "8081:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- backend
whoami:
image: containous/whoami
labels:
- "traefik.frontend.rule=Host:whoami.default"
- "traefik.enable=true"
- "traefik.port=80"
network_mode: host
networks:
backend:
driver: bridge
在Traefik信息中心http://192.168.99.100:8081中
它显示http://127.0.0.1:80代表whoami服务
而不是http://192.168.99.100:80
任何帮助将不胜感激。
我希望 network_mode:主机选择 192.168.99.100 而不是 127.0.0.1
答案 0 :(得分:0)
正如traefik official documentation所说,在解析服务IP时,首先是
<块引用>尝试查找 host.docker.internal
第二个
<块引用>如果查找不成功,回退到127.0.0.1
这意味着我们可以在traefik容器中添加一个主机,使用--add-host {docker0_IP}
(它是网桥的IP,你可以很容易地使用docker inspect {NAME_OF_TRAEFIK}
找到网关的IP(对我来说,它是{{ 1}}). 如果您使用 docker-compose,您可以使用以下行添加到您的 traefik 定义中:
172.18.0.1
另外,我发现使用ip my eth0 IP是可以的,这意味着你的局域网的IP(对我来说,它是extra_hosts:
- host.docker.internal:{docker0_IP}
)。
然后,重新创建 traefik,一切都像雏菊一样工作。