首页 › 问答 › Docker › 正文 Docker 如何设置 Traefik 反向代理? 2026-05-08 07:31:55 约 12 分钟读完 34 阅 文章导读 Previous Quiz Next 📋 目录 Ⅰ 配置 Traefik 的步骤 Ⅱ 结论 A A Docker - 设置 Traefik Previous Quiz Next 配置 Traefik 的步骤 在本节中,让我们逐步了解如何配置 Traefik − 步骤 1:从官方仓库拉取 Traefik 镜像 第一步是从 Docker 官网拉取官方 Traefik 镜像。这可以通过打开终端并运行以下命令来完成 − $ docker pull traefik 此命令将把最新的 Traefik 镜像拉取到您的本地环境。 步骤 2:为 Traefik 创建目录 让我们开始为 Traefik 设置创建一个目录。 $ mkdir traefik 步骤 3:创建 Traefik 配置文件 现在是时候创建一个 Traefik 配置文件了,它将是一个 YAML 文件 − $ echo > traefik/traefik.yml traefik.yml 的内容如下 − api: dashboard: true # 可选,用于启用 web 仪表板 insecure: true # 可选,无需认证即可进入仪表板 debug: false # 可选,用于启用调试日志 entryPoints: web: address: ":80" # 如果需要使用 HTTPS 而非 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 # 可选,仅使用 Docker 的 proxy 网络。 certificatesResolvers: letencrypt: acme: email: <youremail>@email.com storage: /certs/acme.json # caServer: https://acme-v02.api.letsencrypt.org/directory # 生产环境(默认) 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 # 根据您的时区更改此项 networks: - frontend ports: - 80:80 # HTTP 入口点 - 443:443 # HTTPS 入口点 - 8080:8080 # 仪表板 Web GUI volumes: - /var/run/docker.sock:/var/run/docker.sock:ro # Docker 监视 Traefik 的 socket - ./traefik.yml:/traefik.yml:ro # Traefik 配置文件 - traefik-certs:/certs # Docker volume 用于存储证书和 acme 文件 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 − 此标志表示 detached 模式。 步骤 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 并自动处理证书。 您可以使用以下命令运行 webapp 的 docker compose 文件 − $ docker compose -f webapp/docker-compose.yml up -d 步骤 8:检查设置是否正常工作 现在容器已启动并运行。我们可以访问以下 URL:http://<Server IP>:8080。 注意 − 由于您在本地机器上运行,可以直接将 <Server IP> 替换为 localhost 或 127.0.0.1。 上述 URL 的登陆页面如下所示 − 结论 在本章中,我们讨论了如何使用 Docker 将 Traefik 容器化。Traefik 用于处理网络流量并管理 TLS/SSL 证书。这种设置易于管理,因为它具有可移植性且在不同环境中保持一致,您可以轻松地启动和运行它。这种设置可以顺利集成到其他基于 Docker 的系统中,并根据需要与他人共享。 关于使用 Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker Docker 上一篇: Kubernetes v1.24 版本移除 DockerShim 后如何配置 containerd 下一篇: VSCode 与 WebStorm 在 Vue 开发中配置区别在哪? ← 返回问答列表 相关问答 Docker 怎么部署到云上?云端运行 Docker 容器的最佳实践? 81 阅 Ubuntu上怎么用Watchtower管理Docker容器镜像? 75 阅 CentOS上Docker怎么安装? 72 阅 Docker镜像怎么加速? 72 阅 Docker 是什么?Docker 基础概念和架构怎么理解? 61 阅 Docker怎么设置Redis? 57 阅 ↑