尝试停止或重新启动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]
Run Code Online (Sandbox Code Playgroud)
但是当我跑步的时候
$ docker logs -f 5ba0a86f36ea
Run Code Online (Sandbox Code Playgroud)
我可以看到日志,所以显然容器确实存在.有任何想法吗?
编辑:
对不起,我忘了提这个:
当我运行时,docker ps -a
我看到容器已启动并正在运行.然而,其中的应用程序出现故障,因此我想重新启动它,或者只是在线获取该应用程序的新版本.但是当我无法停止并移除容器时,我也无法启动并运行新的应用程序,这将听取相同的端口.
Ted*_*lay 53
start | restart | stop | rm --force | kill
如果容器卡住,所有 docker:
命令可能无法工作。您可以随时重新启动 docker 守护进程。但是,如果您有其他容器在运行,则可能不是这种选择。你可以做的是:
ps aux | grep <<container id>> | awk '{print $1 $2}'
Run Code Online (Sandbox Code Playgroud)
输出包含:
<<user>><<process id>>
Run Code Online (Sandbox Code Playgroud)
然后终止与容器关联的进程,如下所示:
sudo kill -9 <<process id from above command>>
Run Code Online (Sandbox Code Playgroud)
这将杀死容器,您可以使用正确的图像启动一个新容器。
Abh*_*yap 52
boot2docker
在我的机器里没有.所以,我找到了适合我的东西.
$ sudo systemctl restart docker.socket docker.service
$ docker rm <container id>
Run Code Online (Sandbox Code Playgroud)
检查它是否适合您.
Von*_*onC 24
看起来像docker/docker/issues/12738,与docker 1.6或1.7一起看到:
某些容器无法正常停止,并重新启动
当我们的用户主机从1.5.0升级到1.6.0时,我们会看到很多这个问题.
升级后,某些容器无法停止(给予500 Server Error: Internal Server Error ("Cannot stop container xxxxx: [2] Container does not exist: container destroyed"
))或强制销毁(给予500 Server Error: Internal Server Error ("Could not kill running container, cannot remove - [2] Container does not exist: container destroyed"
)).进程仍在主机上运行.
有时,它在重新启动docker守护程序后起作用.
有一些解决方法:
我已经尝试了针对该unkillable容器的所有远程API调用,结果如下:
json
,stats
,changes
,top
,logs
返回有效响应stop
,pause
,wait
,kill
报404(!)在我完成远程API之后,我仔细检查了
docker ps
(容器仍在那里),但后来我重新尝试了docker kill并且它工作了!容器被杀了,我可以把它删除.
要么:
什么工作是
boot2docker
在我的主机上重新启动.然后docker rm -f
$ boot2docker stop
$ boot2docker start
$ docker rm -f 1f061139ba04
Run Code Online (Sandbox Code Playgroud)
小智 10
如果您使用的是 Mac 并通过终端尝试此操作:使用killall Docker
退出 Docker。
在应用程序文件夹中或使用open /Applications/Docker.app
.
随后您可以docker rm <id>
为相关容器运行 a。
值得知道:
如果您正在运行ENTRYPOINT脚本...该脚本将与shebang一起使用
#!/bin/bash -x
Run Code Online (Sandbox Code Playgroud)
但是会阻止容器停止
#!/bin/bash -xe
Run Code Online (Sandbox Code Playgroud)
小智 9
使用“top”命令检查是否有僵尸进程。
docker ps | grep <<container name>>
Run Code Online (Sandbox Code Playgroud)
获取容器 ID。
ps -ef | grep <<container id>>
ps -ef|grep defunct | grep java
Run Code Online (Sandbox Code Playgroud)
并通过 Parent PID 杀死容器。
小智 6
我在 Windows 主机上遇到了同样的问题,这里的其他选项都不适合我。我最终只需要删除位于此处的物理容器文件夹:
C:\ProgramData\Docker\containers\[container guid]
Run Code Online (Sandbox Code Playgroud)
为了安全起见,我首先停止了 docker 服务,当我重新启动它时,损坏的容器现在消失了,我可以创建新的容器。我怀疑在 Linux 主机上同样可以工作,但我不知道容器文件夹在该操作系统上保存在哪里。
Ubuntu \n使用其系统进程 ID 停止容器。\n使用以下命令获取主进程 ID:
\n\n\ndocker检查-f'{{.State.Pid}}'容器ID
\n
这将返回一个 id 作为 \xc2\xb4 25430 \xc2\xb4。\n使用以下命令杀死它
\n\n\n须藤杀死-9 25430
\n
归档时间: |
|
查看次数: |
84695 次 |
最近记录: |