来自守护程序的错误响应:驱动程序在端点modest_aryabhata

时间:2018-04-06 12:57:05

标签: node.js docker

我正在经历this tutorial

使用docker build -t myapp_back .

制作泊坞窗图片

然后想要运行带有docker run -p 3000:3000 -d myapp_back

的容器

它是simlpe node / express app

但是我收到了一个错误:

  

C:\ Program Files \ Docker \ Docker \ Resources \ bin \ docker.exe:错误   来自守护程序的响应:驱动程序无法编程外部连接   在端点wizardly_wescoff上   (a7c53e0d168f915f900e3d67ec72805c2f8e4f5e595f6ae3c7fed8e097886a8b):   启动userland代理时出错:mkdir   /port/tcp:0.0.0.0:3000:tcp:172.17.0.2:3000:输入/输出错误。

怎么了?

我的dockerfile:

FROM node:carbon
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ['npm', 'start']

并从package.json开始:

"start": "nodemon src/app.js --exec babel-node"

9 个答案:

答案 0 :(得分:16)

要在Windows中解决以下错误:只需重新启动Docker(从托盘菜单或选择设置/重置中的'重新启动Docker ...'选项)

Cannot start service YOUR_SERVICE: driver failed programming external connectivity on endpoint ...

答案 1 :(得分:5)

看起来这是docker的一个已知问题:https://github.com/docker/for-win/issues/573

尝试:

  1. 在“设置/守护程序”菜单中禁用“实验性功能”
  2. 重新启动docker
  3. 停止所有容器。
  4. 要停止所有容器,请运行:docker ps -a -q | ForEach { docker stop $_ }

      

    编辑:使用ShellScript代码停止所有容器

    for a in `docker ps -a -q`
    do
      echo "Stopping container - $a"
      docker stop $a
    done
    

答案 2 :(得分:2)

刚重新启动我的电脑,现在可以正常运行..

答案 3 :(得分:1)

我正在linux下运行。如果我使用sudo命令以root用户身份运行docker,那么它将正常工作。

答案 4 :(得分:1)

重新启动计算机不是实际的解决方法,而只是需要经常执行的一种解决方法。

该问题与Windows 10的默认关机行为有关。

可以通过禁用Windows快速启动设置来实现实际的修复:

控制面板->电源选项->选择电源按钮的功能->更改当前不可用的设置->切换打开快速启动

答案 5 :(得分:1)

在Mac Mojave上,运行以下命令以查找正在使用该端口的进程。

DIM BuildExecuteString
BuildExecuteString = "cmd /c call ""C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat"" & devenv ""Test.sln"" /Rebuild ""Release|Any CPU"" /project ""Test"""

Set objShell = CreateObject("Wscript.Shell")
Call objShell.Run(BuildExecuteString, 1, True)

就我而言,我正在检查端口8080,所以我运行了

sudo lsof -i @localhost:<port_no>

我发现http-alt运行在端口8080上,使用上述命令获取进程ID后,您可以通过

终止进程
sudo lsof -i @localhost:8080

但是,在我的情况下,四个应用程序sudo kill -9 <process_id> 在端口8080上使用http-alt。由于它们看起来很重要,因此我更改了端口,并在8888而不是8080上运行了容器。

ArtemisSe, Mail, Google and Slack

答案 6 :(得分:0)

通过将docker重置为出厂默认值,我可以使docker在我的Windows 10 pc上工作。重新启动docker,重新启动我的机器不起作用。

答案 7 :(得分:0)

只需重新启动docker,右键单击其图标,然后重新启动即可。解决了我的问题

答案 8 :(得分:0)

就我而言,PHP容器中出现相同的错误。我解决了更改公共端口并工作的问题。

重新启动Windows 10后,此命令将引发错误:

docker run -d -p 8080:80 --name php_apache php_app

解决方案:

docker run -d -p 8081:80 --name php_apache php_app