ডকার রেজিস্ট্রি ভি 2 এ কীভাবে চিত্রের তালিকা পাবেন


203

আমি ডকার রেজিস্ট্রি ভি 1 ব্যবহার করছি এবং আমি নতুন সংস্করণ, ভি 2 এ স্থানান্তরিত করতে আগ্রহী। তবে রেজিস্ট্রিতে উপস্থিত চিত্রগুলির একটি তালিকা পাওয়ার জন্য আমার কিছু উপায় প্রয়োজন; উদাহরণস্বরূপ রেজিস্ট্রি ভি 1 সহ আমি একটি জিইটি অনুরোধ কার্যকর করতে পারি http://myregistry:5000/v1/search?এবং ফলাফলটি হ'ল:

{
  "num_results": 2,
  "query": "",
  "results": [
    {
      "description": "",
      "name": "deis/router"
    },
    {
      "description": "",
      "name": "deis/database"
    }
  ]
}

তবে আমি রেজিস্ট্রিতে চিত্রের তালিকা পেতে অনুরূপ কিছু অফিসিয়াল ডকুমেন্টেশনে খুঁজে পাচ্ছি না । নতুন সংস্করণ v2 এ করার জন্য যে কেউ উপায় জানেন?


এখনও যথেষ্ট নয়। চিত্র তৈরির এবং ইমেজ পুশের তারিখগুলির প্রয়োজন এবং পূর্বের ট্যাগ সংস্করণগুলিকে অন্তর্ভুক্ত / দমন করতে হবে আশা করি। একটি সত্যিকারের ওয়েব ইন্টারফেস হতে পারে, ঠিক আছে? আমি আমাদের প্রশাসকের সাথে কথা বলছি - আমরা কেবল 2.0 পেয়েছি
অ্যান্ড্রু ওল্ফ

উত্তর:


404

রেজিস্ট্রি ভি 2 এর সর্বশেষ (2015-07-31) সংস্করণের জন্য, আপনি এই চিত্রটি ডকারহাব থেকে পেতে পারেন :

docker pull distribution/registry:master

সমস্ত সংগ্রহস্থলের তালিকা (কার্যকরভাবে চিত্র):

curl -X GET https://myregistry:5000/v2/_catalog
> {"repositories":["redis","ubuntu"]}

একটি সংগ্রহস্থলের জন্য সমস্ত ট্যাগ তালিকা:

curl -X GET https://myregistry:5000/v2/ubuntu/tags/list
> {"name":"ubuntu","tags":["14.04"]}

3
আপনি কোথা থেকে শংসাপত্র পাবেন?
দ্বৈততা_

3
আপনার রেজিস্ট্রি হয় স্ব-স্বাক্ষরিত শংসাপত্র, বা একটি অবিশ্বস্ত রুট সিএ স্বাক্ষরিত একটি শংসাপত্র ব্যবহার করার ক্ষেত্রে @diversity, সুরক্ষিত সংযোগ স্থাপনের জন্য আপনাকে কার্লের শংসাপত্র সরবরাহ করতে হবে। কোনও অনিরাপদ সংযোগ তৈরি করতে আপনি এর পরিবর্তে '--insecure' পতাকাটি যুক্ত করতে পারেন।
জোনাটান

5
-কি, --ইনসিকিউর (এসএসএল)
ইলজা

9
ডিফল্ট ফলাফল কেবল 100 টি চিত্র রেকর্ড দেখায়, তবে আপনাকে আরও দেখাতে চাইলে আপনি এই প্রশ্নের http://<registry-url>/v2/_catalog?n=<count>সাথে
ফলাফলটি পৃষ্ঠাতে পারেন:

17
যদি রেজিস্ট্রিটি পাসওয়ার্ড সুরক্ষিত থাকে, তবে ব্যবহার করুনcurl -u <user>:<pass> -X GET ...
ন্যানস্টোস

77

আপনি অনুসন্ধান করতে পারেন

http: // <ip/hostname>: <port>/ v2 / _ ক্যাটালগ


4
... সাম্প্রতিককালে আমি কেবল যুক্ত করতে চাই যে কেবলমাত্র HTTP- র পরিবর্তে https প্রয়োজন
নিকোলা

2
আমি আমার সম্প্রতি ইনস্টলড ডকার রেজিস্ট্রি এর জন্য এমন কোনও প্রয়োজন দেখছি না!
এনোক 82

42

ক্যাটালগ পান

ডিফল্ট, রেজিস্ট্রি এপিআই ক্যাটালগের 100 টি প্রবেশ ফিরিয়ে দেয়, কোড রয়েছে :

আপনি যখন রেজিস্ট্রি এপিআই কার্ল করবেন:

curl --cacert domain.crt https://your.registry:5000/v2/_catalog

এটি : এর সমতুল্য

curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=100

এটি একটি পৃষ্ঠাগুলি মিথ।

100 এরও বেশি এন্ট্রিগুলির যোগফল যখন আপনি দুটি উপায়ে করতে পারেন:

প্রথম : একটি বড় নম্বর দিন

curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=2000

সেনকন্ড : পরবর্তী লিঙ্কারের url পার্স করুন

curl --cacert domain.crt https://your.registry:5000/v2/_catalog

প্রতিক্রিয়া শিরোনামে থাকা একটি লিঙ্ক উপাদান:

curl --cacert domain.crt https://your.registry:5000/v2/_catalog

প্রতিক্রিয়া শিরোনাম:

Link: </v2/_catalog?last=pro-octopus-ws&n=100>; rel="next"

লিঙ্ক উপাদানটির এই অনুরোধটির শেষ প্রবেশ রয়েছে, তারপরে আপনি পরবর্তী 'পৃষ্ঠা' র জন্য অনুরোধ করতে পারেন:

curl --cacert domain.crt https://your.registry:5000/v2/_catalog?last=pro-octopus-ws

যদি প্রতিক্রিয়া শিরোনামে লিঙ্ক উপাদান থাকে তবে আপনি এটি একটি লুপে করতে পারেন ।

চিত্র পান

আপনি ক্যাটালগের ফলাফল পেলে এটি পছন্দ করে:

{ "repositories": [ "busybox", "ceph/mds" ] }

আপনি প্রতিটি ক্যাটালগে চিত্রগুলি পেতে পারেন:

curl --cacert domain.crt https://your.registry:5000/v2/busybox/tags/list

আয়:

{"name":"busybox","tags":["latest"]}


1
100 এন্ট্রি এখানে
litanhu

2
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এটিই কেবলমাত্র উত্তর যা আপনাকে কীভাবে ভয়ঙ্কর পৃষ্ঠাগুলির চারপাশে পাবে তা ব্যাখ্যা করে। বর্তমানে গৃহীত উত্তর (জোনাটান) কেবল "এ" দিয়ে শুরু হওয়া চিত্র দেখায়।
ব্যবহারকারী 2394284

এবং আপনি কিভাবে জন্য ট্যাগ তালিকা পাবেন ceph/mds? সাধারণভাবে, কোনো সংগ্রহস্থলের সংজ্ঞায়িত জন্য /- /v2/_catalog/ceph/mdt/tags/listনা কাজ করে
tymik

25

Https://github.com/docker/dist वितरण থেকে পাওয়া ডকার রেজিস্ট্রিটির সর্বশেষ সংস্করণ ক্যাটালগ এপিআই সমর্থন করে। (v2 / _catalog)। এটি সন্ধানের সন্ধানের সক্ষমতা সক্ষম করে

যদি আগ্রহী, আপনি ইমেজ রেজিস্ট্রি CLI আমি ব্যবহার খুঁজে পাওয়ার নির্মান Docker চেষ্টা করতে পারেন অতিরিক্ত বৈশিষ্ট্যগুলিও উপস্থিত রয়েছে সার্চ নতুন Docker রেজিস্ট্রি বিতরণে ( https://github.com/vivekjuneja/docker_registry_cli )


21

আমরা এই উদ্দেশ্যে একটি সিএলআই সরঞ্জাম লিখেছি: ডকার-এলএস এটি আপনাকে একটি ডকার রেজিস্ট্রি ব্রাউজ করার অনুমতি দেয় এবং টোকেন বা বেসিক লেখার মাধ্যমে প্রমাণীকরণ সমর্থন করে।


21

এটি আমাকে পাগল করে চলেছে তবে অবশেষে আমি সমস্ত টুকরা একসাথে রেখেছি। 1/25/2015 পর্যন্ত, আমি নিশ্চিত করেছি যে ডকার ভি 2 রেজিস্ট্রিতে চিত্রগুলি তালিকাভুক্ত করা সম্ভব (উপরে @ জোনাটান উল্লিখিত, ঠিক উপরে।)

আমি উত্তরটি ভোট দিয়ে দেব, যদি আমার কাছে এর প্রতিনিধি থাকে।

পরিবর্তে, আমি উত্তরে প্রসারিত করব। যেহেতু রেজিস্ট্রি থেকে V2 মনে নিরাপত্তা দ্বারা তৈরি করা, আমি মনে করি এটা অন্তর্ভুক্ত করা কিভাবে সঠিক এটি একটি স্ব স্বাক্ষরিত যা নিশ্চিতভাবে ঘটবে সাথে সেট আপ , এবং যে যা নিশ্চিতভাবে ঘটবে সঙ্গে ধারক চালানো যাতে এই কোনও https কল আসতে পারে:

এটি নিবন্ধটি শুরু করার জন্য আমি আসলে স্ক্রিপ্টটি ব্যবহার করি:

sudo docker stop registry
sudo docker rm -v registry
sudo docker run -d \
  -p 5001:5001 \
  -p 5000:5000 \
  --restart=always \
  --name registry \
  -v /data/registry:/var/lib/registry \
  -v /root/certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ 
  -e REGISTRY_HTTP_DEBUG_ADDR=':5001' \
  registry:2.2.1

এটি কারওর কাছে সুস্পষ্ট হতে পারে তবে আমি সর্বদা কী এবং শংসাপত্রের সাথে মিশে যাই। কলটি করতে যে ফাইলটি রেফারেন্স করা দরকার সেই ফাইলটি হ'ল জোনাটন ** উপরে ** উল্লেখ করেছে, এটি উপরে তালিকাভুক্ত ডোমেন.সিআরটি। (যেহেতু আমি ডোমেন.সিআরটি /rootরেখেছি, তাই আমি ব্যবহারের ডিরেক্টরিতে একটি অনুলিপি তৈরি করেছিলাম যেখানে এটি অ্যাক্সেস করা যায়))

curl --cacert ~/domain.crt https://myregistry:5000/v2/_catalog
> {"repositories":["redis","ubuntu"]}

** উপরের কমান্ডটি পরিবর্তন করা হয়েছে: -আমি চেষ্টা করার পরে আসলে কাজ করিনি।

দ্রষ্টব্য: https://myregistry:5000(উপরে হিসাবে) অবশ্যই উত্পাদিত শংসাপত্রের সাথে দেওয়া ডোমেনটির সাথে মেলে।


10

ইনস্টল করুন রেজিস্ট্রি: ২.১.১ বা তার পরে (আপনি এখানে সর্বশেষটি পরীক্ষা করতে পারেন ) এবং তালিকা পেতে জিইটি / ভি 2 / _ ক্যাটালগ ব্যবহার করুন।

https://github.com/docker/distribution/blob/master/docs/spec/api.md#listing-repositories

শেল স্ক্রিপ্টের সমস্ত চিত্রের তালিকা তৈরি করুন উদাহরণ: https://gist.github.com/OndrejP/a2386d08e5308b0776c0


7

রেপোস এবং সম্পর্কিত ট্যাগগুলির একটি তালিকা মুদ্রণের জন্য এখানে একটি সুন্দর ছোট একটি লাইনার (জেকিউ ব্যবহার করে) রয়েছে।

আপনি যদি jqইনস্টল না করেন তবে আপনি এটি ব্যবহার করতে পারেন:brew install jq

# This is my URL but you can use any
REPO_URL=10.230.47.94:443

curl -k -s -X GET https://$REPO_URL/v2/_catalog \
 | jq '.repositories[]' \
 | sort \
 | xargs -I _ curl -s -k -X GET https://$REPO_URL/v2/_/tags/list

হ্যাঁ, আমি সবেমাত্র এটি লিখেছিলাম তখন তোমার খুঁজে পেয়েছি: এস তবে আমি আমার উত্তরটি রাখব কারণ এটি বেসিক লেখাগুলিকেও কীভাবে পরিচালনা করতে পারে তা দেখায় এবং এটি কেন কাজ করে তা ব্যাখ্যা করে। ফলসটিকে একটি ফ্ল্যাট চিত্রের তালিকায়ও ফিল্টার করে।
ক্রেগ রিঞ্জার

যদি জেকিউ আপনার লিনাক্স ডিস্ট্রোতে না থাকে তবে তার স্টেডোলন.github.io/jq/download এটি একটি খুব দরকারী সামান্য সরঞ্জাম।
আইএসকিউ

5

আমাকে এখানে একই কাজ করতে হয়েছিল এবং উপরের কাজগুলি ছাড়া আমাকে লগইন বিশদ সরবরাহ করতে হয়েছিল কারণ এটি স্থানীয় ডকারের সংগ্রহশালা ছিল।

এটি উপরের মত অনুসারে তবে ইউআরএল-এ ব্যবহারকারীর নাম / পাসওয়ার্ড সরবরাহ করে।

curl -k -X GET https://yourusername:yourpassword@theregistryURL/v2/_catalog

এটি ফরম্যাটেড জেএসওএন হিসাবে ফিরে আসে।

যদি আপনি এই ফর্ম্যাটটিতে থাকতে চান তবে আমি এটি মানব পাঠনের সহজতার জন্য পাইথন ফর্ম্যাটারের মাধ্যমে পাইপ করেছি।

curl -k -X GET https://yourusername:yourpassword@theregistryURL/v2/_catalog | python -m json.tool

4

"/ ভি 2 / _ ক্যাটাগলজ" এবং "/ ট্যাগস / তালিকা" শেষ পয়েন্টগুলি ব্যবহার করে আপনি সত্যই সমস্ত চিত্র তালিকাভুক্ত করতে পারবেন না। আপনি যদি কয়েকটি আলাদা চিত্র ঠেলে এবং তাদের "সর্বশেষ" ট্যাগ করেন তবে আপনি সত্যিই পুরানো চিত্রগুলি তালিকাভুক্ত করতে পারবেন না! আপনি ডাইজেস্ট "ডকার পুল উবুন্টু @ sha256: ac13c5d2 ..." ব্যবহার করে যদি তাদের কাছে উল্লেখ করেন তবে আপনি এগুলিকে টানতে পারেন। উত্তরটি হ'ল - চিত্রগুলি তালিকাভুক্ত করার কোনও উপায় নেই আপনি কেবল ট্যাগগুলি তালিকাভুক্ত করতে পারবেন যা একই নয়


3

কিছু যদি এ পর্যন্ত পেতে।

অন্যরা ইতিমধ্যে উপরে যা বলেছে তা গ্রহণ করা। এখানে একটি ওয়ান-লাইনার যা উত্তরটিকে একটি পাঠ্য ফাইলের ফর্ম্যাট করে, জসনকে রাখে।

curl "http://mydocker.registry.domain/v2/_catalog?n=2000" | jq . - > /tmp/registry.lst

এই মত দেখাচ্ছে

{
  "repositories": [
    "somerepo/somecontiner",
    "somerepo_other/someothercontiner",
 ...
  ]
}

আপনার কাছে কতগুলি পাত্রে রয়েছে তা মেলাতে আপনার `? N = xxxx 'পরিবর্তন করতে হতে পারে।

পুরানো এবং অব্যবহৃত পাত্রে স্বয়ংক্রিয়ভাবে অপসারণ করার একটি উপায়।


2

এই লেখার সময় ডকার অনুসন্ধান রেজিস্ট্রি ভি 2 কার্যকারিতা বর্তমানে সমর্থিত নয়। ফেব্রুয়ারী 2015 থেকে আলোচনা দেখুন: "রেজিস্ট্রি অনুসন্ধান কার্যকারিতা প্রস্তাব দিন # 206" https://github.com/docker/dist تقسیم/issues/206

আমি একটি স্ক্রিপ্ট লিখেছি যা আপনি এটি পেতে পারেন: https://github.com/BradleyA/Search-docker-registry-v2-script.1.0 এটি সুন্দর নয় তবে এটি ব্যক্তিগত রেজিস্ট্রি থেকে প্রয়োজনীয় তথ্য পায় gets


2

আমি সহজেই ব্যবহারযোগ্য কমান্ড লাইন সরঞ্জামটি লিখেছি বিভিন্ন উপায়ে চিত্রের তালিকা তৈরি করার জন্য (যেমন সমস্ত চিত্রের তালিকা তৈরি করুন, সেই চিত্রগুলির সমস্ত ট্যাগ তালিকাবদ্ধ করুন, সেই ট্যাগগুলির সমস্ত স্তরকে তালিকাবদ্ধ করুন)।

এটি আপনাকে অব্যবহৃত চিত্রগুলি বিভিন্ন উপায়ে মুছে ফেলতে দেয়, যেমন কোনও একক চিত্রের পুরানো ট্যাগগুলি মুছে ফেলতে বা সমস্ত চিত্র থেকে ইত্যাদি etc. এটি সুবিধাজনক যখন আপনি সিআই সার্ভার থেকে আপনার রেজিস্ট্রিটি পূরণ করছেন এবং কেবলমাত্র সর্বশেষ / স্থিতিশীল সংস্করণ রাখতে চান।

এটি অজগরে লেখা এবং আপনার বিশাল বড় কাস্টম রেজিস্ট্রি চিত্র ডাউনলোড করার দরকার নেই।


2

এখানে একটি উদাহরণ যা রেজিস্ট্রিতে সমস্ত চিত্রের সমস্ত ট্যাগ তালিকাভুক্ত করে। এটি HTTP বেসিক লেখার জন্য কনফিগার করা একটি রেজিস্ট্রিও পরিচালনা করে।

THE_REGISTRY=localhost:5000

# Get username:password from docker configuration. You could
# inject these some other way instead if you wanted.
CREDS=$(jq -r ".[\"auths\"][\"$THE_REGISTRY\"][\"auth\"]" .docker/config.json | base64 -d)

curl -s --user $CREDS https://$THE_REGISTRY/v2/_catalog | \
    jq -r '.["repositories"][]' | \
    xargs -I @REPO@ curl -s --user $CREDS https://$THE_REGISTRY/v2/@REPO@/tags/list | \
    jq -M '.["name"] + ":" + .["tags"][]'

ব্যাখ্যা:

  • ব্যবহারকারীর নাম নিষ্ক্রিয় করুন: .ডোকার / কনফিগারেশন.জসন থেকে পাসওয়ার্ড
  • সমস্ত "ভান্ডার" তালিকাভুক্ত করার জন্য রেজিস্ট্রিতে একটি https অনুরোধ করুন
  • সংগ্রহস্থলের নামের একটি ফ্ল্যাট তালিকাতে json ফলাফল ফিল্টার করুন
  • প্রতিটি সংগ্রহস্থলের নামের জন্য:
  • সেই "সংগ্রহস্থল" এর জন্য সমস্ত "ট্যাগ" তালিকাবদ্ধ করার জন্য রেজিস্ট্রিতে একটি https অনুরোধ করুন
  • ফলাফলের জসন অবজেক্টের স্ট্রিম ফিল্টার করুন, "সংগ্রহস্থল" মুদ্রণ: প্রতিটি ট্যাগের জন্য প্রতিটি ট্যাগের জন্য "ট্যাগ" জোড়া

1

এই থ্রেড তারিখ একটি দীর্ঘ সময়ের ব্যাক, সবচেয়ে সাম্প্রতিক সরঞ্জামগুলি আমাদের কাছে এক বিবেচনা করা উচিত হয় skopeoএবং crane

skopeoস্বাক্ষরকে সমর্থন করে এবং আরও অনেকগুলি বৈশিষ্ট্য রয়েছে, যদিও craneএটি খানিকটা ন্যূনতম এবং আমি একটি সহজ শেল স্ক্রিপ্টের সাথে একীভূত করা আরও সহজ পেয়েছি।


0

যেহেতু প্রতিটি রেজিস্ট্রি একটি ধারক হিসাবে চালিত হয় ধারক আইডির একটি সম্পর্কিত লগ ফাইল আইডি-জসন.লগ রয়েছে এই লগ ফাইলটিতে vars.name = [চিত্র] এবং vars.references = [ট্যাগ] রয়েছে। এগুলি এক্সপ্লোর্পলেট এবং মুদ্রণের জন্য একটি স্ক্রিপ্ট ব্যবহার করা যেতে পারে। V2-2.0.1 এ রেজিস্ট্রি করা চিত্রগুলি তালিকাভুক্ত করার জন্য এটি সম্ভবত একটি পদ্ধতি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.