Docker部署Traefik的正确姿势,零基础也能上手

Traefik 是一个现代化的反向代理和负载均衡工具,特别适合在 Docker 环境下自动发现服务并动态配置路由。
对新手来说,用 Docker 部署 Traefik 是成本最低、最容易上手的方式
本文按照实际操作顺序展开,每一步都给出具体命令和配置文件,你只需要复制粘贴并根据自己的环境稍作修改即可跑通。

你需要准备什么

  • 一台 Linux 服务器(CentOS 7+ 或 Ubuntu 18.04+,本文以 Ubuntu 22.04 为例)。
  • 已安装 Docker 和 Docker Compose。如果还没装,先执行以下命令快速安装:
  curl -fsSL https://get.docker.com | bash
  sudo apt-get install docker-compose-plugin -y
  • 放开服务器的 80、443 和 8080 端口(如果使用云平台请在安全组放行;本地防火墙可用 ufw allow 80,443,8080/tcp)。
  • 一个域名(可选) 用于配置 HTTPS 和更正规的访问,没有域名也可以先用 IP 测试。

一步步部署 Traefik(基于 Docker Compose)

1. 创建项目目录与配置文件

mkdir ~/traefik && cd ~/traefik
touch docker-compose.yml traefik.yml dynamic.yml

docker-compose.yml 定义 Traefik 容器服务,traefik.yml 是静态配置,dynamic.yml 是动态配置(路由、中间件等)。

2. 编写静态配置 traefik.yml

api:
  dashboard: true
  insecure: true   # 仅开发环境使用,生产环境应改为 false 并配置安全认证

entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"
  traefik:
    address: ":8080"

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false
  file:
    filename: /etc/traefik/dynamic.yml

providers.docker 允许 Traefik 自动监听容器标签来生成路由;file 提供者让我们可以手动编写额外路由规则。

3. 编写 docker-compose.yml

version: "3.8"
services:
  traefik:
    image: traefik:v3.0
    container_name: traefik
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik.yml:/etc/traefik/traefik.yml:ro
      - ./dynamic.yml:/etc/traefik/dynamic.yml:ro
    networks:
      - web

networks:
  web:
    external: false

注意:将 docker socket 挂载进去,Traefik 才能与 Docker daemon 通信。

4. 启动容器

docker compose up -d

等待几秒后,检查运行状态:

docker compose ps

如果状态正常,你已经成功用 Docker 部署了 Traefik!

验证部署并配置一个简单路由

访问 Dashboard

浏览器输入 http://你的服务器IP:8080/dashboard/(末尾斜杠不要漏),如果看到 Traefik 的 Web 管理界面,说明基础部署成功。

配置一个 HTTP 路由(通过 dynamic.yml)

dynamic.yml 中加入以下内容,创建一个指向 whoami 服务的路由:

http:
  routers:
    whoami:
      rule: "Host(`whoami.local`)"
      service: whoami-svc
      entryPoints:
        - web
  services:
    whoami-svc:
      loadBalancer:
        servers:
          - url: "http://host.docker.internal:8088"

(这里假设你在另一台机器或同一机器上已运行 whoami 服务。实际使用你可以改成自己的上游服务地址。)
修改后无需重启,Traefik 会自动重新加载配置。

常见问题与避坑说明

  • Dashboard 无法访问:确认端口 8080 已放行,并且启动时没有用 --api.insecure=false(我们当前配置是 true)。生产环境记得加上安全认证。
  • Docker 自动发现不生效:检查 exposedByDefault: false 是否导致容器被忽略。如果你想让某个容器被自动发现,需要在容器标签中设置 traefik.enable=true
  • 权限问题:挂载 /var/run/docker.sock 后容器内进程有 root 权限,建议在非生产环境或限制容器权限。
  • 文件配置不加载:确保 traefik.ymldynamic.yml 的路径挂载正确,并且 YAML 语法无缩进错误。可用 docker compose logs traefik 查看错误日志。
  • 端口被占用:如果 80 或 443 已被其他 Web 服务占用,先停掉它们再启动 Traefik,或者修改 entryPoints 端口。

如果你正在处理 Docker 部署 Traefik,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
跟着操作下来,你已经拥有一个可动态扩缩的反向代理系统了。

分享到:
上一篇
Linux服务器用户会话管理:查看登录用户与强制踢出挂死会话
下一篇
服务器云服务器安全设置:零基础也能搞定的云服务器安全设置指南
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意