gpt4 book ai didi

docker - Traefik + Docker for Windows : Failed to create a client for docker, 错误:协议(protocol)不可用和提供程序连接错误协议(protocol)不可用

转载 作者:行者123 更新时间:2023-12-02 17:54:57 26 4
gpt4 key购买 nike

我无法让基本的 Traefik 路由设置正常工作。
我的目标是在端口 80 上使用两个 helloworld 应用程序(每个应用程序不同以区分)获得基本路由,例如:

  • demo1.localhost -> helloworld1
  • demo2.localhost -> helloworld2

  • 如果我通过 docker run 运行它们,每个图像都可以正常工作隔离中。
    使用我的项目目录中的 Powershell, /app ,当我运行 docker-compose up我得到以下信息:
    Traefik 服务启动,我可以正常访问dashboard 但是路由表没有显示我的路由 . demo1 和 demo2 启动得很好,但显然我无法连接到它们,因为路由不起作用。
    即使服务全部启动成功 - 我反复收到以下错误 :
    traefik | ... "Failed to create a client for docker, error: protocol not available" providerName=docker
    traefik | ... "Provider connection error protocol not available, retrying ..." providerName=docker
    我在下面包含了我的 docker-compose.yml 文件,这是我的目录中唯一的文件, /app .
    docker -compose.yml:
    # app/docker-compose.yml

    version: '3.8'
    networks:
    myweb:
    driver: nat

    services:
    proxy:
    image: traefik:v2.3.0-rc4-windowsservercore-1809
    container_name: traefik
    ports:
    - "80:80"
    - "8080:8080"
    volumes:
    - source: '\\.\pipe\docker_engine'
    target: '\\.\pipe\docker_engine'
    type: npipe
    command:
    - "--api.insecure=true"
    - "--providers.docker"
    - "--providers.docker.exposedbydefault=false"
    - "--entrypoints.web.address=:80"
    networks:
    - myweb
    labels:
    - "traefik.http.routers.dashboard.rule=Host(`dash.localhost`)"
    - "traefik.docker.network=app_myweb"

    demo1:
    image: helloworld:1
    container_name: demo1
    labels:
    - "traefik.enable=true"
    - "traefik.docker.network=app_myweb"
    - "traefik.port=80"
    - "traefik.http.routers.demo1.rule=Host(`demo1.localhost`)"
    # Have tried this below, doesn't help.
    # volumes:
    # - source: '\\.\pipe\docker_engine'
    # target: '\\.\pipe\docker_engine'
    # type: npipe
    networks:
    - myweb
    depends_on:
    - proxy

    demo2:
    image: helloworld:2
    container_name: demo2
    labels:
    - "traefik.enable=true"
    - "traefik.docker.network=app_myweb"
    - "traefik.port=80"
    - "traefik.http.routers.demo2.rule=Host(`demo2.localhost`)"
    networks:
    - myweb
    depends_on:
    - proxy
    我在某处看到一个建议,我应该启用设置 "Expose daemon on tcp://localhost:2375 without TLS"在 Docker 桌面设置中,我已经完成但没有帮助。
    我的设置是:
  • 适用于 Windows 的 Docker 桌面 (v19.03.12)
  • 使用 Windows 容器的 Docker
  • Windows 10(10.0.18363 内部版本 18363)

  • 问题一:
    有人知道可能导致问题的原因吗?
    问题 #2:
    请注意,在我的文件中,我还为仪表板设置了一条路由,从 dash.localhost 路由到 localhost:8080/dashboard,但即使这样也不起作用。知道如何让它工作吗?我是否需要告诉它从 80->8080 路由到仪表板?

    最佳答案

    根据 ticket在他们的 GitHub 上,您似乎是:

  • 缺少 --providers.docker.endpoint=npipe:////./pipe/docker_engine在 Traefik 命令行
  • 分享 \\.\pipe\docker_engine当 Docker 期待 .\pipe\docker_engine

  • 尝试进行这两项更改,看看这是否有助于 Traefik 连接到您的 Docker 守护程序。在 Traefik 可以与 Docker 对话以读取容器的标签之前,您的任何路由都不会起作用。

    关于docker - Traefik + Docker for Windows : Failed to create a client for docker, 错误:协议(protocol)不可用和提供程序连接错误协议(protocol)不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63682165/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com