يبدو أنه لا توجد طريقة بسيطة لإزالة الصور من السجل اعتبارا من اليوم وتبدو وكأنها ميزة للتسجيل 2.1 معلم.
أحد الخيارات ما لدينا اليوم مع هذا لا يعمل
anovil@ubuntu-anovil remove-registry]$ curl -X DELETE localhost:5000/v2/alpine/manifests/v1{"errors":[{"code":"UNSUPPORTED","message":"The operation is unsupported."}]}[anovil@ubuntu-anovil remove-registry]$
هو إزالته يدويا من التسجيل نفسه. فقط لتجنب إزالة ملف خاطئ عن طريق الخطأ، اختبرت ذلك مع هذا السيناريو من جيثب. لا آخذ أي ضمان حول كيفية عمل هذا البرنامج النصي (على الرغم من أنني تحققت منه بسرعة قبل اختباره).
لذا ، قمت بإجراء اختبار ويبدو أنه يعمل :)
[1] أفترض أنك تقوم بتشغيل سجل مع عامل الميناء نفسه.
[anovil@ubuntu-anovil remove-registry]$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES88f8e1a1d7a7 registry:2 "/bin/registry /etc/d" 37 minutes ago Up 37 minutes 0.0.0.0:5000->5000/tcp registry[anovil@ubuntu-anovil remove-registry]$
[2] أنا خلقت الحد الأدنى من دوكيرفيل مع فقط FROM alpine
المحتوى وإنشاء جبال الألب: الإصدار 1 ودفعت إلى السجل الخاص بي يعمل على المضيف المحلي:5000. الاستعلام عنه من التسجيل ، عاد كما هو متوقع.
[anovil@ubuntu-anovil remove-registry]$ curl -X GET localhost:5000/v2/alpine/tags/list{"name":"alpine","tags":["v1"]}[anovil@ubuntu-anovil remove-registry]$
[3] ثم أقوم بتسجيل الدخول إلى السجل باستخدام docker exec
والتحقق من استخدام القرص قبل أن أفعل تجربتي
root@88f8e1a1d7a7:/# du -sch /var/lib/registry/ 2.5M /var/lib/registry/2.5M totalroot@88f8e1a1d7a7:/#
[4] بعد العودة إلى مضيفي ، قمت بنسخ ملف ثقيل (مونغودب.تغز) في حاوية بلدي وخلق نسخة بنيت ودفعت الإصدار 2.
[anovil@ubuntu-anovil remove-registry]$ docker build -t localhost:5000/alpine:v2 .Sending build context to Docker daemon 61.99 MBStep 1 : FROM alpine ---> 2314ad3eeb90Step 2 : COPY mongodb.tgz /mongodb.tgz ---> d7c7645a3fe2Successfully built d7c7645a3fe2[anovil@ubuntu-anovil remove-registry]$ docker push localhost:5000/alpine:v2The push refers to a repository [localhost:5000/alpine] (len: 1)d7c7645a3fe2: Pushed 5ff05309724e: Image already exists v2: digest: sha256:7bea1ec2910170bd88412b622aee6129791673cf1fd8c0e1e34f15ec26428774 size: 4467[anovil@ubuntu-anovil remove-registry]$
[5] بعد التحقق من الحجم مرة أخرى في السجل ، زاد إلى 62 ميغابايت:
root@88f8e1a1d7a7:/# du -sch /var/lib/registry/ 62M /var/lib/registry/62M totalroot@88f8e1a1d7a7:/#
[6] من أجل تشغيل delete_docker_registry_image
، تحتاج إلى الحصول على البرنامج النصي في الحاوية التي تستضيف التسجيل ، خيار واحد للقيام بذلك هو مع حليقة. أيضا ، يتطلب هذا البرنامج النصي jq
.
root@88f8e1a1d7a7:/# apt-get update && apt-get install -y curl jq...root@88f8e1a1d7a7:/#
[7] تشغيل البرنامج النصي ، حاول مع --dry-run
الخيار الأول ولا تنس علامة الإصدار (الإصدار 2 في هذه الحالة) ، هناك أيضا علامة جيدة -h
root@88f8e1a1d7a7:/# delete_docker_registry_image --image alpine:v2 --dry-runDRY_RUN: would have deleted tag directory: repositories/alpine/_manifests/tags/v2DRY_RUN: would have deleted manifest revision: repositories/alpine/_manifests/revisions/sha256/7bea1ec2910170bd88412b622aee6129791673cf1fd8c0e1e34f15ec26428774DRY_RUN: would have deleted directory: blobs/sha256/e2/e2cc9aed084e01fa5cf93c09121035ac4d712113425ae68b678c28591beec5c6DRY_RUN: would have deleted directory: blobs/sha256/7a/7ada67971e952e353ab14d8f9bdd4e41e4c41099b05a5da09f2700b51d93908aDRY_RUN: would have deleted directory: blobs/sha256/7b/7bea1ec2910170bd88412b622aee6129791673cf1fd8c0e1e34f15ec26428774DRY_RUN: would have deleted layer metadata directory: repositories/alpine/_layers/sha256/e2cc9aed084e01fa5cf93c09121035ac4d712113425ae68b678c28591beec5c6root@88f8e1a1d7a7:/# delete_docker_registry_image --image alpine:v2 root@88f8e1a1d7a7:/#
[8] وفويلا !!
root@88f8e1a1d7a7:/# du -sch /var/lib/registry/ 2.5M /var/lib/registry/2.5M totalroot@88f8e1a1d7a7:/#