由于输入/输出错误,无法重启Docker容器?

时间:2018-01-06 17:45:15

标签: docker tcp dns ioerror

我注意到我本地电脑上的Redis个实例停止了工作。我使用Docker来托管它,并尝试在容器上发出restart命令ps声明它正在运行*。

docker restart my-redis

然而,这会产生以下错误消息:

  

来自守护程序的错误响应:无法重启容器my-redis:驱动程序无法在端点上编程外部连接my-redis(...):启动userland代理时出错:mkdir /port/tcp:0.0.0.0:32777:tcp: 172.17.0.2:6379:输入/输出错误

*我一直在运行Docker的同一台机器上运行DNS服务器。我的PC启动时启动了一个服务,它也在端口53处侦听。我需要关闭此过程才能使我的DNS服务器正常启动。我怀疑这是Docker使用的过程,因此它最初可能启动容器,但在发出restart时失败(因为该过程被关闭)。

我已经设置了Docker以使用我的本地DNS服务器(在设置 - > Docker for Windows中的网络下),但我不确定这是否与input/output错误完全相关这打破了我的容器。

3 个答案:

答案 0 :(得分:4)

这个问题似乎已经发生在许多人身上(通常在Windows上)而且没有明确解决。请参阅此issue

但是,有一种临时解决方法,即禁用experimental features(在上述问题中,许多人说它在禁用experimental features后得到解决)。

我不确定如何禁用它以及您正在使用哪个OS但是您可以轻松地谷歌查找如何为OS禁用它。

答案 1 :(得分:0)

我也正在发生-即将写一篇帖子。我昨天创建了一个weblogic容器,并在一天之内停止了几次启动(没有通宵重启)

今天尝试启动的摄像头,并在Windows 10主机上出现此错误

Error response from daemon: driver failed programming external connectivity on endpoint wls (dd11b7bd7d23df50651a94eec68cdd2ec59e160d9c4ae8caa682f0a037218393): Error starting userland proxy: mkdir /port/tcp:0.0.0.0:9002:tcp:172.17.0.2:9002: input/output error

docker端口显示tcp:172.17.0.2

这是在隔夜关机并在新的一天重新启动Windows桌面之前发生的,即使Docker表示运行正常

我忽略了它,只是告诉它重新启动,然后尝试再次启动docker并成功了

当您执行docker ps时-现在所有显示

ports: 0.0.0.0:7001->7001/tcp, 0.0.0.0:9002->9002/tcp表示它再次正常工作

所以网络映射的幕后发生了一些怪异的事情-奇怪

13/03/2019

答案 2 :(得分:0)

在我的情况下,问题是Docker在redis进行磁盘转储的过程中被杀死。

我通过删除temp-1.rdb temp-2.rdb文件解决了这个问题。

dump.rdb文件是您的最新稳定备份,请勿删除该文件。