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


134

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

错误:对于api无法启动服务api:驱动程序无法对端点dataexploration_api_1上的外部连接进行编程(8781c95937a0a4b0b8da233376f71d2fc135f46aad011401c019eb3d14a0b117):启动userland代理时出错:mkdir /port/tcp:0.0.0.0:9000:tcp80:172.19。在启动项目时遇到错误。

我想知道是否是港口?我以前曾尝试使用8080端口。该项目最初是在Mac上设置的,我已经从gitHub克隆了存储库。


请添加一个链接到github票证,以便我们所有人都可以去那里投票。
PussInBoots

Answers:


270

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

解决方案是仅重新启动Docker。


我在Windows 10 Professional上使用了Docker版本18.03.0-ce-win59(16762)。Docker Image是jenkins / jenkins:21.07.2。拉后,我使用此命令进行安装docker run -p 8080:8080 --name myJenkins -p 50000:50000 jenkins/jenkins:2.107.2。设置完詹金斯后,我docker stop myJenkins在其他命令窗口中使用并关闭主机Windows10 。当我启动自动启动docker的Windows 10时,我使用command docker start myJenkins并获得了熟悉的消息。但是,重新启动Docker解决了问题:)
Charles Wu,

1
有谁知道为什么会这样吗?重新启动docker似乎很hack,有没有办法解决这个问题?
Storm Muller

相同的修复程序于2019年3月为我工作。使用Docker桌面版本2.0.0.3(31259)频道:稳定版本:8858db3客户端:Docker Engine-社区版本:18.09.2 API版本:1.39 Go版本:go1.10.8 Git提交:6249672内置:2019年2月10日星期日04:12:31操作系统:Windows / amd64实验:false Win 10版本10.0.18346.1(快速发布的预发行版)
-JohnC

在Mac上也有相同的问题,并重新启动了docker并对其进行了修复...耶稣,在本地重新安装整个
docker

67

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

在这种情况下,请禁用快速启动,否则您可能会在每次计算机启动时重新启动Docker。此解决方案是从这里获得的


6
这应该作为答案。重新启动作品,但是当您每次需要它变得烦人时都需要这样做
Vitalii

在Windows 10上切换用户时收到此错误
Vasko

58

在Windows 10上简单地重新命名Docker并不能解决我的问题。

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

1)关闭“ Docker Desktop”

2)运行以下命令:

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

3)再次启动“ Docker Desktop”

希望这会帮助别人。


3
在尝试docker重新启动后,这对我有用!另外,不要忘记以管理员权限运行这对夫妇
Gad Wissberg,

它起作用了,但是我一直都没有管理员权限:(
Hassan Tareq

3
为我重新启动docker服务而工作,通常仅一次docker桌面重新启动就足够了,但这次
还不行

这工作了!应该是真正接受的答案。谢谢
Dominik K

为我工作,谢谢!
G.Mast

9

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

docker container ls

您得到类似于以下内容:

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

这是正在运行的容器的列表,带有容器ID(复制Ctrl+ C

现在,您必须结束该过程(并运行其他图像),然后运行此命令。

docker container stop <CONTAINER_ID>

就这样!现在您可以创建容器。

有关更多信息,请访问https://docs.docker.com/get-started/part2/


7

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

在此处输入图片说明


在此之前,您是否有来自Docker的任何错误报告,因为就我而言,我弹出了类似错误的提示,建议将其重置为出厂默认设置。
Theodosios Asvestopoulos

不,@ TheodosiosAsvestopoulos,我没有弹出该窗口。
jasie

奇怪的是,我今天又遇到了同样的问题,docker restart没有帮助。我不想再次重置为出厂默认设置,因为我们拉出了非常大的图像,所以我只是退出了Docker Desktop,然后再次打开它,它就起作用了(似乎是与重新启动它不同的动作)。
Theodosios Asvestopoulos

6

通常,当您尝试启动一个容器但是该容器需要的端口被占用时,通常会发生此错误,通常是由同一个Docker占用的,这是由于最近一个错误的进程停止所致。

对我来说解决方案是:

  1. 像管理员一样打开Windows CMD,键入netstat -oan以查找占用您端口的进程(Docker是该进程):

在我的情况下,我的码头工人端口是3306 6001 8000 9001。

  1. 现在我们需要释放该端口,所以我们要通过PID(column PID)终止该进程,键入

    TASKKILL /PID 9816 /F
    
  2. 重新启动docker。

  3. 要开心。

问候。



1

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


0

答案有点晚了,但是我将其留在这里,可能会对其他人有所帮助。在Mac和Mojave上,我不得不重启许多Mac和docker之后sudo apachectl stop


0
  • 解决此问题的最简单方法是重启docker。但是在某些情况下,即使您在端口中没有正在运行的容器也可能无法正常工作。您可以使用docker pscommand 查看正在运行的容器,并可以查看所有未清除但在使用docker ps -acommand 之前退出的容器。

假设有一个容器具有容器ID 8e35276e845e。您可以使用命令docker rm 8e35276e845edocker rm 8e3结束容器。请注意,前三个字符串是该特定Docker容器ID的ID。因此,根据上述场景8E3是的id 8e35276e845e

  • 如果重启不起作用,您可以尝试更改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

而且特定的虚拟主机也必须更改,

例(根据以上情况):

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

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


0

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

  1. 重新启动电脑。
  2. 然后以管理员身份启动PowerShell并运行以下命令:

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

  3. 之后,重新启动您的Docker。

完成这些步骤后,您将可以毫无问题地运行。希望对您有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.