إزالة صورة عامل الميناء في التسجيل عن طريق إزالة الملفات / المجلدات على الخادم

لدي المشكلة التالية مع حذف صورة أو علامة في عامل الميناء-التسجيل الإصدار 2:

لدي الخادم الذي يدير عامل الميناء التسجيل. أنا خلقت صورة ودفعت ذلك ، أن أريد الآن أن يكون قد انتهى. الآن أريد إزالة الصورة (أو على الأقل العلامة ، إذا كانت الصورة مستحيلة).

لا يدعم إصدار الواجهة الأمامية الحالي مثل هذه الوظيفة.

حاولت ذلك عن طريق curl -u MY_USERNAME -X DELETE MY_DOMAIN:PORT/v2/IMAGE_NAME/manifests/REFERENCE القيادة ، مثل HTTP API reference الدول ، وأدخل كلمة المرور ، ولكن أدى التنفيذ في سطر فارغ ، أي خطأ مصادقة (يتم تنشيط المصادقة) أو رسالة النجاح. العلامة لا تزال متاحة.

منذ لدي حق الوصول إلى الخادم، خطرت لي الفكرة التالية: هل يمكنني ببساطة وسافيلي فقط إزالة المجلد v2/repositories/IMAGE_NAME/_manifests/tags/VERSION (أو ملف آخر / مجلد)? أم أن يؤدي إلى كسر التسجيل? ما هي الخطوات الأولية, مثل إيقاف خدمة التسجيل, لا بد لي من القيام به?

نعم ، لم يجعلوا ذلك سهلا ولا يزال غير مثالي ، لكن واجهة برمجة تطبيقات التسجيل الإصدار 2 لديها الآن القدرة على حذف الصور.

هل يمكنني ببساطة وبسهولة إزالة المجلد الإصدار 2 / المستودعات / اسم الصورة / _المظاهر / العلامات / الإصدار

يتم تخزين بيانات الصورة الفعلية في دليل النقط على القرص ولكن يتم مشاركتها بين كشوف مختلفة لذلك ليس من الآمن فقط تطهير هذا الدليل إلا إذا كنت قد نظرت في جميع الصور التي قد تشترك في النقط.

فيما يلي طريقة حذف صورة باستخدام واجهة برمجة تطبيقات عامل الإرساء الإصدار 2:

أولا ، يجب أن يكون السجل الخاص بك قد تم تمكين الحذف. إما تعيين إنف فار:

REGISTRY_STORAGE_DELETE_ENABLED: "true"

أو في التكوين.يمل يجب أن تحدد

storage:  delete:    enabled: true

بعد ذلك ، قم بتشغيل الحذف عبر مكالمات واجهة برمجة التطبيقات (يمكنك اختبار بسهولة عن طريق ساعي البريد أو مجرد استخدام حليقة / الخ)

ملاحظة: في المكالمات أدناه ، أضف "Accept: application/vnd.docker.distribution.manifest.v2+json" إلى رأس هتب

  1. جمع ملخص الصورة:

    HEAD https://myprivateregistry:5001/v2/<image_name>/manifests/<image_tag>

    تقوم هذه المكالمة بإرجاع مفتاح الرأس Docker-Content-Digest مع قيمة مثل هذا: sha256:b57z31xyz0f616e65f106b424f4ef29185fbd80833255d79dabc73b8eb873bd

  2. باستخدام هذه القيمة من الخطوة 2 ، قم بتشغيل DELETE هتب كول:

    DELETE https://myprivateregistry:5001/v2/<image_name>/manifests/sha256:b57z31xyz0f616e65f106b424f4ef29185fbd80833255d79dabc73b8eb873bd

    عوائد واجهة برمجة التطبيقات 202 Accepted

  3. قم بتشغيل مجموعة البيانات المهملة يدويا إذا كنت لا ترغب في انتظار تشغيلها المجدول التالي: registry garbage-collect /etc/docker/registry/config.yml

    مثال إذا تشغيل التسجيل كحاوية: docker exec -t registry-test ./bin/registry garbage-collect /etc/docker/registry/config.yml

    جامع القمامة حذف النقط المرتبطة بها ويظهر من القرص بالنسبة لك.

عند هذه النقطة الصورة: يتم حذف العلامة تماما من القرص ويتم تطهيرها من التسجيل. يتم حذف النقط وسترى البيانات ذهب من v2/repositories/<image_name>/_manifests

ملاحظة: إذا كانت هذه هي الصورة الأخيرة في الريبو الخاص بك ، فلا يزال يتعين عليك حذف قائمة الريبو يدويا من القرص (v2/repositories/<image_name>/_layers)- ولكن هذا هو مجرد الفوقية. تمت إزالة بيانات الصورة الفعلية بالفعل. أعتقد أن هذا قد يكون خطأ في جامع القمامة. لدي سؤال حول هذا الموضوع هنا: عامل الميناء التسجيل الخاص-حذف جميع الصور ، ولكن لا تزال تظهر في الكتالوج

مزيد من التفاصيل:

https://docs.docker.com/registry/spec/api/#deleting-an-imagehttps://jsosic.wordpress.com/2017/01/23/deleting-images-from-docker-registry/