即使在删除所有图像后,docker pull在pull过程中始终显示图层“已存在

xqk2d5yq  于 2023-02-07  发布在  Docker
关注(0)|答案(9)|浏览(238)

下面是我输入和输出:

shshenhx@shshenhx:~/Desktop/Docker$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
python              latest              336d482502ab        4 days ago          692 MB

shshenhx@shshenhx:~/Desktop/Docker$ docker rmi 336
Untagged: python:latest
Untagged: python@sha256:bf0718e2882cabc144c9c07d758b09c65efc104a6ddc72a9a976f8b26f67c2ee
Deleted: sha256:336d482502ab564b0b2964b2ed037529ba40c7b4ade2117ca11d74edbf11f99e
Deleted: sha256:1e2f72b0bf844de7bfe57a32115b660770355843ef8078fb55629e720147e6a9
Deleted: sha256:b5818ba96f33835318f3e9d7b4094e1007be247f04ab931ea9ef83b45b451f90
Deleted: sha256:0c2d7cafdab1084ebbd0112b3bedf76458ae6809686fb0ad9bae8022f11c3a84

shshenhx@shshenhx:~/Desktop/Docker$ docker pull python
Using default tag: latest
latest: Pulling from library/python
4176fe04cefe: Already exists 
851356ecf618: Already exists 
6115379c7b49: Already exists 
aaf7d781d601: Already exists 
40cf661a3cc4: Already exists 
975fe2fd635f: Pull complete 
bf4db784e7fd: Pull complete 
0491f7e9426b: Pull complete 
Digest: sha256:bf0718e2882cabc144c9c07d758b09c65efc104a6ddc72a9a976f8b26f67c2ee
Status: Downloaded newer image for python:latest

我的问题是,我已经有了python的图片,为什么它仍然显示已经存在的一些层?我怎样才能完全删除所有的python层。谢谢。

yftpprvb

yftpprvb1#

对于感兴趣的人:(1)使用命令行;(2)仅移除已经用docker rmi移除的图像的高速缓存(即,用docker images --all不可见),但是对于其高速缓存仍然存在,并且对于其Already exists在拉取图像时显示层;您可以尝试以下命令:

docker builder prune

(It运行此命令可能需要15分钟,请耐心等待。)
这个命令似乎为我解决了这个问题。我不想使用通用的“系统范围”prune/purge/ clean docker命令和功能,因为我有一些映像和容器正在运行(与我已经删除的映像无关),我希望它们保持原样。
溶液来源:https://forums.docker.com/t/how-to-delete-cache/5753/7
我认为使用docker rmi删除的图像的“不可见”缓存层的情况可能是由于使用docker compose的事实而发生的(正如John Doe在他对当前问题的一个答案的评论中所建议的:即使删除所有图像后,Docker pull在pull过程中始终显示图层“已存在”)。

dnph8jn4

dnph8jn42#

请尝试此命令docker rmi 336d482502ab,然后再次尝试拉入。

66bbxpm5

66bbxpm53#

对我有帮助的是在删除所有容器和图像后运行docker-system prune。所以我让它工作的整个过程是:
1.取出所有容器docker rm -vf $(docker ps -a -q)
1.删除所有图像docker rmi -f $(docker images -a -q)
1.使用docker system prune修剪系统

disbfnqx

disbfnqx4#

从Docker图像命令的引用
Docker映像具有中间层,通过允许缓存每个步骤来提高可重用性、减少磁盘使用并加快Docker构建速度。默认情况下不显示这些中间层。
可能那些Already exists是中间层。默认情况下,当你运行docker images时,它们是隐藏的,请尝试docker images --all

jtw3ybtb

jtw3ybtb5#

Docker在Docker Jmeter 板上有一个解决方案,只需按下下面的按钮并按下即可!(这是在故障排除部分。或错误图标)x1c 0d1x

t5fffqht

t5fffqht6#

因此,经过大量的搜索,我有一个 * 解决方案 *,虽然我不认为这一定是一个伟大的。
“大锤解决办法”将是:

rm -rf /var/lib/docker

这基本上是工厂重置Docker,所以你会失去一切。这对我的情况来说很好,但是***在使用这个之前要非常小心,仔细考虑一下。***

wwodge7n

wwodge7n7#

有一个docker命令可以删除没有关联运行容器的图像:

  • docker image prune

允许您清理悬挂图像(悬挂图像未被标记且未被任何容器引用)

  • docker image prune -a

将删除未被任何现有容器使用的所有图像

  • docker image prune -a --filter "until=48h"

您可以添加筛选器(--filter)来限制要删除的映像,如本例所示,仅删除超过48小时的映像
您可以添加-f或--force标志来修剪映像,而不提示确认
您可以在计划的bash脚本中使用此命令来保持驱动器整洁

rn0zuynd

rn0zuynd8#

docker system prune -a帮了我的忙,它会同时删除未使用和悬空的图像。

pb3s4cty

pb3s4cty9#

你可以使用docker system prune,但它会清除docker中的所有内容。这不是图像问题,实际上是缓存问题,所以删除图像不会起作用,因为问题依赖于层缓存。在docker build中有一个--no-cache标志,但我不知道它是否也适用于docker pull。

相关问题