প্রতিটি ডকার চিত্রের জন্য স্তর এবং স্তর মাপসই সন্ধান করা


122

গবেষণার উদ্দেশ্যে আমি পাবলিক ডকার রেজিস্ট্রি ক্রল করার চেষ্টা করছি ( https://registry.hub.docker.com/ ) এবং 1 টি গড় চিত্রের কত স্তর রয়েছে এবং 2) এই স্তরগুলির আকার পাওয়ার জন্য বিতরণ ধারণা।

তবে আমি এপিআই এবং পাবলিক লাইব্রেরিগুলির পাশাপাশি গিথুব সম্পর্কিত বিবরণ অধ্যয়ন করেছি তবে আমি কোনও পদ্ধতি খুঁজে পাচ্ছি না:

  • সমস্ত পাবলিক স্টোর / ইমেজগুলি পুনরুদ্ধার করুন (এগুলি হাজার হাজার হলেও আমার পুনরাবৃত্তি করার জন্য এখনও একটি শুরুর তালিকার প্রয়োজন)
  • একটি চিত্রের সমস্ত স্তর সন্ধান করুন
  • একটি স্তরের জন্য আকারটি সন্ধান করুন (সুতরাং কোনও চিত্র নয় তবে পৃথক স্তরের জন্য)।

কেউ কি এই তথ্য পুনরুদ্ধার করার উপায় খুঁজতে আমাকে সহায়তা করতে পারেন?

ধন্যবাদ!

সম্পাদনা: ডকার রেজিস্ট্রিতে '*' অনুসন্ধানের ফলে যে কোনও জায়গায় '*' উল্লিখিত এমন কোনও কিছু নয়, যা সমস্ত ডিপোজিটরিগুলি ফিরিয়ে দিচ্ছে তা কি কেউ যাচাই করতে সক্ষম? https://registry.hub.docker.com/search?q=*


8
>>> কোনও চিত্রের সমস্ত স্তর সন্ধান করুন, আপনি যদি এপিআই ব্যবহার না করেন তবে আপনি একটি করতে পারেন docker history myimageএবং প্রতিটি স্তরের আকার দেখতে পাবেন। আরও সাধারণভাবে, একটি চিত্রের উপর, আপনি docker history myimage | awk 'NR>1 {print $1}' | xargs docker inspect --format '{{ ((index .ContainerConfig.Cmd ) 0) }}'চিত্রটি তৈরি করতে কী আদেশগুলি জারি করা হয়েছে তা দেখতে করতে পারেন
ব্যবহারকারী 2915097

এটি ইতিমধ্যে দ্বিতীয় পদক্ষেপের জন্য একটি দুর্দান্ত সহায়তা যদিও এর জন্য আমাকে আমার স্থানীয় মেশিনে ডকারের মাধ্যমে প্রতিটি চিত্র ডাউনলোড করতে হবে। আমি অনুমান করি যে এটি একটি বিকল্প তবে কেবলমাত্র যদি আমি 'মাইমেজগুলি' দিয়ে একটি তালিকা পুনরুদ্ধার করার উপায় খুঁজে পাই তবে (উদাহরণস্বরূপ পদক্ষেপ 1 এ পাবলিক রেজিস্ট্রিতে প্রতিটি চিত্র)। আমি অবশ্যই এই বিকল্পটি অন্বেষণ করব, ধন্যবাদ!
ব্যবহারকারী 134589

https://registry.hub.docker.com/search?q=*আমার জন্য 87031 সংগ্রহস্থলগুলি দেখায়
ব্যবহারকারী 2915097

উত্তর:


85

আপনি / var / lib / ডকার / aufs / স্তর ফোল্ডারে চিত্রের স্তর খুঁজে পেতে পারেন; আপনি স্টোর-ড্রাইভারের জন্য অউফস হিসাবে কনফিগার করা থাকলে সরবরাহ করুন (ডিফল্ট বিকল্প)

উদাহরণ:

 docker ps -a
 CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
 0ca502fa6aae        ubuntu              "/bin/bash"         44 minutes ago      Exited (0) 44 seconds ago                       DockerTest

এখন "উবুন্টু" চিত্রটি দিয়ে তৈরি করা পাত্রে স্তরগুলি দেখতে; / var / lib / ডকার / aufs / স্তর ডিরেক্টরিতে যান এবং ফাইলটি ক্যাটেনার ID দিয়ে শুরু হয় (এখানে 0ca502fa6aae * রয়েছে)

 root@viswesn-vm2:/var/lib/docker/aufs/layers# cat    0ca502fa6aaefc89f690736609b54b2f0fdebfe8452902ca383020e3b0d266f9-init 
 d2a0ecffe6fa4ef3de9646a75cc629bbd9da7eead7f767cb810f9808d6b3ecb6
 29460ac934423a55802fcad24856827050697b4a9f33550bd93c82762fb6db8f
 b670fb0c7ecd3d2c401fbfd1fa4d7a872fbada0a4b8c2516d0be18911c6b25d6
 83e4dde6b9cfddf46b75a07ec8d65ad87a748b98cf27de7d5b3298c1f3455ae4

এটি রান করে একই ফলাফল প্রদর্শন করবে

root@viswesn-vm2:/var/lib/docker/aufs/layers# docker history ubuntu
IMAGE               CREATED             CREATED BY                                         SIZE                COMMENT
d2a0ecffe6fa        13 days ago         /bin/sh -c #(nop) CMD ["/bin/bash"]             0 B                 
29460ac93442        13 days ago         /bin/sh -c sed -i 's/^#\s*\   (deb.*universe\)$/   1.895 kB            
b670fb0c7ecd        13 days ago         /bin/sh -c echo '#!/bin/sh' > /usr/sbin/polic   194.5 kB            
83e4dde6b9cf        13 days ago         /bin/sh -c #(nop) ADD file:c8f078961a543cdefa   188.2 MB 

পূর্ণ স্তর আইডি দেখতে; ইতিহাস কমান্ডের অংশ হিসাবে --no-trunc বিকল্পের সাহায্যে চালান।

docker history --no-trunc ubuntu

4
এটি আর ডকার সংস্করণ ১.১০ এর পরে নেই। docker historyকমান্ডটি / var / lib / ডকার / aufs / স্তর ফোল্ডারে প্রদর্শিত চিত্র স্তর দেয় না। আপডেটটি এখানে পড়ুন ।
রুইফেং মা

10
যেহেতু ডকার সংস্করণ ১.১০, কনটেন্টের ঠিকানাযোগ্য স্টোরেজ প্রবর্তনের সাথে সাথে এখন চিত্র এবং স্তরগুলি পৃথক করা হয়েছে। docker historyকমান্ডটি ডকার হোস্টে প্রকৃত স্তর ডিস্ক স্টোরেজ সম্পর্কিত তথ্য আর বলে না। এই ব্লগটি দেখুন
রাইফেং মা


60

আপনি প্রথমে ব্যবহার করে চিত্রের আইডি খুঁজে পেতে পারেন:

$ docker images -a

তারপরে চিত্রটির স্তর এবং তাদের আকারগুলি সন্ধান করুন:

$ docker history --no-trunc <Image ID>

দ্রষ্টব্য: আমি ডকার সংস্করণ 1.13.1 ব্যবহার করছি

$ docker -v
Docker version 1.13.1, build 092cba3

33

আমার মতে, docker history <image>যথেষ্ট। এটি প্রতিটি স্তরের আকার প্রদান করে:

$ docker history jenkinsci-jnlp-slave:2019-1-9c
IMAGE        CREATED    CREATED BY                                    SIZE  COMMENT
93f48953d298 42 min ago /bin/sh -c #(nop)  USER jenkins               0B
6305b07d4650 42 min ago /bin/sh -c chown jenkins:jenkins -R /home/je… 1.45GB

11

তাদের এখানে খুব ভাল উত্তর রয়েছে: https://stackoverflow.com/a/32455275/165865

কেবল চিত্রগুলির নীচে চালান:

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nate/dockviz images -t

4
হাই @ অ্যালবামি, দুঃখিত আমি মনে করি এই প্রশ্নটি প্রাথমিকভাবে ডকার রেজিস্ট্রি সমাধান সমাধানের সন্ধান করছে এবং আমি খুঁজে পেলাম যে সমাধানটি আমরা উপরে উপরে ডকার ইমেজের স্তরগুলিতে সরবরাহ করেছি। তাই আমি আরেকটি সমাধান পরিপূরক করার চেষ্টা করি (যা আমি সহজ মনে করি)
sunnyCf

8

এটি ডকার চিত্রটি পরীক্ষা করবে এবং স্তরগুলি মুদ্রণ করবে:

$ docker image inspect nginx -f '{{.RootFS.Layers}}'
[sha256:d626a8ad97a1f9c1f2c4db3814751ada64f60aed927764a3f994fcd88363b659 sha256:82b81d779f8352b20e52295afc6d0eab7e61c0ec7af96d85b8cda7800285d97d sha256:7ab428981537aa7d0c79bc1acbf208c71e57d9678f7deca4267cc03fba26b9c8]


2
  1. https://hub.docker.com/search?q=* পুরো ডকার হাবের সমস্ত চিত্র দেখায়, ওয়াইল্ডকার্ড গ্রহণ না করায় এটি অনুসন্ধান কমান্ডের মাধ্যমে পাওয়া সম্ভব নয়।

  2. V1.10 অনুসারে আপনি কোনও চিত্রের সমস্ত স্তরগুলি এটিকে টেনে এনে এবং এই আদেশগুলি ব্যবহার করে খুঁজে পেতে পারেন:

    docker pull ubuntu
    ID=$(sudo docker inspect -f {{.Id}} ubuntu)
    jq .rootfs.diff_ids /var/lib/docker/image/aufs/imagedb/content/$(echo $ID|tr ':' '/')
    

3) আকারটি /var/lib/docker/image/aufs/layerdb/sha256/{LAYERID}/sizeযদিও LAYERID! = পূর্ববর্তী কমান্ডের সাথে পাওয়া যায় এমন ডিফাইফাইডগুলি পাওয়া যাবে। /var/lib/docker/image/aufs/layerdb/sha256/{LAYERID}/diffএটির জন্য আপনাকে সঠিকভাবে পৃথক_ আইডি এবং আকারের সঠিকভাবে মেলে পূর্ববর্তী কমান্ড আউটপুটটি দেখতে এবং তুলনা করতে হবে ।


আরই 1) আমার জন্য কাজ করেনি বলে মনে হয় hub.docker.com এ পুনঃনির্দেশিত।

4
ডকার চিত্র পরিদর্শন | jq। []। রুটএফএস.লায়ার্স "2 করার সহজ উপায়"
Wheredidthatnamecomefrom

2

চিত্রটি স্থানীয় ডিস্কে না টানিয়ে ডকার রেজিস্ট্রি সার্ভার থেকে ম্যানিফেস্ট বা ব্লব তথ্যটি জিজ্ঞাসা করা সত্যিই সক্ষম ।

আপনি ম্যানিফেস্টটি আনতে রেজিস্ট্রি ভি 2 এপিআই পড়তে পারেন।

GET /v2/<name>/manifests/<reference>

দ্রষ্টব্য, আপনাকে বিভিন্ন ম্যানিফেস্ট সংস্করণ পরিচালনা করতে হবে। জন্য v2 আপনি সরাসরি স্তরের আকার পেতে এবং ফোঁটা এর হজম করতে পারেন। জন্য v1 এ স্পষ্ট , আপনি ফোঁটা ডাউনলোড URL মাথা প্রকৃত স্তর আকার করতে পারেন।

উপরের কেসগুলি পরিচালনা করার জন্য একটি সহজ স্ক্রিপ্ট রয়েছে যা ধারাবাহিকভাবে বজায় রাখা হবে।


0

আসল প্রশ্নটি হুবহু নয় তবে ভাগ করা স্তরগুলিকে দ্বিগুণ গণনা ছাড়াই সমস্ত চিত্রের সমষ্টি খুঁজে পেতে, নিম্নলিখিতটি দরকারী (উবুন্টু 18):

sudo du -h -d1  /var/lib/docker/overlay2 | sort -h

-4

আমি ডকারের ওয়েবসাইটে অনুসন্ধান ফাংশনটি ব্যবহার করে এই সমস্যার সমাধান করেছি যেখানে '*' একটি বৈধ অনুসন্ধান যা 200k সংগ্রহস্থল ফেরত দেয় এবং তারপরে আমি প্রতিটি অদৃশ্য পৃষ্ঠাটি ক্রল করেছিলাম। এইচটিএমএল পার্সিং আমাকে প্রতিটি পৃষ্ঠায় সমস্ত চিত্রের নাম বের করার অনুমতি দেয়।

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