Docker可以轻松地将您的应用程序和服务包装在容器中,以便您可以在任何地方运行它们。但是,在使用Docker时,也很容易累积过多的未使用的图像,容器和数据卷,这会使输出变得混乱并消耗磁盘空间。
Docker为您提供了从命令行清理系统所需的所有工具。此备忘单样式教程提供了对命令的快速参考,这些命令可用于释放磁盘空间并通过删除未使用的Docker映像,容器和卷来保持系统的有序性。
命令中使用的命令替换语法command$(command)
在许多流行的shell中都可用,例如bash,zsh和Windows Powershell。
Docker提供了一个命令,可以清理悬空的任何资源(图像,容器,卷和网络)(与容器无关):
docker system prune
要另外删除任何已停止的容器和所有未使用的图像(不只是悬空图像),请将该-a
标志添加到命令:
docker system prune -a
使用带有-a
标志的命令docker images
可以找到要删除的图像的ID。这将显示每个图像,包括中间图像层。当您找到要删除的图像时,可以将其ID或标记传递给docker rmi
:
列表:
docker images -a
去掉:
docker rmi Image Image
Docker图像由多个图层组成。悬空图像是与任何标记图像无关的图层。它们不再用于目的并占用磁盘空间。它们可以通过添加具有值dangling=true
的-f
过滤器标志到docker images
的命令来定位。如果您确定要删除它们,可以使用以下docker images purge
命令:
注意:如果您在不标记图像的情况下构建图像,则图像将显示在悬空图像列表中,因为它与标记图像无关。您可以通过在构建时提供标记来避免这种情况,并且可以使用docker tag命令追溯标记图像。
列表:
docker images -f dangling=true
去掉:
docker images purge
你可以使用组合模式docker images
和grep
找到相匹配的图像。一旦您满意,您可以通过使用awk
来删除它们docker rmi
。请注意,这些实用程序不是由Docker提供的,并不一定适用于所有系统:
列表:
docker images -a | grep "pattern"
去掉:
docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
通过添加-a
到docker images
命令,可以列出系统上的所有Docker映像。一旦确定要全部删除它们,就可以添加-q
标志以将图像ID传递给docker rmi
:
列表:
docker images -a
去掉:
docker rmi $(docker images -a -q)
使用带有该-a
标志的docker ps
命令可以找到要删除的容器的名称或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过滤器。这导致满足任一条件的容器列表。例如,如果要删除标记为Created的所有容器(运行具有无效命令的容器时可能导致的状态)或Exited,则可以使用两个过滤器:
列表:
docker ps -a -f status=exited -f status=created
去掉:
docker rm $(docker ps -a -f status=exited -f status=created -q)
您可以使用docker ps
和grep的组合找到与模式匹配的所有容器。当您对要删除的列表感到满意时,可以使用awk
和xargs
提供ID给 docker rmi
。请注意,这些实用程序不是由Docker提供的,并不一定适用于所有系统:
列表:
docker ps -a | grep "pattern”
去掉:
docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
您可以查看系统上的容器docker ps
。添加-a
标志将显示所有容器。当您确定要删除它们时,可以添加-q
标志以向 docker stop
和docker rm
命令提供ID:
列表:
docker ps -a
去掉:
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
使用此docker volume ls
命令可找到要删除的卷名称。然后,您可以使用以下docker volume rm
命令删除一个或多个卷:
列表:
docker volume ls
去掉:
docker volume rm volume_name volume_name
由于卷的位置与容器无关,因此在移除容器时,不会同时自动删除卷。当卷存在且不再连接到任何容器时,它称为悬空卷。要找到它们以确认您要删除它们,可以使用带过滤器的命令docker volume ls
将结果限制为悬空卷。当您对列表感到满意时,可以用docker volume prune
将它们全部删除:
列表:
docker volume ls -f dangling=true
去掉:
docker volume prune
如果您创建了一个未命名的卷,则可以将其与具有该-v
标志的容器同时删除。请注意,这仅适用于未命名的卷。成功删除容器后,将显示其ID。请注意,没有引用卷的删除。如果未命名,则会以静默方式从系统中删除。如果它被命名,它会默默地保持存在。
去掉:
docker rm -v container_name
本教程介绍了一些用于使用Docker删除图像,容器和卷的常用命令。每个都可以使用许多其他组合和标志。
想要了解更多关于删除Docker镜像,容器和卷的相关教程,请前往腾讯云+社区学习更多知识。
参考文献:《How To Remove Docker Images, Containers, and
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。