从Private Docker Registry中删除镜像的方法

jdg4fx2g  于 2023-10-16  发布在  Docker
关注(0)|答案(3)|浏览(149)

我有一个私人Docker注册表设置,我已经从其他机器推了一些图像到这个注册表。V2注册表我不知道一种新颖的方法来删除存储库中的图像,因为这些推送的图像不会在CLI中列出“docker images”。
谁能告诉我从磁盘中删除这些图像的正确方法?
感谢你的回答。
谢谢

ar5n3qh5

ar5n3qh51#

我对其他问题也给出了同样的答案。或许对你有用。
我也遇到了同样的问题,我的注册表,然后我尝试了下面列出的解决方案从博客页面。有时灵

第一步:目录列表

您可以通过调用以下URL来列出您的目录:

http://YourPrivateRegistyIP:5000/v2/_catalog

回复将采用以下格式:

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

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

您可以通过调用以下URL来列出目录的标签:

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

回复将采用以下格式:

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

}

第三步:列出相关标签的manifest值

你可以在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

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

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

第四步:删除已标记的清单

在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
4ngedf3f

4ngedf3f2#

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

nqwrtyyt

nqwrtyyt3#

你可以使用dredge-tool(https://github.com/anthonyoteri/dredge/releases)来完成这个任务。

dredge my.private.registry:5000 delete myimage mytag

相关问题