单个命令停止和删除Docker容器


138

是否有可以将docker stopand docker rm命令组合在一起的命令?每次我要删除正在运行的容器时,都需要顺序执行2条命令,我想知道是否有组合的命令可以简化此过程。

docker stop CONTAINER_ID
docker rm CONTATINER_ID

2
它依赖于容器:ctl.io/developers/blog/post/...
VonC

Answers:


236

您可以使用 :

docker rm -f CONTAINER_ID

即使容器仍在运行,它也会删除该容器。

https://docs.docker.com/engine/reference/commandline/rm/

您也可以使用--rm选项运行容器,停止后它将自动删除。

https://docs.docker.com/engine/reference/run/#clean-up-rm

编辑:rm -f可能是危险的,你的数据和最适合于测试或开发容器。@Bernard对这个问题的评论值得一读。


15
小心。docker rm -f向容器发送SIGKILL信号。这可能不会让容器有时间正确保存其状态。对于非无状态容器,应真正使用,docker stop然后使用docker rm。这会发送SIGTERM信号,默认情况下,该信号会在docker守护程序最终发送SIGKILL之前,给容器最多10秒的时间来执行关闭操作。
伯纳德

3
我发现--rm选项最适合短期容器。
Prashant Sinha,

30
docker stop CONTAINER_ID | xargs docker rm

聪明的主意。我喜欢它,因为它也可以用于其他命令,您想在两个命令中传递参数而不重复它们或使用变量。
狮子会


7

就我而言,要删除所有正在运行的容器,我使用了

docker rm -f $(docker ps -a -q); docker rmi $(docker images -q)



2

这将停止并删除所有图像,包括正在使用-f的正在运行的容器

docker rmi -f $(docker images -a -q)

1

将docker ps命令与-a标志一起使用以查找要删除的容器的名称或ID

docker ps -a

删除:$ docker rm ID_or_Name ID_or_Name

退出时取出容器:

如果您知道创建容器时不想再保留它,则可以运行docker run --rm以在退出时自动将其删除。

运行并删除: docker run --rm image_name

删除所有退出的容器:

您可以使用docker ps -a定位容器,并按其状态过滤容器:创建,重新启动,运行,暂停或退出。要查看已退出容器的列表,请使用-f标志基于状态进行过滤。确认要删除这些容器后,请使用-q将ID传递给docker rm命令。

清单:

docker ps -a -f status=exited

docker rm $(docker ps -a -f status=exited -q)

使用多个过滤器取出容器

可以通过重复过滤器标志和其他值来组合Docker过滤器。这将产生一个满足任一条件的容器列表。例如,如果要删除所有标记为“已创建”(使用无效命令运行容器时可能产生的状态)或“已退出”的容器,则可以使用两个过滤器:

docker ps -a -f status=exited -f status=created

停止并取出所有容器:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

0

用于移除单个容器

docker rm -f CONTAINER_ID

用于取出所有容器

docker rm -f `docker container ps -qa`

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.