前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何删除Docker镜像,容器和卷

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

原创
作者头像
谢鸢
修改2018-10-12 18:24:53
9.5K0
修改2018-10-12 18:24:53
举报

介绍

Docker可以轻松地将您的应用程序和服务包装在容器中,以便您可以在任何地方运行它们。但是,在使用Docker时,也很容易累积过多的未使用的图像,容器和数据卷,这会使输出变得混乱并消耗磁盘空间。

Docker为您提供了从命令行清理系统所需的所有工具。此备忘单样式教程提供了对命令的快速参考,这些命令可用于释放磁盘空间并通过删除未使用的Docker映像,容器和卷来保持系统的有序性。

如何使用本教程:

  • 本教程采用备忘单格式,包含自包含的命令行代码段
  • 跳转到与您要完成的任务相关的任何部分。

命令中使用的命令替换语法command$(command)在许多流行的shell中都可用,例如bash,zsh和Windows Powershell。

清除所有未使用或悬空的图像,容器,卷和网络

Docker提供了一个命令,可以清理悬空的任何资源(图像,容器,卷和网络)(与容器无关):

代码语言:javascript
复制
docker system prune

要另外删除任何已停止的容器和所有未使用的图像(不只是悬空图像),请将该-a标志添加到命令:

代码语言:javascript
复制
docker system prune -a

删除Docker镜像

删除一个或多个特定图像

使用带有-a标志的命令docker images可以找到要删除的图像的ID。这将显示每个图像,包括中间图像层。当您找到要删除的图像时,可以将其ID或标记传递给docker rmi

列表:

代码语言:javascript
复制
docker images -a

去掉:

代码语言:javascript
复制
docker rmi Image Image

删除悬空图像

Docker图像由多个图层组成。悬空图像是与任何标记图像无关的图层。它们不再用于目的并占用磁盘空间。它们可以通过添加具有值dangling=true-f过滤器标志到docker images的命令来定位。如果您确定要删除它们,可以使用以下docker images purge命令:

注意:如果您在不标记图像的情况下构建图像,则图像将显示在悬空图像列表中,因为它与标记图像无关。您可以通过在构建时提供标记来避免这种情况,并且可以使用docker tag命令追溯标记图像。

列表:

代码语言:javascript
复制
docker images -f dangling=true

去掉:

代码语言:javascript
复制
docker images purge

根据图案删除图像

你可以使用组合模式docker imagesgrep找到相匹配的图像。一旦您满意,您可以通过使用awk来删除它们docker rmi。请注意,这些实用程序不是由Docker提供的,并不一定适用于所有系统:

列表:

代码语言:javascript
复制
docker images -a |  grep "pattern"

去掉:

代码语言:javascript
复制
docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

删除所有图像

通过添加-adocker images命令,可以列出系统上的所有Docker映像。一旦确定要全部删除它们,就可以添加-q标志以将图像ID传递给docker rmi

列表:

代码语言:javascript
复制
docker images -a

去掉:

代码语言:javascript
复制
docker rmi $(docker images -a -q)

删除容器

删除一个或多个特定容器

使用带有该-a标志的docker ps命令可以找到要删除的容器的名称或ID:

列表:

代码语言:javascript
复制
docker ps -a

去掉:

代码语言:javascript
复制
docker rm ID_or_Name ID_or_Name

退出时取出容器

如果您知道何时创建容器,一旦完成就不想保留它,您可以运行docker run --rm以在退出时自动删除它。

运行和删除:

代码语言:javascript
复制
docker run --rm image_name

删除所有已退出的容器

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

列表:

代码语言:javascript
复制
docker ps -a -f status=exited

去掉:

代码语言:javascript
复制
docker rm $(docker ps -a -f status=exited -q)

使用多个过滤器移除容器

可以通过使用附加值重复过滤器标志来组合Docker过滤器。这导致满足任一条件的容器列表。例如,如果要删除标记为Created的所有容器(运行具有无效命令的容器时可能导致的状态)或Exited,则可以使用两个过滤器:

列表:

代码语言:javascript
复制
docker ps -a -f status=exited -f status=created

去掉:

代码语言:javascript
复制
docker rm $(docker ps -a -f status=exited -f status=created -q)

根据图案移除容器

您可以使用docker ps和grep的组合找到与模式匹配的所有容器。当您对要删除的列表感到满意时,可以使用awkxargs提供ID给 docker rmi。请注意,这些实用程序不是由Docker提供的,并不一定适用于所有系统:

列表:

代码语言:javascript
复制
docker ps -a |  grep "pattern”

去掉:

代码语言:javascript
复制
docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

停止并移除所有容器

您可以查看系统上的容器docker ps。添加-a标志将显示所有容器。当您确定要删除它们时,可以添加-q标志以向 docker stopdocker rm命令提供ID:

列表:

代码语言:javascript
复制
docker ps -a

去掉:

代码语言:javascript
复制
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

删除卷

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

使用此docker volume ls命令可找到要删除的卷名称。然后,您可以使用以下docker volume rm命令删除一个或多个卷:

列表:

代码语言:javascript
复制
docker volume ls

去掉:

代码语言:javascript
复制
docker volume rm volume_name volume_name

删除悬空卷 - Docker 1.9及更高版本

由于卷的位置与容器无关,因此在移除容器时,不会同时自动删除卷。当卷存在且不再连接到任何容器时,它称为悬空卷。要找到它们以确认您要删除它们,可以使用带过滤器的命令docker volume ls将结果限制为悬空卷。当您对列表感到满意时,可以用docker volume prune将它们全部删除:

列表:

代码语言:javascript
复制
docker volume ls -f dangling=true

去掉:

代码语言:javascript
复制
docker volume prune

删除容器及其容量

如果您创建了一个未命名的卷,则可以将其与具有该-v标志的容器同时删除。请注意,这仅适用于未命名的卷。成功删除容器后,将显示其ID。请注意,没有引用卷的删除。如果未命名,则会以静默方式从系统中删除。如果它被命名,它会默默地保持存在。

去掉:

代码语言:javascript
复制
docker rm -v container_name

结论

本教程介绍了一些用于使用Docker删除图像,容器和卷的常用命令。每个都可以使用许多其他组合和标志。

想要了解更多关于删除Docker镜像,容器和卷的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Remove Docker Images, Containers, and

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
    • 如何使用本教程:
    • 清除所有未使用或悬空的图像,容器,卷和网络
    • 删除Docker镜像
      • 删除一个或多个特定图像
        • 删除悬空图像
          • 根据图案删除图像
            • 删除所有图像
            • 删除容器
              • 删除一个或多个特定容器
                • 退出时取出容器
                  • 删除所有已退出的容器
                    • 使用多个过滤器移除容器
                      • 根据图案移除容器
                        • 停止并移除所有容器
                        • 删除卷
                          • 删除一个或多个特定卷 - Docker 1.9及更高版本
                            • 删除悬空卷 - Docker 1.9及更高版本
                              • 删除容器及其容量
                              • 结论
                              相关产品与服务
                              云服务器
                              云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档