能否直接将Traefik与两台Docker主机关联?
当然可以关联多台Docker主机!
Traefik完全支持同时对接多台Docker主机,你只需要在traefik.toml中重复定义多个[providers.docker]配置块,每个块对应一台Docker主机的连接信息即可,不管是用TCP远程连接还是本地Unix套接字都能兼容。
配置示例
场景1:两台远程Docker主机(TCP连接)
如果你的两台Docker主机都是远程机器,直接通过TCP端口对接:
# 第一台Docker主机 [providers.docker] endpoint = "tcp://192.168.1.10:2375" # 替换为第一台主机的IP和Docker TCP端口 exposedByDefault = false # 建议关闭默认暴露,只暴露标注了Traefik标签的容器 network = "traefik-shared" # 指定要监控的Docker网络(需在对应主机提前创建) # 第二台Docker主机 [providers.docker] endpoint = "tcp://192.168.1.11:2375" # 替换为第二台主机的IP和Docker TCP端口 exposedByDefault = false network = "traefik-shared"
场景2:本地+远程Docker主机(混合连接)
如果一台是本地主机(用Unix套接字),另一台是远程主机(用TCP):
# 本地Docker主机(Unix套接字) [providers.docker] endpoint = "unix:///var/run/docker.sock" exposedByDefault = false network = "traefik-local" # 远程Docker主机(TCP连接) [providers.docker] endpoint = "tcp://192.168.1.10:2375" exposedByDefault = false network = "traefik-public"
重要注意事项
- 开启Docker远程TCP访问:远程Docker主机默认关闭TCP端口,需要修改Docker daemon配置(比如
/etc/docker/daemon.json)添加TCP监听,示例:
修改后重启Docker服务生效。{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] } - 安全建议:直接暴露2375端口存在安全风险,建议在生产环境中:
- 仅在内网环境中使用TCP连接
- 配置TLS加密Docker TCP连接
- 或者通过SSH隧道转发Docker套接字(更安全)
- 独立配置参数:每个
[providers.docker]块可以单独设置network、exposedByDefault等参数,根据不同主机的需求灵活调整。
内容的提问来源于stack exchange,提问作者Ross
相关产品推荐
相关产品推荐

