2 votos

Ventana acoplable Privado en el Registro Borrado de todas las imágenes, pero que sigue mostrando en el catálogo

Siguiendo la documentación oficial (https://docs.docker.com/registry/spec/api/#deleting-an-image) he sido capaz de borrar una imagen. Como era de esperar, tras la eliminación, la imagen no puede ser tirado ni su manifiesto llamado a través de la API.

Me siento como tengo la parte más difícil de hacer, sin embargo el problema es que la caución es todavía bajo /v2/_catalog después de la eliminación es terminado. Estoy tratando de eliminar completamente el registro.

Aquí está mi registro componer archivo:

registry:
  image: registry:2.5.2
  container_name: registry-test
  ports:
    - 5007:5000
  environment:
    REGISTRY_STORAGE: s3
    REGISTRY_HTTP_TLS_CERTIFICATE: /etc/cert.crt
    REGISTRY_HTTP_TLS_KEY: /etc/cert.key
    REGISTRY_STORAGE_S3_ACCESSKEY: ******
    REGISTRY_STORAGE_S3_SECRETKEY: ******
    REGISTRY_STORAGE_S3_REGION: us-west-1
    REGISTRY_STORAGE_S3_BUCKET: ******
    REGISTRY_STORAGE_S3_SECURE: "true"
    REGISTRY_STORAGE_DELETE_ENABLED: "true"
  volumes:
    - /dockerdata/volumes/registry-test/etc/cert.crt:/etc/cert.crt
    - /dockerdata/volumes/registry-test/etc/cert.key:/etc/cert.key
  restart: unless-stopped

Aquí es el alto nivel de método en lo que hice para eliminar la imagen:

  1. Recoger la imagen de digerir: HEAD https://myprivateregistry:5001/v2/myimage/manifests/mytag con "Accept: application/vnd.docker.distribution.manifest.v2+json" añadido a la cabecera de la llamada

  2. La llamada devuelve el encabezado clave Docker-Content-Digest con un valor, por ejemplo sha256:b57z31xyz0f616e65f106b424f4ef29185fbd80833255d79dabc73b8eb873bd

  3. El uso de ese valor desde el paso 2, se ejecuta la eliminación de la llamada: DELETE https://myprivateregistry:5001/v2/myimage/manifests/sha256:b57z31xyz0f616e65f106b424f4ef29185fbd80833255d79dabc73b8eb873bd

  4. Registro de la API devuelve 202 Accepted

  5. Ejecutar la recolección de basura de forma manual: registry garbage-collect /etc/docker/registry/config.yml

  6. El recolector de basura se elimina el asociado blobs de disco (registro se omite aquí, pero con éxito elimina las manchas)

En este punto me puede confirmar los blobs son completamente eliminados desde el disco y ya no puedo llamar a los detalles de la imagen (como en el paso 1 de arriba) , así que pensé que estaba hecho.

Sin embargo, al ejecutar: /v2/_catalog mi asociados repo todavía las listas (aunque no hay imágenes dentro de ella)! Obviamente no se puede extraer o utilizar, pero ¿cómo puedo eliminar por completo de que repo de esa lista ahora que no tiene imágenes asociadas con ella?

Yo no veo por ninguna parte cómo correctamente quitar este sobre la documentación de la API de la página. Tal vez me estoy perdiendo alguna parte?

EDITAR -

Quería añadir algo más de información sobre cómo el registro se ve el antes y el después de la eliminación se lleva a cabo.

Antes de la Operación de eliminación de Arriba:

docker/registry/v2/repositories/myimage/_manifests/revisions/...
docker/registry/v2/repositories/myimage/_manifests/tags/... 
docker/registry/v2/repositories/myimage/_layers/sha256/... (5 layers listed)
docker/registry/v2/blobs/sha256/...

Después de la Operación de eliminación de Arriba:

docker/registry/v2/repositories/myimage/_layers/sha256/... (5 layers listed)

Así que lo único que permanece es el _layers directorio con el mismo 5x capas indicadas. Esta parece ser la razón por la que todavía figura en _catalog

Cuando borro el myimage carpeta (de docker/registry/v2/repositories/myimage), a continuación, el repositorio ya no aparece en la _catalog

Este parece ser un método para la purga de la _catalog listado. Sin embargo, ¿qué pasa si una imagen tiene 2x etiquetas, sin embargo, sólo 1 se elimina - hay una razón para eliminar cualquier cosa de _layers en ese caso? Cómo tendría que ser manejado con varias versiones de una imagen? Obviamente que no puedo darle una paliza a la _layers directorio como el último método, ya que, en el mundo real, habrá muchos etiquetados versiones de una imagen. Así que esto debe hacerse de forma inteligente.

Simplemente estoy encontrando difícil de encontrar ninguna documentación sobre el mantenimiento y limpieza de la ventana acoplable registro ni el esquema de la _layers subdirectorio y por qué el recolector de basura no se limpia hasta que el directorio de la misma se hace con los manifiestos y notas.

1voto

bgStack15 Puntos 209

Mi investigación se llevó a cabo contra la ventana acoplable CE 17.03 el pasado mes de noviembre, y ni siquiera me acuerdo de un comando de borrado, de modo que ha habido algunas mejoras!

Recuerdo que cuando yo estaba manualmente la eliminación de elementos de la secretaría de que yo podría hacer entradas inutilizable. Pero para llegar a ser verdaderamente eliminado de la _catalog, tuve que reiniciar el registro de contenedor.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: