- Docker 教程
- Docker - 首页
- Docker - 概述
- Docker - 在 Linux 上安装
- Docker - 安装
- Docker - Hub
- Docker - 镜像
- Docker - 容器
- Docker - 注册表
- Docker - Compose
- Docker - 使用容器
- Docker - 架构
- Docker - 层
- Docker - 容器与主机
- Docker - 配置
- Docker - 容器与 Shell
- Docker - Dockerfile
- Docker - 构建文件
- Docker - 公共仓库
- Docker - 管理端口
- Docker - Web 服务器
- Docker - 命令
- Docker - 容器链接
- Docker - 数据存储
- Docker - 卷
- Docker - 网络
- Docker - 安全
- Docker - 工具箱
- Docker - 云
- Docker - 构建云
- Docker - 日志
- Docker - 持续集成
- Docker - Kubernetes 架构
- Docker - Kubernetes 的工作原理
- Docker - 生成式 AI
- Docker - 托管
- Docker - 最佳实践
- Docker 设置服务
- Docker - 设置 Node.js
- Docker - 设置 MongoDB
- Docker - 设置 NGINX
- Docker - 设置 ASP.Net
- Docker - 设置 MySQL
- Docker - 设置 Go
- Docker - 设置 Rust
- Docker - 设置 Apache
- Docker - 设置 MariaDB
- Docker - 设置 Jupyter
- Docker - 设置 Portainer
- Docker - 设置 Rstudio
- Docker - 设置 Plex
- Docker 设置 - Flame
- Docker 设置 - PostgreSql
- Docker 设置 - Mosquitto
- Docker 设置 - Grafana
- Docker 设置 - Nextcloud
- Docker 设置 - Pawns
- Docker 设置 - Ubuntu
- Docker 设置 - RabbitMQ
- Docker - 设置 Python
- Docker - 设置 Java
- Docker - 设置 Redis
- Docker - 设置 Alpine
- Docker - 设置 BusyBox
- Docker 设置 - Traefik
- Docker 设置 - WordPress
- Docker 有用资源
- Docker - 快速指南
- Docker - 有用资源
- Docker - 讨论
Docker - 配置 Traefik
Traefik 是一款高级开源的反向代理工具。它也可以用作 HTTP 请求的负载均衡器。由于它可以动态配置且易于管理,因此在类似工具中很受欢迎。它与 Docker 和 Kubernetes 协同工作良好。它提供简单的流量路由方法,自动提供 SSL/TLS 证书,并创建设计精美的仪表板。
Docker 是一种强大的工具,可用于容器化 Traefik 反向代理。它有助于管理和部署此反向代理工具。在本章中,让我们学习如何通过简单易懂的步骤将 Traefik 容器化。
将 Traefik 容器化的先决条件
在深入研究如何在 Docker 中设置 Traefik 之前,以下概念需要复习:
- Docker 基础知识 - 必须了解 Docker 术语,例如容器、镜像和 Docker 文件。
- Postgres 基础知识 - 了解 Traefik 及其负载均衡和反向代理流程的工作原理。
- Docker 安装 - 确保 Docker 正在运行。如果您的系统上尚未安装,您可以参考Docker 官方网站。
- 文本编辑器 - 请记住,在系统中预先打开文本编辑器将在终端中键入复杂命令时使您的生活更轻松。
- CLI(命令行界面) - 您必须能够舒适地处理终端中的 CLI 命令。
配置 Traefik 的步骤
在本节中,让我们逐步了解如何配置 Traefik:
步骤 1:从官方 Hub 拉取 Traefik 镜像
第一步是从 Docker 网站拉取官方 Traefik 镜像。这可以通过打开终端并运行以下命令来完成:
$ docker pull traefik
此命令会将 Traefik 的最新镜像拉取到您的本地环境。
步骤 2:为 Traefik 创建目录
让我们从为 Traefik 设置创建目录开始。
$ mkdir traefik
步骤 3:创建 Traefik 配置文件
现在是时候创建一个 Traefik 配置文件了,它将是一个 YAML 文件:
$ echo > traefik/traefik.yml
traefik.yaml 的内容如下:
api:
dashboard: true # Optional for enabling web dashboard
insecure: true # Optional to enter dashboard without authentication
debug: false # Optional to enable debug logs
entryPoints:
web:
address: ":80"
# Optional if need to use HTTPS instead of HTTP
# http:
# redirections:
# entryPoint:
# to: websecure
# scheme: https
websecure:
address: ":443"
serversTransport:
insecureSkipVerify: true
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
network: proxy # Optional to only use the proxy network of Docker.
certificatesResolvers:
letencrypt:
acme:
email: <youremail>@email.com
storage: /certs/acme.json
# caServer: https://acme-v02.api.letsencrypt.org/directory # prod (default)
caServer: https://acme-staging-v02.api.letsencrypt.org/directory # staging
httpChallenge:
entryPoint: web
步骤 4:为 Traefik 创建 Docker Compose 文件
现在让我们创建 docker-compose.yml 文件。其内容如下所示:
services:
traefik:
image: traefik:v3.0
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
environment:
- TZ=Europe/Paris # Change this as per your timezone
networks:
- frontend
ports:
- 80:80 # HTTP entry points
- 443:443 # HTTPS entry points
- 8080:8080 # Dashboard Wen=b GUI
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # socket for the Docker to watch Traefik
- ./traefik.yml:/traefik.yml:ro # Traefik configuration file
- traefik-certs:/certs # Docker volume to store certificates and acme files
volumes:
traefik-certs:
name: traefik-certs
networks:
frontend:
driver: bridge
步骤 5:创建 acme.json 文件
现在让我们创建 acme.json 文件,该文件用于存储用户权限和 SSL 证书。
{
"email": "your@email.com",
"storage": "acme/",
"ca": "https://acme-v02.api.letsencrypt.org",
"dns": {
"provider": "cloudflare"
}
}
步骤 6:启动容器
现在配置设置已完成,我们准备使用以下命令在 Docker 中运行容器:
$ docker compose -f docker-compose.yml up -d
让我们详细了解一下该命令:
- docker compose - 用于使用 docker-compose.yml 文件运行包含多个容器的 Docker 应用程序。
- -f - 此标志指示文件路径,在我们的例子中,文件名是 traefik 目录中的 docker-compose.yml。
- up - 此命令指示 Docker 启动 docker compose 文件中存在的服务。
- -d - 此标志表示分离模式。
步骤 7:为 Traefik 配置您的服务
让我们更新配置以使用 Traefik 作为反向代理。这可以通过在单独的目录中为 Web 服务创建 docker-compose.yaml 文件来完成,如下所示:
$ mkdir webapp $ cd webapp $ touch docker-compose.yml
services:
webapp:
image: traefik/webapp
networks:
- web
labels:
- "traefik.enable=true"
- "traefik.http.routers.webapp.rule=Host(`yourdomain.com`)"
- "traefik.http.services.webapp.loadbalancer.server.port=80"
- "traefik.http.routers.webapp.entrypoints=web,websecure"
- "traefik.http.routers.webapp.tls=true"
- "traefik.http.routers.webapp.tls.certresolver=http"
networks:
web:
external: true
让我们了解一下上面使用的配置信息:
- traefik.enable=true - 此标签指示 Traefik 正确管理服务。
- traefik.http.routers.webapp.rule - 这指定了用于执行路由的域。
- traefik.http.services.webapp.loadbalancer.server.port - 此标签用于映射容器端口。
- traefik.http.routers.webapp.entrypoints - 此标签提供有关要使用的入口点的信息。
- traefik.http.routers.webapp.tls=true - 此标签启用 HTTPS 并自动处理证书。
您可以使用以下命令运行 Web 应用程序的 docker compose 文件:
$ docker compose -f webapp/docker-compose.yml up -d
步骤 8:检查设置是否正常工作
现在容器已启动并运行。我们可以访问以下 URL:http://<Server IP>:8080。
注意 - 由于您在自己的机器上运行,因此您可以直接用 localhost 或 127.0.0.1 替换 <Server IP>。
上述 URL 的登录页面如下所示:
结论
在本章中,我们讨论了如何使用 Docker 将 Traefik 容器化。Traefik 用于处理网络流量以及管理 TLS/SSL 证书。此设置易于处理,因为它在不同的环境中是可移植且一致的,并且您可以轻松地启动并运行它。此设置可以与其他基于 Docker 的系统无缝集成,并根据需要与他人共享。
使用 Docker 将 Traefik 容器化的常见问题
在本节中,我们收集了一组关于使用 Docker 将 Traefik 容器化的常见问题:
1. 如何在 Docker 中升级 Traefik 版本?
我们可以通过使用 Docker exec 命令连接到容器的 shell 并手动更新版本来升级 Docker 中的 Traefik 版本。我们还可以使用命令“docker pull traefik”拉取 Traefik 的最新镜像。
此外,如果需要,可以更新“docker-compose.yml”文件。如果进行了任何更新,请不要忘记使用命令“docker-compose up -d”重新启动容器。
2. 如何在 Docker 中排查与 Traefik 相关的错误?
要检查 Traefik 相关命令执行的任何阶段是否发生任何错误,您可以使用日志。
要检查与 Traefik 相关的日志,请使用命令“docker logs traefik”。为避免 Docker 中与 Traefik 执行相关的错误,其他服务不应在端口 443 或 80 上运行。