4

我想设置以下场景:

  • 一台带有 Docker 容器的物理机
  • 带有网络的容器中的 traefikbackend
  • 另一个使用主机网络的容器 ( network_mode: host)

Traefik 成功找到了容器,并将其添加了127.0.0.1显然无法从 traefik 容器(不同的网络/网桥)访问的 IP 地址。

码头工人-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

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

我可以以某种方式说服 traefik 为容器使用另一个 IP 吗?

谢谢!

4

1 回答 1

3

如果没有通用的 docker 网络,traefik 将无法路由到您的容器。由于您使用的是主机网络,因此几乎不需要 traefik 代理容器,只需直接访问它即可。或者,如果您只需要通过代理访问它,则将其放在后端网络上。如果你需要在主机上发布一些端口,而另一些通过 traefik 代理,那么将它放在后端网络上并发布你需要发布的端口,而不是直接使用主机网络。

于 2017-08-18T17:52:25.300 回答