从Docker & Docker Compose迁移至containerd与nerdctl后,Traefik反向代理无法访问Apache站点的问题求助
从Docker & Docker Compose迁移至containerd与nerdctl后,Traefik反向代理无法访问Apache站点的问题求助
大家好,我之前用Docker和Docker Compose自动部署容器的配置一直运行正常:一个容器跑Apache,另一个用Traefik做反向代理,访问example.com能正常看到Apache的默认页面,对应的docker-compose配置如下:
version: "3" services: traefik: image: traefik:v3.0 container_name: traefik volumes: - /var/run/docker.sock:/var/run/docker.sock command: - "--api.insecure=true" - "--log.level=DEBUG" - "--providers.docker=true" - "--entrypoints.web.address=:80" - "--entrypoints.web-secure.address=:443" ports: - "80:80" - "443:443" apache: image: httpd:latest container_name: apache labels: - "traefik.enable=true" - "traefik.http.routers.apache.rule=Host(`example.com`)" - "traefik.http.routers.apache.entrypoints=web" - "traefik.http.services.apache.loadbalancer.server.port=80"
现在我想迁移到containerd环境,用nerdctl来部署(它支持读取yaml文件,用法和docker-compose类似),但迁移后却无法正常访问站点。我修改后的配置如下:
version: "3" services: traefik: image: traefik:v3.0 container_name: traefik volumes: - /var/run/containerd/containerd.sock:/var/run/containerd/containerd.sock command: - "--api.insecure=true" - "--log.level=DEBUG" - "--providers.docker=false" - "--entrypoints.web.address=:80" - "--entrypoints.web-secure.address=:443" - "--providers.containerd.endpoint=unix:///var/run/containerd/containerd.sock" ports: - "80:80" - "443:443" apache: image: httpd:latest container_name: apache labels: - "traefik.enable=true" - "traefik.http.routers.apache.rule=Host(`example.com`)" - "traefik.http.routers.apache.entrypoints=web" - "traefik.http.services.apache.loadbalancer.server.port=80"
目前我排查到的情况:
- 所有容器都正常启动,没有启动失败的情况
- Traefik和Apache的日志里都没有报错信息
- 容器之间可以互相ping通,说明网络连通正常,而且它们处于同一个子网
- 但访问
example.com时,页面始终提示“无法访问此页面”
我还尝试过调整Traefik的配置:把卷挂载改成/run/containerd/containerd.sock:/run/containerd/containerd.sock,同时在命令里加上--providers.containerd=true,但问题依然存在。
想问下各位大佬,我是不是漏掉了什么关键配置?有没有相关的经验或者排查方向可以指导一下?
备注:内容来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

