无法删除状态为“已创建”的Docker容器。

10

在尝试构建我的应用程序的Docker镜像时,我不知怎么地意外创建了两个状态为已创建的容器。

$ docker ps -a

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                      NAMES
597a3d226a08        2eba970a4fc8          "entrypoint.sh"          43 hours ago        Created                                        pedantic_almeida
bae7a9324bc8        b0898d035451          "entrypoint.sh"          43 hours ago        Created                                        zen_franklin

问题是我无法对这些容器进行任何操作。使用docker rm/restart/inspect <container-id>都会无限期地挂起,而没有打印任何信息。但是从这两个镜像启动新容器可以正常工作。

所以我的问题是如何删除这两个容器?如果需要任何其他信息,请告诉我。


Docker版本:18.03.0-ce


我不确定这是否适用于处于“已创建”状态的容器,请尝试使用 docker kill 命令,您可以运行 docker kill --help 获取更多信息。一旦您杀死容器并将其置于“已退出”状态,您就可以将它们删除了。 - takacsmark
@Mark 它没有在运行,所以我无法终止它。无法终止容器:bae7a9324bc8:容器...未运行。 - hgminh
1
是的,我很难复现一个处于“已创建”状态的容器挂起,但我有另一个想法,你可以尝试一下:docker container prune --force。这将删除所有已停止的容器,所以要小心。 - takacsmark
@Mark 谢谢,它起作用了。我之前尝试过 docker system prune 但是没有成功。不确定这两个命令之间的区别是什么。顺便说一下,你可以写一个答案,这样我就可以接受它了。 - hgminh
太好了!很高兴我们找到了答案。我已经发布了答案。 - takacsmark
2个回答

12

您可以使用以下命令来删除处于 "created" 状态的两个容器:

docker container prune --force

这将删除所有已停止的容器,因此请小心!


1
docker volume rm $(docker volume ls -qf dangling=true)
docker rm $(docker ps -q -f 'status=created')

执行上述命令后,通过以下方式重新启动docker:
service docker restart

1
谢谢你的帮助。然而,它仍然在docker rm命令中挂起。此外,这些容器没有关联任何卷。 - hgminh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接