Traefik作为Docker容器与主机networking的代理

我想设置以下场景:

  • 一台具有Docker容器的物理机器
  • 与networkingbackend容器中的traefik
  • 另一个使用主机networking的容器( network_mode: host

Traefik成功find了容器,并添加了IP地址127.0.0.1 ,这显然不能从traefik容器(不同的networking/网桥)访问。

泊坞窗,compose.yml:

 version: '3' services: traefik: image: traefik ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock - ./traefik.toml:/etc/traefik/traefik.toml networks: - backend app: image: my_app labels: - "traefik.enable=true" - "traefik.frontend.rule=Host:myapp.example" - "traefik.port=8080" network_mode: host networks: backend: driver: bridge 

app容器被添加

 Server URL Weight server-app http://127.0.0.1:8080 0 Load Balancer: wrr 

当然,我可以在主机上使用http://127.0.0.1:8080访问app ,或者从traefik容器使用http://$HOST_IP:8080访问app

我能以某种方式说服traefik使用另一个IP的容器?

谢谢!

没有一个通用的dockernetworking,traefik将无法路由到您的容器。 由于您使用的是主机networking,因此几乎不需要traefik代理容器,只需直接访问。 或者,如果您只需要通过代理访问它,然后将其放置在后端networking上。 如果您需要在主机上发布一些端口,并通过traefik代理其他端口,则将其放置在后端networking上,并发布需要发布的端口,而不是直接使用主机networking。