无法停止或重新启动docker容器
尝试停止或重新启动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 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(!)终止
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