Docker使用Prune命令清理none镜像_docker

本文主要介绍了Docker使用Prune命令清理none镜像,文中通过示例代码介绍的非常详细,具有一

Docker使用Prune命令清理none镜像_docker

本文主要介绍了Docker使用Prune命令清理none镜像,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

目录

none镜像的产生和困惑
如何清理none对象
修剪镜像
清理无容器使用的镜像
修剪容器
修剪卷
修剪网络
修剪一切

none镜像的产生和困惑

我们偶尔会看到 none镜像(虚悬镜像),那是因为

构建镜像过程中因为脚本错误导致很多镜像构建终止,产生很多none标签的版本
手动构建镜像的时候没有进行提交,遗留来的垃圾镜像
这些镜像占据较大的存储空间,需要删除

如下所示

root@instance-o70no2nw:~# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 867c2dc0031b 12 hours ago 465MB
mytomcat 8.5.0 34c8c864d046 12 hours ago 465MB
ubuntu 16.04 a3551444fc85 2 days ago 119MB
mysql 8.0.16 d72169616e20 4 days ago 443MB
mysql latest d72169616e20 4 days ago 443MB
tomcat latest 5a069ba3df4d 2 weeks ago 465MB

如何清理none对象

Docker 采用保守的方法来清理未使用的对象(通常称为“垃圾回收”),例如镜像、容器、卷和网络:
除非明确要求 Docker 这样做,否则通常不会删除这些对象。这可能会导致 Docker 使用额外的磁盘空间。
对于每种类型的对象,Docker 都提供了一条 prune 命令。
另外,可以使用 docker system prune一次清理多种类型的对象。本主题讲解如何使用这些 prune 修剪命令

修剪镜像

清理none镜像(虚悬镜像)
命令: docker image prune
默认情况下,docker image prune 命令只会清理 虚无镜像(没被标记且没被其它任何镜像引用的镜像)

root@instance-o70no2nw:~# docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

清理无容器使用的镜像

命令: docker image prune -a

默认情况下,系统会提示是否继续。要绕过提示,请使用 -f 或 –force 标志。
可以使用 –filter 标志使用过滤表达式来限制修剪哪些镜像。例如,只考虑 24 小时前创建的镜像:

$ docker image prune -a –filter \”until=24h\”

修剪容器

停止容器后不会自动删除这个容器,除非在启动容器的时候指定了 –rm 标志。使用 docker ps -a 命令查看 Docker 主机上包含停止的容器在内的所有容器。你可能会对存在这么多容器感到惊讶,尤其是在开发环境。停止状态的容器的可写层仍然占用磁盘空间。要清理掉这些,可以使用 docker container prune 命令:

$ docker container prune

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

默认情况下,系统会提示是否继续。要绕过提示,请使用 -f 或 –force 标志。

默认情况下,所有停止状态的容器会被删除。可以使用 –filter 标志来限制范围。例如,下面的命令只会删除 24 小时之前创建的停止状态的容器:

修剪卷

卷可以被一个或多个容器使用,并占用 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

修剪网络

Docker 网络不会占用太多磁盘空间,但是它们会创建 iptables 规则,桥接网络设备和路由表条目。要清理这些东西,可以使用 docker network prune 来清理没有被容器未使用的网络。

$ docker network prune

修剪一切

docker system prune 命令是修剪镜像、容器和网络的快捷方式。在 Docker 17.06.0 及以前版本中,还好修剪卷。在 Docker 17.06.1 及更高版本中必须为 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

如果使用 Docker 17.06.1 或更高版本,同时也想修剪卷,使用 –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

到此这篇关于Docker使用Prune命令清理none镜像的文章就介绍到这了,更多相关Docker 清理none镜像 内容请搜索3399IT网以前的文章或继续浏览下面的相关文章希望大家以后多多支持3399IT网!

本文为网络共享文章,如有侵权请联系邮箱485837881@qq.com

作者: Kerry的天空

为您推荐

返回顶部