Traefik 2.2 无法通过 TCP 连接到 Docker Swarm API
Traefik 2.2 cannot connect to Docker Swarm API over TCP
运行 Docker 18.09.7ce with Docker API v1.39 on Ubuntu 18.04 LTS.
我正在尝试将 Traefik 2.2 设置为某些 swarm 服务的反向代理,但由于某些原因,Traefik 无法通过 Traefik 文档中给出的 TCP 端口连接到 Docker 守护进程。这三个错误消息不断重复。
level=debug msg="FIXME: Got an status-code for which error does not match any expected type!!!: -1" status_code=-1 module=api
level=error msg="Failed to retrieve information of the docker client and server host: Cannot connect to the Docker daemon at tcp://127.0.0.1:2377. Is the docker daemon running?" providerName=docker
level=error msg="Provider connection error Cannot connect to the Docker daemon at tcp://127.0.0.1:2377. Is the docker daemon running?, retrying in 1.461723532s" providerName=docker
它在一个管理器节点上 运行(我只有一个节点)并且 swarm 工作正常,API 通过该 TCP 端口公开,如下面的输出所示命令。
$ sudo ss --tcp --listening --processes --numeric | grep ":2377"
LISTEN 0 128 *:2377 *:* users:(("dockerd",pid=30747,fd=23))
我的架构基于 this blog post,使用 docker network create --driver=overlay proxy
创建了一个名为 proxy
的共享覆盖网络。
我试过this但是没有用,我也找不到任何其他相关问题。这是我的配置文件:
traefik.toml
[providers.docker]
endpoint = "tcp://127.0.0.1:2377"
swarmMode = true
network = "proxy"
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web-secure]
address = ":443"
[certificatesResolvers.le.acme]
email = "my-email@email.com"
storage = "/letsencrypt/acme.json"
caserver = "https://acme-staging-v02.api.letsencrypt.org/directory" # For testing
[certificatesResolvers.le.acme.httpChallenge]
entryPoint = "web"
[log]
level = "DEBUG"
traefik.yml
version: "3.7"
services:
reverse-proxy:
deploy:
placement:
constraints:
- node.role == manager
image: "traefik:v2.2"
ports:
- 80:80
- 443:443
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/path/to/traefik.toml:/etc/traefik/traefik.toml"
- "letsencrypt:/letsencrypt"
networks:
- "proxy"
networks:
proxy:
external: true
volumes:
letsencrypt:
我能看到的唯一区别是该博客没有明确定义 dockers 提供程序的端点。也许要删除它?
运行 Docker 18.09.7ce with Docker API v1.39 on Ubuntu 18.04 LTS.
我正在尝试将 Traefik 2.2 设置为某些 swarm 服务的反向代理,但由于某些原因,Traefik 无法通过 Traefik 文档中给出的 TCP 端口连接到 Docker 守护进程。这三个错误消息不断重复。
level=debug msg="FIXME: Got an status-code for which error does not match any expected type!!!: -1" status_code=-1 module=api
level=error msg="Failed to retrieve information of the docker client and server host: Cannot connect to the Docker daemon at tcp://127.0.0.1:2377. Is the docker daemon running?" providerName=docker
level=error msg="Provider connection error Cannot connect to the Docker daemon at tcp://127.0.0.1:2377. Is the docker daemon running?, retrying in 1.461723532s" providerName=docker
它在一个管理器节点上 运行(我只有一个节点)并且 swarm 工作正常,API 通过该 TCP 端口公开,如下面的输出所示命令。
$ sudo ss --tcp --listening --processes --numeric | grep ":2377"
LISTEN 0 128 *:2377 *:* users:(("dockerd",pid=30747,fd=23))
我的架构基于 this blog post,使用 docker network create --driver=overlay proxy
创建了一个名为 proxy
的共享覆盖网络。
我试过this但是没有用,我也找不到任何其他相关问题。这是我的配置文件:
traefik.toml
[providers.docker]
endpoint = "tcp://127.0.0.1:2377"
swarmMode = true
network = "proxy"
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web-secure]
address = ":443"
[certificatesResolvers.le.acme]
email = "my-email@email.com"
storage = "/letsencrypt/acme.json"
caserver = "https://acme-staging-v02.api.letsencrypt.org/directory" # For testing
[certificatesResolvers.le.acme.httpChallenge]
entryPoint = "web"
[log]
level = "DEBUG"
traefik.yml
version: "3.7"
services:
reverse-proxy:
deploy:
placement:
constraints:
- node.role == manager
image: "traefik:v2.2"
ports:
- 80:80
- 443:443
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/path/to/traefik.toml:/etc/traefik/traefik.toml"
- "letsencrypt:/letsencrypt"
networks:
- "proxy"
networks:
proxy:
external: true
volumes:
letsencrypt:
我能看到的唯一区别是该博客没有明确定义 dockers 提供程序的端点。也许要删除它?