![](/img/trans.png)
[英]Traefik:v2 Windows Container Failed to retrieve information of the docker client and server host
[英]traefik proxy for docker container running in host network
我在 docker 容器中运行 traefik 作为代理
我在 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
它为 whoami 服务显示http://127.0.0.1:80
而不是http://192.168.99.100:80
任何帮助,将不胜感激。
我想要network_mode: host选择192.168.99.100而不是127.0.0.1
正如traefik官方文档所说,在解析服务IP时,首先它
尝试查找
host.docker.internal
第二个
如果查找不成功,则回退到
127.0.0.1
这意味着我们可以在 traefik 容器中添加一个主机,使用--add-host {docker0_IP}
(它是网桥的 IP,您可以轻松地使用docker inspect {NAME_OF_TRAEFIK}
并找到网关的 IP(对我来说,它是172.18.0.1
). 如果您使用 docker-compose, 您可以使用以下行添加到您的 traefik 定义中:
extra_hosts:
- host.docker.internal:{docker0_IP}
另外,我发现可以使用 IP my eth0 IP,这意味着您的 LAN 的 IP(对我来说,它是192.168.0.20
)。
然后,重新创建 traefik,一切都像雏菊一样工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.