Traefik Docker Swarm Provider 文档
Traefik 与 Docker Swarm
该 Provider 与 Docker Swarm Mode 配合使用。
配置示例
YAML 格式:
yaml
providers:
swarm: {}TOML 格式:
toml
[providers.swarm]CLI 格式:
bash
--providers.swarm=true在 Swarm 模式下(在 Docker Compose 文件中),为单个 服务(service)(而不是容器)附加标签。当只有一个服务,且路由器没有指定服务时,会自动将该服务分配给路由器。
Labels 格式
yaml
services:
my-container:
deploy:
labels:
- traefik.http.routers.my-container.rule=Host(`example.com`)
- traefik.http.services.my-container-service.loadbalancer.server.port=8080配置选项
| 选项 | 描述 | 默认值 |
|---|---|---|
providers.swarm.endpoint | Docker 守护进程端点。 | unix:///var/run/docker.sock |
providers.swarm.username | 认证用户名。 | "" |
providers.swarm.password | 认证密码。 | "" |
providers.swarm.useBindPortIP | 使用绑定端口的 IP 地址作为后端服务器 URL。 | false |
providers.swarm.network | 用于连接服务的 Docker 网络。 | - |
providers.swarm.defaultRule | 容器没有显式路由规则时使用的默认规则。 | Host({{ normalize .Name }}) |
providers.swarm.exposedByDefault | 默认为所有容器暴露。 | true |
providers.swarm.constraints | 过滤匹配容器(如 Label(...))。 | "" |
providers.swarm.watch | 监听 Docker 事件。 | true |
providers.swarm.httpClientTimeout | HTTP 客户端超时。 | 0 |
providers.swarm.tls.ca | CA 证书路径。 | "" |
providers.swarm.tls.cert | 客户端证书路径。 | "" |
providers.swarm.tls.key | 客户端私钥路径。 | "" |
providers.swarm.tls.insecureSkipVerify | 跳过 TLS 验证。 | false |
providers.providersThrottleDuration | Provider 事件节流时长。 | 2s |
Swarm 与 Docker 的区别
- Docker Provider:用于单机 Docker 或 Docker Compose
- Swarm Provider:用于 Docker Swarm 多节点集群
- Swarm 中的服务定义在
deploy部分,而不是在容器级别 - Swarm 中的服务可能有多个副本(tasks)
适用场景
- 多节点 Docker 集群:使用 Docker Swarm 部署
- 服务发现:自动发现 Swarm 服务
- 多副本服务:自动处理多个副本的负载均衡
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。