আজকে রেজিস্ট্রি থেকে চিত্রগুলি অপসারণ করার কোনও সহজ পদ্ধতি নেই বলে মনে হয় এবং এটি 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 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
88f8e1a1d7a7 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 total
root@88f8e1a1d7a7:/#
[4] আমার হোস্টে ফিরে আসার পরে আমি আমার ধারকটিতে একটি ভারী ফাইল (মংডোডবি.টিজিজেড) অনুলিপি করে একটি বিল্ট এবং পুশড ভার্সন ভি 2 তৈরি করেছি।
[anovil@ubuntu-anovil remove-registry]$ docker build -t localhost:5000/alpine:v2 .
Sending build context to Docker daemon 61.99 MB
Step 1 : FROM alpine
---> 2314ad3eeb90
Step 2 : COPY mongodb.tgz /mongodb.tgz
---> d7c7645a3fe2
Successfully built d7c7645a3fe2
[anovil@ubuntu-anovil remove-registry]$ docker push localhost:5000/alpine:v2
The 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] রেজিস্ট্রিতে আবার আকারটি যাচাই করার পরে, এটি 62MB তে উন্নীত হয়েছে:
root@88f8e1a1d7a7:/# du -sch /var/lib/registry/
62M /var/lib/registry/
62M total
root@88f8e1a1d7a7:/#
[]] চালানোর জন্য delete_docker_registry_image
, আপনাকে কন্টেইনারটিতে স্ক্রিপ্টটি পেতে হবে যা রেজিস্ট্রি হোস্ট করছে, এটি করার একটি বিকল্প হ'ল কার্ল সহ। এছাড়াও, এই স্ক্রিপ্টের প্রয়োজন jq
।
root@88f8e1a1d7a7:/# apt-get update && apt-get install -y curl jq
...
root@88f8e1a1d7a7:/#
[]] স্ক্রিপ্টটি চালান, --dry-run
প্রথমে বিকল্প দিয়ে চেষ্টা করুন এবং সংস্করণ ট্যাগটি ভুলে যাবেন না (এই ক্ষেত্রে ভি 2), এছাড়াও ভাল রয়েছে-h
root@88f8e1a1d7a7:/# delete_docker_registry_image --image alpine:v2 --dry-run
DRY_RUN: would have deleted tag directory: repositories/alpine/_manifests/tags/v2
DRY_RUN: would have deleted manifest revision: repositories/alpine/_manifests/revisions/sha256/7bea1ec2910170bd88412b622aee6129791673cf1fd8c0e1e34f15ec26428774
DRY_RUN: would have deleted directory: blobs/sha256/e2/e2cc9aed084e01fa5cf93c09121035ac4d712113425ae68b678c28591beec5c6
DRY_RUN: would have deleted directory: blobs/sha256/7a/7ada67971e952e353ab14d8f9bdd4e41e4c41099b05a5da09f2700b51d93908a
DRY_RUN: would have deleted directory: blobs/sha256/7b/7bea1ec2910170bd88412b622aee6129791673cf1fd8c0e1e34f15ec26428774
DRY_RUN: would have deleted layer metadata directory: repositories/alpine/_layers/sha256/e2cc9aed084e01fa5cf93c09121035ac4d712113425ae68b678c28591beec5c6
root@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 total
root@88f8e1a1d7a7:/#