背景偶然发现服务器上有很多镜像占用了很多空间,想打扫。
直接删除结果错误:
docker RMI 8f 5116 CBC 201 errorresponsefromdaemon : conflict 3360 unabletodelete 8f 5116 CBC 201 (cannotbeforced )-imagehasdepependendendedended
而且互联网的需求方式,主流的方法有两种
方法1 :强制删除镜像
docker RMI-f8f 5116 CBC 201 errorresponsefromdaemon : conflict : unabletodelete 8f 5116 CBC 201 (cannotbeforced )-imagehasdepepeped
以失败告终。 请参阅。 请参阅。
方法2 )批量删除容器并删除镜像#所有容器文档生成器PS-a|grep ' exited '|awk ' { print $1} '|xargsdockerstop #所有容器文档生成器PS-a 删除所有none镜像docker images ' {打印$3} '|xargsdockerrmi仍以失败告终。 请参阅。 请参阅。 请参阅。 请参阅。
原因
经过长时间搜索,发现是TAG的问题造成的。 也就是说,其他image FROM创建了这个image。 可以使用以下命令列出指定image后创建的所有image的父image
http://www.Sina.com/http://www.Sina.com /
方案# XXX指向镜像ID
先查询依赖
docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=XXX)
然后根据根据TAG删除容器
docker rm REPOSITORY:TAGdocker none镜像
有效的none镜像
Docker文件系统配置。 Docker镜像由许多层组成,每个层之间存在父子关系。 默认情况下,所有Docker文件系统层都存储在/var/lib/Docker/graph目录中,Docker称为层数据库。
最后总结的none: none镜像是中间镜像。 尝试使用文档图像- a。 他们不会引起硬盘可用空间的问题(因为这是镜像的父层,所以必须存在),但他们会犹豫不决。
无效的none镜像
另一种类型的none: none镜像是dangling images,该类型会导致磁盘空间占用问题。
像Java和Golang这样的编程语言有内存区域,代码与此内存区域没有关联。 由于这些语言的垃圾回收优先回收该区域的空间,并返回堆存储器,因此该存储器区域对于之后的存储器分配是有用的
docker的悬挂文件系统与上述原理相似,但他没有被使用,也没有与镜像相关联。 因此,需要一种清理这些漂浮的镜子的机制。
我们已经提到了有效的none镜像。 他们是中层。 无效的none镜像如何出现? 这些dangling镜像主要是通过触发docker build和docker pull命令生成的。
可以使用以下命令进行清理
文档RMI $ (文档图像- f“dangling=true”- q ) )
docker没有自动垃圾回收处理机制,将来这一点可能会得到改善,但目前只能这样手动进行清理。
转载于:https://www.cn blogs.com/111 testing/p/11208086.html