首页 > 解决方案 > Docker 官方私有注册表 - 按标签正确删除图像?

问题描述

所以我写了一个脚本,据说可以通过指定的标签删除图像。从回复来看,它似乎确实删除了它。但目前尚不清楚与它相关的所有内容是否都已删除。

我使用此代码将其删除:

conn.request(
    'DELETE',
    f'/v2/{NAME}/manifests/{TAG}',
    headers={
        'Accept': 'application/vnd.docker.distribution.manifest.v2+json',
        'Authorization': f'Bearer {jwt_token}',
    },
)

如果我再次运行它,我会得到:

b'{"errors":[{"code":"MANIFEST_UNKNOWN","message":"manifest unknown","detail":"s3aws: Path not found: /docker/registry/v2/repositories/myimage/_manifests/tags/feature_docker-hooks-ala"}]}\n'

我尝试docker pull myimage:mytag # mytag is tag I deleted,我得到

Error response from daemon: manifest for focusate/base-toc:feature_docker-hooks-ala not found: manifest unknown: manifest unknown

所以看起来它被删除了。

但如果我去我hub.docker.com

我仍然看到它,就像它没有被删除一样:

在此处输入图像描述

我想也许它被缓存了,但即使在隐身模式下使用浏览器,它仍然会出现。所以我想知道,我是按标签正确删除图像还是留下了一些东西,所以数据仍然显示在注册表上。

如果这些信息被永久保存,因为我希望它被自动清理(只保留相关图像),它有点笨拙。也许有一些定期进行的垃圾收集,我只需要等待?

标签: dockerdocker-registry

解决方案


推荐阅读