如何删除Docker镜像,容器和卷

Docker不提供直接清理命令,但它提供了从命令行清理系统所需的所有工具。这个Cheat的表格式指南提供了一个快速参考,可用于释放磁盘空间,并通过删除未使用的Docker镜像,容器和卷来保持系统整理。

Docker秘籍

介绍

Docker使您可以轻松地将应用程序和服务包装在容器中,以便您可以在任何位置运行它们。但是,在使用Docker时,也很容易累积大量未使用的映像,容器和数据卷,使输出混乱并占用磁盘空间。 Docker不提供直接清理命令,但它提供了从命令行清理系统所需的所有工具。这个Cheat的表格式指南提供了一个快速参考,可用于释放磁盘空间,并通过删除未使用的Docker镜像,容器和卷来保持系统整理。 如何使用本指南:
  • 本指南是以自带的命令行片段的备忘单格式
  • 跳转到与您要完成的任务相关的任何部分。
该命令替换语法, command $( command ) ,在命令中使用是在许多流行的炮弹如bash中,zsh中,和Windows PowerShell中可用。

删除Docker镜像

删除一个或多个特定镜像

使用docker images命令和-a标志,找到要删除的镜像的ID。 这将显示每个镜像,包括中间镜像层。 当你位于你要删除的镜像,可以通过他们的ID或标签docker rmi列表:
docker images -a
去掉:
docker rmi Image Image

删除Docker镜像

Docker镜像由多层组成。Docker镜像是与任何标记镜像没有关系的图层。它们不再服务于目的并消耗磁盘空间。他们可以通过添加过滤器标志,位于-f ,值为dangling=truedocker images命令。 当你确定要删除它们,您可以添加-q标志,那么通过他们的ID来docker rmi注:如果您构建一个镜像而不标注它,会出现镜像晃来晃去的镜像,因为它有一个标记的镜像没有关联的名单上。您可以通过避免这种情况提供了一个标签 ,当你建立,并且可以追溯标签的一个镜像Docker标记命令。 列表:
docker images -f dangling=true
去掉:
docker rmi $(docker images -f dangling=true -q)

根据模式删除镜像

你可以找到所有使用相匹配的组合图案镜像docker imagesgrep 。 一旦你满意,你可以通过删除awk传递ID,以docker rmi 。注意,这些实用程序不是由Docker提供的,并且不一定在所有系统上都可用: 列表:
docker ps -a |  grep "pattern"
去掉:
docker images | grep "pattern" | awk '{print $1}' | xargs docker rm

删除所有镜像

所有系统上的镜像Docker窗可以通过增加上市-adocker images命令。 一旦你确定要删除它们,你可以添加-q标志传递图片ID来docker rmi列表:
docker images -a
去掉:
docker rmi $(docker images -a -q)

删除容器

删除一个或多个特定容器

使用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 rm $(docker ps -a -f status=exited -f status=created)

根据模式删除容器

你可以找到所有使用相匹配的组合模式,该容器docker psgrep 。 当你确信你有你想删除列表中,您可以使用awkxargs供应ID来docker rmi 。请注意,这些实用程序不是由Docker提供,并且不一定在所有系统上可用: 列表:
docker ps -a |  grep "pattern
去掉:
docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

停止并取出所有容器

您可以查看您的系统与容器docker ps 。 添加-a标志将显示所有容器。 当你确定要删除它们,您可以添加-q标志提供的ID的docker stopdocker rm命令: 列表:
docker ps -a
去掉:
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

删除卷

删除一个或多个特定卷 - Docker 1.9及更高版本

使用docker volume ls命令来找到您要删除的卷名称或名称。 然后你就可以删除与一个或多个卷docker volume rm命令: 列表:
docker volume ls
去掉:
docker volume rm volume_name volume_name

删除卷 - Docker 1.9和更高版本

由于卷的点是独立于容器存在的,当容器被移除时,卷不会同时被自动移除。当卷存在并且不再连接到任何容器时,它被称为卷。要找到他们确认要删除它们,您可以使用docker volume ls命令过滤器,以将结果限制卷。 当你满意的列表,你可以添加-q标志来提供卷名docker volume rm列表:
docker volume ls -f dangling=true
去掉:
docker volume rm $(docker volume ls -f dangling=true -q)

删除容器及其卷

如果你创建了一个不愿透露姓名的体积,它可以在同一时间与容器中删除-v标志。 请注意,这仅与无名卷的作品。成功删除容器后,将显示其ID。注意,没有参考体积的移除。如果它未命名,它将被静默地从系统中删除。如果它被命名,它静静地存在。 去掉:
docker rm -v container_name

结论

本指南介绍了自Docker 1.9以来用于删除镜像,容器和卷的一些常用命令。有许多其他组合和标志,可以与每个使用。对于一个全面的指南,有什么用,请参阅Docker文档docker rmidocker rmdocker volume rm 。如果您希望在指南中看到常见的清理任务,请在评论中提出问题或提出建议。