手动删除旧的Docker镜像是否安全?

时间:2015-05-28 11:57:04

标签: docker

我开始在Docker上工作,我对docker图像有一些疑问。因为每次我创建新图像时我都会从Docker中获取旧图像,但看起来甚至在我运行命令> docker rmi 'IMAGE ID'之后,当我进入/var/lib/docker-registry/images目录时,它仍然是在下面显示了很多图像:

drwxr-xr-x.  2 root root   60 May 14 13:22 65de4a13fc7cf28b4376e65efa31c5c3805e18da4eb01ad0c8b8801f4a10bc16
drwxr-xr-x.  2 root root   60 May 14 13:23 4970b995ce6435831c0e700f7c3ce6363235fbd15333af2dfb60a133ee8e9226
drwxr-xr-x.  2 root root   60 May 18 11:24 edaa232fba2214030847b7f6f57b1c05cf92a7c607332495bfab21738ceb61e1
drwxr-xr-x.  2 root root   60 May 18 16:16 09dab15bb87d1273fce7d786b2443a1d68a6cdcd397443fed4b7ac1bac298d30
drwxr-xr-x.  2 root root   60 May 18 17:20 8a622b1faf8c1df7a1f97e8fa4b841803160a800d04f6af539044f6f22ae9a38
drwxr-xr-x.  2 root root   60 May 19 14:15 b823d1a073894fdb70f7a8846f4d14eb8a2f2842f047a3d8ad847343d576c2e2
drwxr-xr-x.  2 root root   60 May 20 09:38 7c3c8e970803c9487f1f8884eb17603efb442a31b6f2082f3b26592311264e92
drwxr-xr-x.  2 root root   60 May 20 12:31 9d36120c6870e16ff7917b05bbbb84061c70e3135e40b8a10d58b1d6f50b23a3
.....

但是当我运行docker images命令时,它只显示:

root# docker images
REPOSITORY TAG      IMAGE ID      CREATED        VIRTUAL SIZE
Images1    latest   f9a1d33ce592  14 hours ago   2.32 GB
Images2    latest   09dab15bb87d  9 days ago     877.2 MB

所以这是我的问题:如果我在这里出错了,因为它每次运行/var/lib/docker-registry/images时都不会删除docker rmi下的图片文件夹?

如果我可以手动删除/var/lib/docker-registry/images下的图片文件夹?

其他一些信息:

我在/var/lib/docker-registry/repositories/library/目录下发现,其中包含多个图像,其中大部分是我已经使用的> docker rmi要删除,但当我cd进入已删除的图像文件夹时,它包括多个文件:

[/var/lib/docker-registry/repositories/library/deleted-images1]
root# ls -latr
total 20
-rw-r--r--.  1 root root  159 May 27 17:39 taglatest_json
-rw-r--r--.  1 root root   64 May 27 17:39 tag_latest
-rw-r--r--.  1 root root  159 May 27 17:39 json
drwxr-xr-x.  2 root root   75 May 27 17:39 .
-rw-r--r--.  1 root root  304 May 27 17:39 _index_images
drwxr-xr-x. 14 root root 4096 May 28 10:15 ..

在包含不同ID的_index_images文件中:

[{"id": "4970b995..."}, {"id": "65de4a13...."}, {"id": "f9a1d33...."}, {"id": "09dab15...."}]

所以只是想知道这是否导致在运行/var/lib/docker-registry/images时图像文件夹没有从docker rmi目录中删除?

/var/lib/docker-registry/images/var/lib/docker-registry/repositories/library文件夹中手动删除旧图像文件夹是否安全?

3 个答案:

答案 0 :(得分:3)

构建图像时,Dockerfile的每一行都会创建一个中间图像或图层,直到从该图层构建的所有其他图像也被删除为止。您可以使用docker images -a查看所有这些中间图像图层,这些图层应与/var/lib/docker-registry/images的内容相同。 (无论哪种方式,我强烈建议不要手动删除此目录中的条目。)

答案 1 :(得分:0)

您可以尝试使用以下命令。它清除了我的Docker图像列表过于庞大的大部分可见部分

docker images -a | grep '<none>'| awk '{print $3}' | xargs --no-run-if-empty docker rmi

答案 2 :(得分:0)

#!/bin/bash

echo "clean containers ..."
docker ps --filter status=exited -aq | xargs --no-run-if-empty docker rm -vf
echo "clean images ..."
docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi -f