ব্যক্তিগত রেজিস্ট্রি থেকে ট্যাগযুক্ত ডকার চিত্র সরান


10

আমি কীভাবে একটি ব্যক্তিগত ডকার রেজিস্ট্রিতে কোনও চিত্র থেকে ভুলভাবে যুক্ত ট্যাগ মুছে ফেলতে পারি? বিকল্পটি -rmi ডকার ১.৯.১-তে দূরবর্তী চিত্রগুলির জন্য কাজ করে বলে মনে হচ্ছে না।

user@ubuntu-user:~$ docker --version  
Docker version 1.9.1, build a34a1d5

user@ubuntu-user:~$ docker search myregistry:5000/user/image
NAME                                                                     
myregistry:5000/user/image:20160119                                         
myregistry:5000/user/image:20160119-20160120        

user@ubuntu-user:~$ docker rmi myregistry:5000/user/image:20160119-20160120
Error response from daemon: could not find image: no such id: myregistry:5000/user/image:20160119-20160120
Error: failed to remove images: [myregistry:5000/user/image:20160119-20160120]

উত্তর:


9

আজকে রেজিস্ট্রি থেকে চিত্রগুলি অপসারণ করার কোনও সহজ পদ্ধতি নেই বলে মনে হয় এবং এটি 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:/#  

0

আমি নিশ্চিত না যে এটি সাহায্য করে বা না। তবে দয়া করে এখানে আমার পরামর্শটি দেখুন (মাফানিকুমারদের মন্তব্য)

https://github.com/docker/docker-registry/issues/988


4
লিঙ্কগুলি কখনও কখনও অফলাইন হয়ে থাকে বা সময়ের সাথে সাথে সরানো হয় বলে আপনি এখানে সেই লিঙ্কটি থেকে গুরুত্বপূর্ণ তথ্য সন্নিবেশ করতে চাইতে পারেন।
ডেনিস নলতে

0

সাম্প্রতিককালে আমি নিজেই এটির দিকে ছুটে এসেছি, কিন্তু তারপরে ভাবলেন, কেন মুছুন, আমি কেবল একটি পুরানো সংস্করণ পুনরায় প্রকাশ করব:

docker push my/image:1.0.0
docker push my/image:1.0.1 # This is broken

docker tag  my/image:1.0.0 my/image:1.0.2
docker push my/image:1.0.2

ভাঙা চিত্রটি এখনও থাকবে, তবে "নতুন" সংস্করণ উপলব্ধ থাকায় কেউই এটি ব্যবহার করবে বলে সম্ভাবনা নেই। স্পষ্টতই এগিয়ে ফিক্স করা ভাল তবে একটি চিমটি মধ্যে এটি একটি দ্রুত সমাধান।

যদি আপনি এটি মুছতে চান তার কারণ এটি হ'ল এর গোপনীয়তা রয়েছে বা এমন কিছু উদ্ভাসিত হয়েছে যা আপনি বেরিয়ে আসতে চান না, তবে অন্যান্য সমাধানগুলি আরও ভাল but তবে ধরে নিন যা এখন তা জানা গেছে এবং এটি পরিবর্তন করুন (পাসওয়ার্ড, কীগুলি, যাই হোক না কেন)।


1
সুতরাং প্রয়োজনীয় স্টোরেজ স্পেসটি আরও বেড়ে যায় এবং বাড়তে থাকে যেহেতু আরও চিত্র ধাক্কা খায় তবে কখনই শুদ্ধ হয় না?
ইম্মেডি

@ এম্মেদেহে আমি ঠিকই হ্যাঁ বোঝাচ্ছি ... তবে মনে রাখবেন, ডিস্ক-ভিত্তিক এটি কেবল গিটের মতো পুনর্বিবেচনার মধ্যে ডেল্টা সংরক্ষণ করে। এমন একটি চিত্রের জন্য যা 1 জিবি হয়ে যায়, এর অর্থ এই নয় যে প্রতিবার আপনি একটি নতুন সংস্করণ প্রকাশ করবেন এটি ডিস্কে আরও 1 জিবি ব্যবহৃত হচ্ছে।
মাইকেল বাটলার 19
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.