从私有 Docker 注册表中删除镜像的方法

问题描述 投票:0回答:4

我设置了一个私有 Docker 注册表,并且我已将一些映像从其他计算机推送到此注册表。 它是一个 V2 注册表。 我不知道从存储库中删除图像的新方法,因为这些推送的图像没有在 CLI 中列出“docker 图像”。

任何人都可以建议我从磁盘中删除这些图像的正确方法吗?

非常感谢您的回答。

谢谢

docker registry containers docker-registry
4个回答
8
投票

我已经对其他问题发布了相同的答案。也许它对你有用。


我的注册表也遇到了同样的问题,然后我从博客页面尝试了下面列出的解决方案。有用。

第 1 步:列出目录

您可以通过调用此网址列出您的目录:

http://YourPrivateRegistyIP:5000/v2/_catalog

回复将采用以下格式:

{
  "repositories": [
    <name>,
    ...
  ]
}

第2步:列出相关目录的标签

您可以通过调用此网址列出目录的标签:

http://YourPrivateRegistyIP:5000/v2/<name>/tags/list

回复将采用以下格式:

{
"name": <name>,
"tags": [
    <tag>,
    ...
]

}

第 3 步:列出相关标签的清单值

您可以在 docker 注册表容器中运行此命令:

curl -v --silent -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X GET http://localhost:5000/v2/<name>/manifests/<tag> 2>&1 | grep Docker-Content-Digest | awk '{print ($3)}'

回复将采用以下格式:

sha256:6de813fb93debd551ea6781e90b02f1f93efab9d882a6cd06bbd96a07188b073

使用清单值运行下面给出的命令:

curl -v --silent -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X DELETE http://127.0.0.1:5000/v2/<name>/manifests/sha256:6de813fb93debd551ea6781e90b02f1f93efab9d882a6cd06bbd96a07188b073

第 4 步:删除标记的清单

在 docker registy 容器中运行此命令:

bin/registry garbage-collect  /etc/docker/registry/config.yml  

这是我的config.yml

root@c695814325f4:/etc# cat /etc/docker/registry/config.yml
version: 0.1
log:
  fields:
  service: registry
storage:
    cache:
        blobdescriptor: inmemory
    filesystem:
        rootdirectory: /var/lib/registry
    delete:
        enabled: true
http:
    addr: :5000
    headers:
        X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3

0
投票

目前,如果没有外部工具,您无法从 docker 注册表中删除映像。最简单的方法是使用 this 脚本来执行此操作,请记住它确实需要停机时间。


0
投票

您可以使用 dredge-tool 来完成此操作,(https://github.com/anthonyoteri/dredge/releases

dredge my.private.registry:5000 delete myimage mytag

0
投票

要释放已删除图像占用的空间,我们需要删除存储库,然后运行垃圾收集器。 您需要登录 v2 注册表:

docker exec -it [docker_registry_container_id] /bin/sh

存储库位于:/var/lib/registry/docker/registry/v2/repositories。

删除你想要的,然后运行GC。

© www.soinside.com 2019 - 2024. All rights reserved.