Docker 后端
Træfɪk可以使用Docker作为后端配置:
################################################################
# Docker 后端配置
################################################################
# 启用Docker后端配置
#
# 可选
#
[docker]
# Docker服务器端口。可以是一个TCP或者一个unix socket端口。
#
# 必需
#
endpoint = "unix:///var/run/docker.sock"
# 使用默认域名。
# 可以通过为容器设置"traefik.domain" label来覆盖。
#
# 必需
#
domain = "docker.localhost"
# 启用监控docker变化
#
# 可选
#
watch = true
# 覆盖默认配置文件模版。为高级用户:)
#
# 可选
#
# filename = "docker.tmpl"
# 默认将容器暴露给traefik
# 如果设置为false,没有设置`traefik.enable=true`的容器将被忽略
#
# 可选
# 默认: true
#
exposedbydefault = true
# 使用绑定端口的IP地址而不是使用内部网络。为了特殊使用场景:)
#
# 可选
# 默认: false
#
usebindportip = true
# 使用 Swarm Mode 服务作为数据提供者
#
# 可选
# 默认: false
#
swarmmode = false
# 启用docker TLS连接
#
# [docker.tls]
# ca = "/etc/ssl/ca.crt"
# cert = "/etc/ssl/docker.crt"
# key = "/etc/ssl/docker.key"
# 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
: 启用后端粘滞sessiontraefik.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
: 将这个前端指向入口点http
与https
。 覆盖defaultEntryPoints
。traefik.docker.network
: 设置连接到这个容器的docker网络。 如果容易被链接到多个网络,一定要设置合适的网络名称(你可以使用docker检查)否则它将自动选择一个(取决于docker如何返回它们)。例如,当通过compose文件部署docker stack
,compose定义的网络名将以stack
为前缀。
NB: 当运行在一个容器中时,Træfɪk需要网络访问权限以运行docker network connect <network> <traefik-container>