Docker 与 Traefik 快速开始
Docker 与 Traefik 入门
Docker 是 Traefik 的一等公民,原生支持 Docker 容器和服务。
无论你使用 Docker Compose 还是直接运行容器,Traefik 都能为管理你的 Docker 流量提供无缝衔接的体验。
本指南将展示如何:
- 使用 Docker 安装 Traefik
- 暴露 Traefik 仪表盘
- 部署一个示例应用
- 配置基础路由
前置条件
- Docker
- Docker Compose(可选)
安装 Traefik
使用 Docker Compose
创建一个 Docker Compose 文件。该配置:
- 暴露 80 和 8080 端口
- 启用 Docker Provider
- 配置仪表盘基础设置 —— 8080 端口提供仪表盘,因为我们启用了
--api.insecure=true(仅限开发使用) - 挂载 Docker socket 用于容器发现
yaml
# docker-compose.yml
services:
traefik:
image: traefik:v3.7
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock启动 Traefik:
bash
docker-compose up -d使用 Docker CLI
你也可以直接使用 Docker 运行 Traefik。该命令:
- 暴露 80 与 8080 端口分别用于 Web 流量和仪表盘访问
- 挂载配置文件和 Docker socket
- 使用与 Docker Compose 示例相同的配置
创建配置文件:
yaml
# traefik.yml
api:
insecure: true
entryPoints:
web:
address: ":80"
providers:
docker: {}启动 Traefik:
bash
docker run -d \
-p 80:80 \
-p 8080:8080 \
-v $PWD/traefik.yml:/etc/traefik/traefik.yml \
-v /var/run/docker.sock:/var/run/docker.sock \
traefik:v3.7暴露仪表盘
因为我们显式启用了非安全模式,仪表盘 在 8080 端口上无需认证即可访问。不要在生产环境中启用此标志。
你可以通过以下地址访问仪表盘:
http://localhost:8080/dashboard/
部署示例应用
创建一个 whoami 服务:
yaml
# whoami.yml
services:
whoami:
image: traefik/whoami
labels:
- "traefik.http.routers.whoami.rule=Host(`whoami.localhost`)"应用配置:
bash
docker-compose -f whoami.yml up -d测试你的设置
你可以使用以下 curl 命令验证应用是否已正确暴露:
bash
curl http://whoami.localhost返回内容示例:
Hostname: 068c0a29a8b7
IP: 127.0.0.1
IP: ::1
IP: 192.168.147.3
RemoteAddr: 192.168.147.2:56006
GET / HTTP/1.1
Host: whoami.localhost
User-Agent: curl/8.7.1
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 192.168.147.1
X-Forwarded-Host: whoami.localhost
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: 9232cdd4fd6c
X-Real-Ip: 192.168.147.1你也可以在浏览器中打开 http://whoami.localhost 来测试应用:
如果你导航到 Traefik 仪表盘的 HTTP Routers 部分,你可以看到 whoami.localhost 路由由 Traefik Docker Provider 管理:
就这样!你已经成功部署了 Traefik 并在 Docker 中配置好了路由。
下一步
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。