Docker注册表垃圾收集器不删除层
所以我有私有docker注册表,我想做的就是能够删除清单和悬空层。 我正在做的是在Registry API中查找清单摘要,然后在/v2/NAME/manifests/SHA256上发送DELETE,它工作得非常好。然后我通过docker exec-it CONTAINERID bin/registry garbage collect-m/etc/docker/registry/config.yml运行垃圾收集器 GC发现一些松散的blob并删除它们 它看起来不错,但当我再次将同一个图像推送到注册表时,它显示层已经存在,并且我无法从注册表中提取此图像。 当我尝试从API获取清单时,标记在标记列表上,但GET/v2/NAME/manifests/tag返回404 这是我的docker-compose.yamlDocker注册表垃圾收集器不删除层,docker,Docker,所以我有私有docker注册表,我想做的就是能够删除清单和悬空层。 我正在做的是在Registry API中查找清单摘要,然后在/v2/NAME/manifests/SHA256上发送DELETE,它工作得非常好。然后我通过docker exec-it CONTAINERID bin/registry garbage collect-m/etc/docker/registry/config.yml运行垃圾收集器 GC发现一些松散的blob并删除它们 它看起来不错,但当我再次将同一个图像推送到注册
registry:
restart: always
image: registry:2
ports:
- 5000:5000
environment:
REGISTRY_STORAGE_DELETE_ENABLED: "true"
volumes:
- /var/lib/registry:/var/lib/registry
和config.yaml
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
我找到了一个答案,也许这不是最好的解决方案,但它是有效的。
问题是保存层的storage.cache。当我从config.yaml中删除这些部分时,一切都正常工作。如果您需要缓存,那么您应该在GC之后找到从缓存中清除层的方法。我找到了一个答案,也许这不是最好的解决方案,但它很有效。
问题是保存层的storage.cache。当我从config.yaml中删除这些部分时,一切都正常工作。若你们需要缓存,那个么你们应该在GC之后找到从缓存中清除层的方法。请遵循这个步骤,一个长时间的讨论正在进行中。请跟随它请跟随这个脚步,一个长的讨论正在进行。请跟着它