由于 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 文件是您最新的稳定备份,请勿删除该文件。
我注意到本地电脑上的 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 文件是您最新的稳定备份,请勿删除该文件。