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 8e35276e845e
或 docker 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“驱动程序在端点上编程外部连接失败”的主要内容,如果未能解决你的问题,请参考以下文章
使用 gelf 驱动程序时查看主机上的 docker 容器日志
如何从 Windows 10 上的容器连接到 docker 主机(Docker for Windows)
docker:来自守护进程的错误响应:无法选择设备驱动程序“”具有功能:[[gpu]]
在 Windows 10 Home 上使用 WSL2 上的 Docker Desktop 时,如何更改 docker 映像的位置?