Docker修剪未使用对象

简介: Docker 采用保守的方法来清理未使用的对象,例如镜像(Image)、容器(Container)、数据卷(volume)和网络(Network)。也就是说,除非您明确告诉 Docker 这样做,否则每个对象都永远不会被删除。结果导致了 Docker 最终使用了大量的磁盘空间。对于每种类型的对象,Docker 都提供了一个 prune(删除)命令。此外,您可以一次清理多个对象类型。本主题介绍如何使用每个命令。

Docker修剪未使用对象

Docker 采用保守的方法来清理未使用的对象,例如镜像(Image)、容器(Container)、数据卷(volume)和网络(Network)。也就是说,除非您明确告诉 Docker 这样做,否则每个对象都永远不会被删除。结果导致了 Docker 最终使用了大量的磁盘空间。对于每种类型的对象,Docker 都提供了一个 prune(删除)命令。此外,您可以一次清理多个对象类型。本主题介绍如何使用每个命令。

镜像(Image)修剪

docker image prune该命令可以清理未使用的镜像。默认情况下,该命令仅删除挂起的镜像。挂起的镜像是没有标签且不被其他容器引用的镜像。要删除挂起的镜像,只需要键入:docker image prune

$ docker image prune

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y

--a参数,可以删除掉所有未使用的镜像。

$ docker image prune -a

WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y

默认情况下,它会询问您是否要继续。要跳过此检查,请使用-f--force参数。

您可以使用带有--filter参数的过滤表达式来选择性删除不需要的镜像。

$ docker image prune -a --filter "until=24h"

还可以使用其他过滤表达式。相关的更多示例,请参阅 docker image prune 参考

容器(Container)修剪

当您停止容器时,它不会自动删除,除非您使用--rm参数来启动它。所以,当您使用docker ps -a命令查看 Docker 主机上的所有容器(包括已停止的容器),您会对容器的数量感到惊讶。尤其是在开发系统上!停止的容器中的Overlay将会继续消耗磁盘空间。这时候,请使用docker container prune命令来清理它们。

$ docker container prune

WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y

数据卷(volume)修剪

数据卷由一个或多个容器使用,并占用 Docker 主机上的磁盘空间。删除卷会使得数据破坏,所以它并不会自动删除。

$ docker volume prune

WARNING! This will remove all volumes not used by at least one container.
Are you sure you want to continue? [y/N] y

默认情况下,它会显示确认提示。如果您不想使用此提示,请使用-f--force标志。

默认情况下,所有未使用的卷都会被删除。

--filter参数可以用来限制删除的范围。例如,以下命令中的keep意味着将仅删除未标记的卷。

$ docker volume prune --filter "label!=keep"

还可以使用其他过滤表达式。相关的更多示例,请参阅docker volume prune 参考

网络(Network)修剪

Docker 网络不消耗磁盘空间,但它会创建iptables防火墙规则、桥接网络设备和路由表条目。要清理它们,请使用docker network prune命令从容器中清理未使用的网络。

$ docker network prune

WARNING! This will remove all networks not used by at least one container.
Are you sure you want to continue? [y/N] y

默认情况下,它会显示确认提示。如果您不想使用此提示,请使用-f--force参数。

默认情况下,所有未使用的网络都会被删除。

--filter参数可以用来限制删除的范围。例如,以下命令将仅删除超过 24 小时的网络。

$ docker network prune --filter "until=24h"

您还可以使用其他过滤表达式。相关的更多示例,请参阅docker network prune 参考

修剪所有

docker system prune命令是修剪镜像、容器和网络的快捷方式。默认情况下不会删除卷,因此您必须在docker system prune命令当中使用--volumes来删除它们。

$ docker system prune

WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all build cache
Are you sure you want to continue? [y/N] y

如果您还想删除该卷,请使用--volumes参数。

$ docker system prune --volumes

WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all volumes not used by at least one container
        - all dangling images
        - all build cache
Are you sure you want to continue? [y/N] y

默认情况下,它会显示确认提示。如果您不想使用此提示,请使用-f--force参数。

原文地址

使用していない Docker オブジェクトの削除(prune)

目录
相关文章
|
6月前
|
存储 Docker 容器
Docker安装默认存储路径修改与镜像恢复
Docker安装默认存储路径修改与镜像恢复
222 0
|
Java 测试技术 API
解决harbor上删除镜像不释放空间,无需停止harbor
解决harbor上删除镜像不释放空间 docker镜像仓库中镜像的清理,一直是个比较麻烦的事情。尤其是在测试环境当中,每天都会有大量的构建。由此会产生大量的历史镜像,而这些镜像,大多数都没有用。
1892 0
|
存储 Shell 网络安全
|
4天前
|
安全 JavaScript Docker
修改docker镜像版本,容器大小缩小10%!
`shigen`,一位专注于Java、Python、Vue和Shell的博主,分享其通过修改Docker镜像版本实现容器瘦身的技巧。将服务从`1.0.0`更新至`1.0.1`,基于Alpine版Docker镜像,容器体积减小至原来的10%。文章展示了问题背景、选择轻量级镜像的原因及步骤,包括Docker镜像版本对比、构建和启动新容器的过程,并证实功能未受影响。`file-server`更新将发布在GitHub上,期待用户试用。一起学习,每天进步!
18 2
修改docker镜像版本,容器大小缩小10%!
|
9月前
|
存储 关系型数据库 MySQL
【Docker】容器操作与数据卷(二)(下)
【Docker】容器操作与数据卷(二)(下)
111 1
|
7月前
|
程序员 数据安全/隐私保护 开发者
Docker中容器的随机命名方式
Docker中容器的随机命名方式
70 0
|
8月前
|
安全 Linux 虚拟化
【Docker】Docker中network的概要、常用命令、网络模式以及底层ip和容器映射变化的详细讲解
【Docker】Docker中network的概要、常用命令、网络模式以及底层ip和容器映射变化的详细讲解
1199 0
|
8月前
|
存储 运维 虚拟化
更改docker存储路径
更改docker存储路径
311 0
|
9月前
|
JSON Shell Linux
Docker 命令和组合操作指南
Docker 命令和组合操作指南
77 0
|
9月前
|
应用服务中间件 Linux Shell
【Docker】容器操作与数据卷(二)(上)
【Docker】容器操作与数据卷(二)
79 1