Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker注册表垃圾收集器不删除层_Docker - Fatal编程技术网

Docker注册表垃圾收集器不删除层

Docker注册表垃圾收集器不删除层,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并删除它们 它看起来不错,但当我再次将同一个图像推送到注册

所以我有私有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.yaml

 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之后找到从缓存中清除层的方法。

请遵循这个步骤,一个长时间的讨论正在进行中。请跟随它请跟随这个脚步,一个长的讨论正在进行。请跟着它