我想设置以下场景:
backend
network_mode: host
) Traefik成功找到容器并添加IP地址127.0.0.1
,这显然无法从traefik容器(不同的网络/网桥)访问。
搬运工-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
当然,我可以在主机上使用app
访问http://127.0.0.1:8080
,或者从traefik容器访问http://$HOST_IP:8080
。
我可以以某种方式说服traefik使用另一个IP作为容器吗?
谢谢!
答案 0 :(得分:2)
如果没有通用的docker网络,traefik将无法路由到您的容器。由于您使用的是主机网络,因此traefik无需代理容器,只需直接访问即可。或者,如果您只需要通过代理访问它,则将其放在后端网络上。如果您需要在主机上发布某些端口,而其他端口通过traefik进行代理,则将其放在后端网络上并发布您需要发布的端口,而不是直接使用主机网络。