Windows 10 上的 Docker“驱动程序在端点上编程外部连接失败”

Posted

技术标签:

【中文标题】Windows 10 上的 Docker“驱动程序在端点上编程外部连接失败”【英文标题】:Docker on Windows 10 "driver failed programming external connectivity on endpoint" 【发布时间】: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 票的链接,以便我们都可以去那里投票。 【参考方案1】:

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

    重启你的电脑。

    然后以管理员身份启动 PowerShell 并运行:

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

    然后重启你的 Docker。

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

对我来说,解决方案是:

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

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

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

    TASKKILL /PID 9816 /F
    

    重启泊坞窗。

    要快乐。

问候。

【讨论】:

【参考方案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欢呼队友跨度>

以上是关于Windows 10 上的 Docker“驱动程序在端点上编程外部连接失败”的主要内容,如果未能解决你的问题,请参考以下文章

Windows 10 上的驱动程序证书是不是总是需要?

使用 gelf 驱动程序时查看主机上的 docker 容器日志

Windows 10 上的 USB-MIDI 驱动程序

如何从 Windows 10 上的容器连接到 docker 主机(Docker for Windows)

docker:来自守护进程的错误响应:无法选择设备驱动程序“”具有功能:[[gpu]]

在 Windows 10 Home 上使用 WSL2 上的 Docker Desktop 时,如何更改 docker 映像的位置?