繁体   English   中英

在主机网络中运行的 docker 容器的 traefik 代理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM