我开始在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
文件夹中手动删除旧图像文件夹是否安全?
答案 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