删除Docker镜像、容器和卷的教程指南

 更新时间:2024年10月22日 11:10:44   作者:白如意i  
Docker 可以轻松地将应用程序和服务封装在容器中,以便在任何地方运行,然而,在使用 Docker 的过程中,很容易积累大量未使用的镜像、容器和数据卷,这些会使输出杂乱,并占用磁盘空间,所以本文给大家介绍了如何删除Docker镜像、容器和卷,需要的朋友可以参考下

介绍

Docker 可以轻松地将应用程序和服务封装在容器中,以便在任何地方运行。然而,在使用 Docker 的过程中,很容易积累大量未使用的镜像、容器和数据卷,这些会使输出杂乱,并占用磁盘空间。

Docker 提供了所有必要的工具,可以通过命令行清理系统。这个速查表样式的指南提供了一个快速参考,列出了一些有用的命令,用于释放磁盘空间,并通过删除未使用的 Docker 镜像、容器和卷来保持系统的组织。

如何使用本指南:

  • 本指南采用速查表格式,包含独立的命令行片段。
  • 可直接跳转到与您要完成的任务相关的任何部分。

注意

如果您希望一键部署 Docker 应用程序到实时服务器,请查看 DigitalOcean App Platform。

清理所有未使用或悬空的镜像、容器、卷和网络

Docker 提供了一个单一命令,可以清理任何未使用的资源 —— 包括镜像、容器、卷和网络 —— 它们是“悬空”的(没有标记或与容器关联):

docker system prune

要额外删除任何已停止的容器和所有未使用的镜像(不仅仅是悬空的镜像),请在命令中添加 -a 标志:

docker system prune -a

删除 Docker 镜像

删除一个或多个特定的镜像

使用 docker images 命令和 -a 标志来定位要删除的镜像的 ID。这将显示每个镜像,包括中间镜像层。当您找到要删除的镜像时,可以将它们的 ID 或标记传递给 docker rmi:

列表:

docker images -a

删除:

docker rmi Image Image

删除悬空的镜像

Docker 镜像由多个层组成。悬空镜像是指与任何已标记镜像没有关联的层。它们不再起作用,并占用磁盘空间。可以通过向 docker images 命令添加过滤标志 -f,值为 dangling=true 来定位它们。当您确定要删除它们时,可以使用 docker image prune 命令:

列表:

docker images -f dangling=true

删除:

docker image prune

根据模式删除镜像

您可以使用 docker images 和 grep 的组合来查找与某个模式匹配的所有镜像。一旦您满意,可以使用 awk 将 ID 传递给 docker rmi 来删除它们。请注意,这些实用程序不是由 Docker 提供的,并且不一定在所有系统上都可用:

列表:

docker images -a |  grep "pattern"

删除:

docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

删除所有镜像

可以通过向 docker images 命令添加 -a 来列出系统上的所有 Docker 镜像。一旦您确定要删除它们,可以添加 -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 定位容器,并根据它们的状态进行过滤:created、restarting、running、paused 或 exited。要查看“已退出”容器的列表,使用 -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 rm。请注意,这些实用程序不是由 Docker 提供的,并且不一定在所有系统上都可用:

列表:

docker ps -a | grep "pattern”

删除:

docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm

停止并删除所有容器

您可以使用 docker ps 来查看系统上的容器。添加 -a 标志将显示所有容器。当您确定要删除它们时,您可以添加 -q 标志将 ID 提供给 docker stop 和 docker 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 命令并使用过滤器将结果限制为悬空卷。当您对列表满意时,您可以使用 docker volume prune 删除它们:

列表:

docker volume ls -f dangling=true

删除:

docker volume prune

删除容器及其卷

如果您创建了一个未命名的卷,它可以在删除容器时同时被删除,使用 -v 标志。请注意,这仅适用于 未命名 卷。当容器成功删除时,它的 ID 将被显示。请注意,没有提及删除卷。如果它是未命名的,它将被静默地从系统中删除。如果它有名称,它将静默地保留。

删除:

docker rm -v container_name

结论

本指南涵盖了使用 Docker 删除镜像、容器和卷的一些常用命令。每个命令还有许多其他组合和标志可以使用。要了解可用内容的全面指南,请参阅 Docker 文档中的 docker system prune、docker rmi、docker rm 和 docker volume rm。如果您希望在指南中看到常见的清理任务,请在评论中提出或提出建议。

以上就是删除Docker镜像、容器和卷的教程指南的详细内容,更多关于删除Docker镜像、容器和卷的资料请关注脚本之家其它相关文章!

相关文章

  • Docker遇到Intellij IDEA,Java开发提升了十倍生产力

    Docker遇到Intellij IDEA,Java开发提升了十倍生产力

    这篇文章主要介绍了Docker遇到Intellij IDEA,Java开发提升了十倍生产力,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • docker容器直接退出如何进入容器调试模式

    docker容器直接退出如何进入容器调试模式

    这篇文章主要介绍了docker容器直接退出,如何进入容器调试,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • Docker部署nginx+php环境的全过程(简单可用!)

    Docker部署nginx+php环境的全过程(简单可用!)

    最近在学docker,顺便配置了一下docker中的nginx与php,发现网上的关于docker中配置nginx与php的资料很少,而且有的也很旧,没有太多的参考性,下面这篇文章主要给大家介绍了关于Docker部署nginx+php环境的相关资料,需要的朋友可以参考下
    2023-02-02
  • Dockerfile中的copy命令使用

    Dockerfile中的copy命令使用

    在使用Dockerfile中的copy命令时,如果使用相对路径并且文件不在当前目录下,会导致构建失败,需要使用绝对路径或者将文件移动到Dockerfile所在的目录下
    2025-02-02
  • 详解如何在Docker容器启动时自动运行脚本

    详解如何在Docker容器启动时自动运行脚本

    在使用Docker构建应用程序时,有时我们希望在启动Docker容器时自动执行一些脚本,以初始化应用程序或执行一些必要的操作,下面我们就来看看具体操作吧
    2024-03-03
  • 使用Nexus创建Docker仓库的方法步骤

    使用Nexus创建Docker仓库的方法步骤

    这篇文章主要介绍了使用Nexus创建Docker仓库的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Ubuntu下安装Docker教程

    Ubuntu下安装Docker教程

    Docker是一个开源软件,它可以把一个Linux应用和它所依赖的一切(比如配置文件)都封装到一个容器。然而,Docker与虚拟机不同,它使用了沙箱机制,Docker容器不运行操作系统,它共享主机上的操作系统。下面我将在Ubuntu 15.10安装和使用Docker。
    2016-10-10
  • docker中的jenkins之流水线构建项目步骤详解

    docker中的jenkins之流水线构建项目步骤详解

    jenkins有2种流水线分为声明式流水线与脚本化流水线,脚本化流水线是jenkins旧版本使用的流水线脚本,新版本Jenkins推荐使用声明式流水线,本文给大家介绍docker中的jenkins之流水线构建项目,感兴趣的朋友一起看看吧
    2023-08-08
  • Docker如何查看正在运行的容器目录

    Docker如何查看正在运行的容器目录

    这篇文章主要介绍了Docker如何查看正在运行的容器目录问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 使用OpenSSL生成Kubernetes证书的介绍

    使用OpenSSL生成Kubernetes证书的介绍

    今天小编就为大家分享一篇关于使用OpenSSL生成Kubernetes证书的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01

最新评论