Docker 后端

Træfɪk可以使用Docker作为后端配置:

  1. ################################################################
  2. # Docker 后端配置
  3. ################################################################
  4. # 启用Docker后端配置
  5. #
  6. # 可选
  7. #
  8. [docker]
  9. # Docker服务器端口。可以是一个TCP或者一个unix socket端口。
  10. #
  11. # 必需
  12. #
  13. endpoint = "unix:///var/run/docker.sock"
  14. # 使用默认域名。
  15. # 可以通过为容器设置"traefik.domain" label来覆盖。
  16. #
  17. # 必需
  18. #
  19. domain = "docker.localhost"
  20. # 启用监控docker变化
  21. #
  22. # 可选
  23. #
  24. watch = true
  25. # 覆盖默认配置文件模版。为高级用户:)
  26. #
  27. # 可选
  28. #
  29. # filename = "docker.tmpl"
  30. # 默认将容器暴露给traefik
  31. # 如果设置为false,没有设置`traefik.enable=true`的容器将被忽略
  32. #
  33. # 可选
  34. # 默认: true
  35. #
  36. exposedbydefault = true
  37. # 使用绑定端口的IP地址而不是使用内部网络。为了特殊使用场景:)
  38. #
  39. # 可选
  40. # 默认: false
  41. #
  42. usebindportip = true
  43. # 使用 Swarm Mode 服务作为数据提供者
  44. #
  45. # 可选
  46. # 默认: false
  47. #
  48. swarmmode = false
  49. # 启用docker TLS连接
  50. #
  51. # [docker.tls]
  52. # ca = "/etc/ssl/ca.crt"
  53. # cert = "/etc/ssl/docker.crt"
  54. # key = "/etc/ssl/docker.key"
  55. # insecureskipverify = true

可以给容器用来覆盖默认表现方式的Label:

  • traefik.backend=foo: 将容器指向 foo 后端
  • traefik.backend.maxconn.amount=10: 设置后端连接的最大数量。必需与以下label配合使用才能生效。
  • traefik.backend.maxconn.extractorfunc=client.ip: 设置后端连接最大数量所依赖的维度。必需与上面的label配合使用才能生效。
  • traefik.backend.loadbalancer.method=drr: 覆盖默认的 wrr 负载均衡算法逻辑
  • traefik.backend.loadbalancer.sticky=true: 启用后端粘滞session
  • traefik.backend.loadbalancer.swarm=true: 使用 Swarm 内置的负载均衡器(只有使用Swarm Mode时生效)。
  • traefik.backend.circuitbreaker.expression=NetworkErrorRatio() > 0.5: 为后端创建一个 断路器
  • traefik.port=80: 注册使用这个端口。当容器暴露出多个端口时非常有效。
  • traefik.protocol=https: 覆盖默认的 http 协议
  • traefik.weight=10: 为容器指定权重
  • traefik.enable=false: 为Træfɪk禁用这个容器
  • traefik.frontend.rule=Host:test.traefik.io: 覆盖默认前端规则(默认:Host:{containerName}.{domain})。
  • traefik.frontend.passHostHeader=true: 将客户端header中的 Host 转发到后端。
  • traefik.frontend.priority=10: 覆盖默认的前端优先级
  • traefik.frontend.entryPoints=http,https: 将这个前端指向入口点 httphttps。 覆盖 defaultEntryPoints
  • traefik.docker.network: 设置连接到这个容器的docker网络。 如果容易被链接到多个网络,一定要设置合适的网络名称(你可以使用docker检查)否则它将自动选择一个(取决于docker如何返回它们)。例如,当通过compose文件部署docker stack ,compose定义的网络名将以 stack 为前缀。
    NB: 当运行在一个容器中时,Træfɪk需要网络访问权限以运行 docker network connect <network> <traefik-container>