由于 input/output 错误,无法重新启动 Docker 容器?

Cannot restart Docker container due to input/output error?

我注意到本地电脑上的 Redis 实例停止工作。我使用 Docker 来托管它并尝试在容器上发出 restart 命令,因为 ps 表示它是 运行ning*.

docker restart my-redis

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

Error response from daemon: Cannot restart container my-redis: driver failed programming external connectivity on endpoint my-redis (...): Error starting userland proxy: mkdir /port/tcp:0.0.0.0:32777:tcp:172.17.0.2:6379: input/output error

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

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

这个问题似乎已经发生在很多人身上(通常在Windows)并且没有得到明确解决。参考这个 issue.

不过有一个临时的解决方法,就是禁用experimental features(上面的问题很多说禁用experimental features后就解决了)

我不确定如何禁用它以及您正在使用哪个 OS 但您可以轻松地 google 找到如何为 OS.[=16= 禁用它]

嗯,我也遇到了 - 正要写一篇 post。我昨天创建了一个 weblogic 容器并在一天内停止启动它好几次(没有隔夜重启)

cam 今天尝试启动,但在我的 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

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

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

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