Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法停止或重新启动docker容器_Docker - Fatal编程技术网

无法停止或重新启动docker容器

无法停止或重新启动docker容器,docker,Docker,尝试停止或重新启动docker容器时,我收到以下错误消息: $ docker restart 5ba0a86f36ea Error response from daemon: Cannot restart container 5ba0a86f36ea: [2] Container does not exist: container destroyed Error: failed to restart containers: [5ba0a86f36ea] 但是当我跑的时候 $ docker lo

尝试停止或重新启动docker容器时,我收到以下错误消息:

$ docker restart 5ba0a86f36ea
Error response from daemon: Cannot restart container 5ba0a86f36ea: [2] Container does not exist: container destroyed
Error: failed to restart containers: [5ba0a86f36ea]
但是当我跑的时候

$ docker logs -f 5ba0a86f36ea
我可以看到日志,所以很明显容器确实存在。有什么想法吗

编辑:

对不起,我忘了提这个:

当我运行
docker ps-a
时,我看到容器已启动并正在运行。但是,其中的应用程序出现故障,所以我想重新启动它,或者只是在线获取该应用程序的新版本。但是当我无法停止并移除容器时,我也无法启动并运行一个新的应用程序,它将侦听同一个端口

这看起来像docker 1.6或1.7:

某些容器无法正常停止,因此无法重新启动

当用户主机从1.5.0升级到1.6.0时,我们经常看到这个问题。
升级后,某些容器无法停止(给出
500服务器错误:内部服务器错误(“无法停止容器xxxxx:[2]容器不存在:容器已销毁”
)或强制销毁(给出
500服务器错误:内部服务器错误(“无法杀死正在运行的容器,无法删除-[2]容器不存在:容器已销毁“
))。 进程仍在主机上运行。
有时,它在重新启动docker守护进程后工作

有一些变通办法:

我已经尝试了该不可验证容器的所有远程API调用,结果如下:

  • json
    stats
    changes
    top
    日志
    返回有效响应
  • 停止
    暂停
    等待
    终止
    报告404(!)
在我完成远程API后,我再次检查了docker ps(容器仍然在那里),但是我重试了docker kill,它成功了!集装箱被毁了,我可以把它移走

或:

有效的方法是在我的主机上重新启动
boot2docker
。然后
docker rm-f

值得了解的是:

如果您正在运行入口点脚本。。。脚本将与shebang一起工作

#!/bin/bash -x
但会阻止容器停止使用

#!/bin/bash -xe

在我的计算机中找不到
boot2docker
。所以,我想出了一些对我有用的办法

$ sudo systemctl restart docker.socket docker.service
$ docker rm -f <container id>
$sudo systemctl重新启动docker.socket docker.service
$docker rm-f
检查它是否对您也有帮助。

所有码头工人:
start | restart | stop | rm--force | kill
命令 如果容器卡住,可能无法工作。您始终可以重新启动docker守护进程。但是,如果有其他容器正在运行,则可能无法选择该选项。您可以做的是:

ps aux | grep <<container id>> | awk '{print $1 $2}'
ps aux | grep | awk'{print$1$2}'
输出包括:

<<user>><<process id>>

然后终止与容器关联的进程,如下所示:

sudo kill -9 <<process id from above command>>
sudo kill-9
这将杀死容器,您可以使用正确的图像启动一个新容器。

sudo aa删除未知


这就是我的工作原理。

我在windows主机上遇到了同样的问题,这里的其他选项都不适用于我。我最后只需要删除物理容器文件夹,该文件夹位于以下位置:

$ sudo systemctl restart docker.socket docker.service
$ docker rm -f <container id>
C:\ProgramData\Docker\containers\[container guid]

为了安全起见,我先停止了docker服务,当我重新启动它时,坏掉的容器现在不见了,我可以创建新的容器。我怀疑在linux主机上也会这样,但我不知道该操作系统上的容器文件夹保存在哪里。

使用“top”命令检查是否有僵尸进程

docker ps | grep
获取容器id

ps -ef | grep <<container id>>

ps -ef|grep defunct | grep java
ps-ef | grep
ps-ef | grep失效| grep java

并通过父PID杀死容器。

如果您在Ubuntu上,请确保docker compose没有作为snap安装。这将导致各种随机问题,包括上述问题

卸下卡扣:

sudo snap remove docker-compose
并从compose存储库手动安装:


在我的例子中,我无法删除使用nomad jobs创建的容器,
docker日志没有输出,通常看起来像是冻结的


到目前为止,解决方案是:
sudo服务docker restart
,是否有人可以建议更好的方法?

适用于Mac上安装了docker Desktop的任何人。我只需点击托盘图标,然后说
重启Docker
。一旦重新启动,您就可以删除容器。

我猜您可以销毁一个容器,但当它被销毁时,仍然有关于它的日志。否则,您的观察就没有意义了。您想运行一个新的容器,删除所有数据和更改,还是想从您使用的容器中获取像重要文件一样的文件?如果您的docker映像没有正确的进程处理,则可能会发生这种情况。Thx,是的,重新启动计算机有帮助。不幸的是,这是一个服务器,不应该经常重启,希望他们能修复这个错误。正如我所说的docker 1.7,我同意,这确实是一个解决方案,而不是一个完整的解决方案。我将监控那个bug报告。我有一个不健康的容器,我无法阻止或杀死它:docker stop-f#帮助,谢谢!我的结果是
杀死:非法进程id:[用户][进程id]
。你知道有什么选择吗?我得到了
没有这样的进程
如果你有
没有这样的进程
,很有可能
ps aux
返回了你刚刚运行的命令(
ps aux | grep
),这是什么原因?我找不到itI的任何参考,我不得不使用force选项
docker rm-f
,但它可以工作。谢谢。谢谢你的反馈@chaseisabelle。这是有道理的。我将把它包含在答案中。是的,这已成功删除受感染的容器。
sudo snap remove docker-compose