【问题标题】:Docker on Windows 10 "driver failed programming external connectivity on endpoint"Windows 10 上的 Docker“驱动程序在端点上编程外部连接失败”
【发布时间】:2017-11-08 21:27:51
【问题描述】:

我正在尝试将$ docker-compose up -d 用于一个项目并收到以下错误消息:

ERROR: for api Cannot start service api: driver failed programming external connectivity on endpoint dataexploration_api_1 (8781c95937a0a4b0b8da233376f71d2fc135f46aad011401c019eb3d14a0b117): Error started userland proxy: mkdir /port/tcp:0.0.0.0:9000:tcp:1720 /输出错误 启动项目时遇到错误。

我想知道它是否可能是端口?我之前一直在尝试端口 8080。该项目最初是在 Mac 上建立的,我已经从 gitHub 克隆了存储库。

【问题讨论】:

  • 请添加 github 票的链接,以便我们都可以去那里投票。

标签: windows github windows-10 docker-compose


【解决方案1】:

对于许多有相同问题的 Windows 用户,我建议也重新启动计算机,因为大多数时候(至少对我而言)重新启动 Docker 不起作用。因此,我建议您按照以下步骤操作:

  1. 重启你的电脑。
  2. 然后以管理员身份启动 PowerShell 并运行:

    Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private

  3. 然后重启你的 Docker。

完成这些步骤后,您将能够毫无问题地运行。 我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    在大多数情况下,您应该考虑的第一种情况是有一个旧服务正在运行并使用该端口。 就我而言,由于我更改了镜像名称,所以当使用 docker-compose 停止(然后向上)时,它不会停止旧容器(服务),导致新容器无法启动。

    【讨论】:

      【解决方案3】:

      通常,当您尝试启动容器但容器需要的端口被占用时,通常会发生此错误,通常由同一个 Docker 占用,就像最近停止的错误进程的结果一样。

      对我来说,解决方案是:

      1. 像管理员一样打开windows CMD,输入netstat -oan查找占用你端口的进程(Docker就是那个进程):

      在我的例子中,我的 docker 端口是 3306 6001 8000 9001。

      1. 现在我们需要释放那些端口,所以我们通过 PID (colum PID) 杀死这个进程,输入

        TASKKILL /PID 9816 /F
        
      2. 重启泊坞窗。

      3. 要快乐。

      问候。

      【讨论】:

        【解决方案4】:
        • 解决此问题的最简单方法是重新启动 docker。但在某些情况下,即使您没有在端口中运行任何容器,它也可能无法正常工作。您可以使用docker ps 命令检查正在运行的容器,并可以看到所有未清除但在使用之前退出的容器@ 987654322@ 命令。

        假设有一个容器,其容器 id 为 8e35276e845e。您可以使用命令 docker rm 8e35276e845edocker rm 8e3 来结束容器。请注意,前 3 个字符串是该特定 docker 的 id容器标识。因此根据上面的场景8e3就是8e35276e845e的id。

        • 如果重启不起作用,您可以尝试在 docker-compose.yml 文件中更改服务的端口,并根据 apache 端口,您必须更改v-host(如果有的话)。这将解决您的问题。

        例如:

            build:
              context: ./apache
              dockerfile: Dockerfile
            working_dir: /var/www/
            volumes:
              - .:/var/www
            networks:
              - app-network
            ports:
              - 8082:80
            depends_on:
              - mysql_db
        

        应该改成

        apache_server:
            build:
              context: ./apache
              dockerfile: Dockerfile
            working_dir: /var/www/
            volumes:
              - .:/var/www
            networks:
              - app-network
            ports:
              - 8083:80
            depends_on:
              - mysql_db
        

        并且特定的 v-host 也必须更改,

        Ex(根据上面的场景):

        <VirtualHost *:80> 
            ProxyPreserveHost On
            ServerAlias phpadocker.lk
            ProxyPass / http://localhost:8083/
            ProxyPassReverse / http://localhost:8083/
        </VirtualHost>
        

        这将帮助您解决上述问题。

        【讨论】:

          【解决方案5】:

          我知道已经有很多答案,但没有一个能为我解决问题。
          相反,我通过将 docker 重置为出厂默认设置来消除此错误消息:

          【讨论】:

          • 在此之前您是否收到 Docker 的任何错误报告,因为在我的情况下,我有类似错误的提示,建议重置为出厂默认设置。
          • 不,@TheodosiosAsvestopoulos,我没有得到那个弹出窗口。
          • 奇怪我今天又遇到了同样的问题,docker restart 没有帮助。我不想再次重置为出厂默认设置,因为我们提取了非常大的图像,所以我只是退出 Docker Desktop 并再次打开它并且它工作(似乎与重新启动它不同的操作)。
          【解决方案6】:

          就我而言,问题在于 docker 容器 (Nginx) 使用 80 端口,而 IIS 使用相同的端口。在 IIS 中设置另一个端口解决问题

          【讨论】:

            【解决方案7】:

            简单地重新启动 Docker 并没有解决我在 Windows 10 上的问题。

            就我而言,我通过以下确切步骤解决了问题:

            1) 关闭“Docker 桌面”

            2) 运行以下命令:

            net stop com.docker.service
            net start com.docker.service
            

            3) 再次启动“Docker Desktop”

            希望这对其他人有帮助。

            【讨论】:

            • 这对我来说在尝试 docker 重启后有效!另外,不要忘记以管理员权限运行这对夫妇
            • 它有效,但我没有一直拥有管理员权限:(
            • 帮我重新启动了 docker 服务,通常只需要重新启动 docker 桌面就足够了,但这次不行...... Windows 10 上的 docker 真的很痛苦(延迟、错误、文档......)
            • 这成功了!应该是真正接受的答案。谢谢
            • 为我工作,谢谢!
            【解决方案8】:

            答案有点晚,但我会把它留在这里,它可能会帮助其他人 在 mac 和 docker 多次重新启动后,在 Mac mojave 上 我不得不sudo apachectl stop

            【讨论】:

              【解决方案9】:

              我也遇到了这个错误,如果你想知道错误发生的主要原因,那是因为 docker 已经在运行一个类似的容器,要解决这个问题(避免重新启动 Docker),你必须:

              docker container ls
              

              你得到了类似的东西:

              CONTAINER ID        IMAGE               COMMAND             CREATED
              1fa4ab2cf395        friendlyhello       "python app.py"     28 seconds ago
              

              这是一个正在运行的容器列表,取CONTAINER ID(复制Ctrl+C

              现在您必须结束进程(并让运行另一个图像)运行此命令。

              docker container stop <CONTAINER_ID>
              

              仅此而已!现在您可以创建容器了。

              欲了解更多信息,请访问https://docs.docker.com/get-started/part2/

              【讨论】:

                【解决方案10】:

                如果发生一次,重启 Docker 即可。就我而言,每次我重新启动计算机时都会发生这种情况。

                在这种情况下,disable Fast Startup,或者您可能会在每次计算机启动时重新启动 Docker。此解决方案来自here

                【讨论】:

                • 这应该被接受为答案。重启可以,但是每次都需要重启的时候就很烦了
                • 在 Windows 10 上切换用户时出现此错误
                【解决方案11】:

                我在 Windows 10 Pro / Docker v17.06.1-ce-win24 / Docker-Compose v1.14.0 在管理员模式下使用 Windows Powershell x86 时收到了相同的错误消息。

                解决方案是简单地重新启动 Docker。

                【讨论】:

                • 我在 Windows 10 专业版上使用 docker 版本 18.03.0-ce-win59 (16762)。 Docker 镜像是 jenkins/jenkins:2.107.2。拉取后,我使用此命令安装docker run -p 8080:8080 --name myJenkins -p 50000:50000 jenkins/jenkins:2.107.2。完成 jenkins 设置后,我在其他命令窗口中使用 docker stop myJenkins 并关闭我的主机 Windows 10。当我启动自动启动 docker 的 Windows 10 时,我使用命令 docker start myJenkins 并收到熟悉的消息。但是,重新启动 docker 可以解决问题:)
                • 有谁知道为什么会这样?重新启动 docker 似乎很麻烦,有没有办法正确解决这个问题?
                • 2019 年 3 月,同样的修复对我有用。使用 Docker Desktop 版本 2.0.0.3 (31259) 频道:稳定版本:8858db3 客户端:Docker 引擎 - 社区版本:18.09.2 API 版本:1.39 Go 版本:go1.10.8 Git 提交:6247962 构建:2019 年 2 月 10 日星期日 04:12:31 操作系统/架构:windows/amd64 实验性:假 Win 10 版本 10.0.18346.1(预发布的快速版本)
                • 在 Mac 上遇到了同样的问题,重新启动 docker 也解决了这个问题......耶稣我应该在本地重新安装整个 docker 环境之前检查你的答案......:D欢呼队友跨度>
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2018-09-21
                • 2021-06-27
                • 1970-01-01
                • 2021-03-04
                • 2018-11-12
                • 2022-07-01
                • 2018-09-16
                相关资源
                最近更新 更多