Skip to content

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.endpointDocker 守护进程端点。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.httpClientTimeoutHTTP 客户端超时。0
providers.swarm.tls.caCA 证书路径。""
providers.swarm.tls.cert客户端证书路径。""
providers.swarm.tls.key客户端私钥路径。""
providers.swarm.tls.insecureSkipVerify跳过 TLS 验证。false
providers.providersThrottleDurationProvider 事件节流时长。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 的商业支持。

基于 MIT 协议发布