আমি কোন ডকার চিত্রের sha256 কোডটি কোথায় পেতে পারি?


94

আমি সেন্টোস, টমক্যাট, ... এর মতো তাদের শ 256 কোড ব্যবহার করে ছবিগুলি টানতে চাই

docker pull myimage@sha256:0ecb2ad60

তবে আমি কোথাও ব্যবহারের জন্য sha256-কোডটি খুঁজে পাচ্ছি না।

আমি sha256-কোডের কোনও ইঙ্গিতের জন্য ডকারহাবের সংগ্রহস্থলটি পরীক্ষা করে দেখেছি, তবে কোনও খুঁজে পেল না। আমি তাদের ট্যাগ দিয়ে ছবিগুলি ডাউনলোড করেছি

docker pull tomcat:7-jre8

এবং docker inspectমেটাডেটাতে একটি শ 256 কোড আছে কিনা তা দেখতে ছবিটি পরীক্ষা করে দেখেছি, তবে কোনওটি নেই (চিত্রের sha256 কোড যুক্ত করে sha256 কোডটি পরিবর্তন করতে পারে)।

আমাকে কী কোনও চিত্রের শ 256 কোডটি নিজেই গণনা করতে হবে এবং তা ব্যবহার করতে হবে?


4
আমি এটি সম্পর্কিত ডকারহুব-এ একটি সমস্যা তৈরি করেছি - github.com/docker/docker/issues/17670
মাইকেল বার্টন

উত্তর:


96

সর্বশেষ উত্তর

মন্তব্যগুলিতে ওহিজিজ দ্বারা প্রস্তাবিত সম্পাদনা করুন।

docker inspect --format='{{index .RepoDigests 0}}' $IMAGE

আসল উত্তর

আমি বিশ্বাস করি আপনি এটি ব্যবহার করেও পেতে পারেন

docker inspect --format='{{.RepoDigests}}' $IMAGE

কেবল ডকার 1.9 এ কাজ করে এবং যদি চিত্রটি মূলত ডাইজেস্ট দ্বারা টানা হত। বিশদটি ডকার ইস্যু ট্র্যাকারে রয়েছে।


8
docker inspect --format='{{index .RepoDigests 0}}' $IMAGEকোনও ধনুর্বন্ধনী জন্য ব্যবহার করুন (অ্যারের প্রথম সূচক ফেরত)
ওহজিজ

@ ওহ জিজ, ধন্যবাদ আমি আপনার পরামর্শটি দিয়ে আমার উত্তর আপডেট করেছি।
মাইকেল বার্টন

কমপক্ষে আমার জন্য, এটি ডাইজেস্ট দ্বারা টানা নয় , তবে ট্যাগ দ্বারা চিত্রগুলির জন্যও কাজ করে। এটি ডকারের সাথে 18.09.7।

উইন্ডোজের অধীনে, দয়া করে ডাবল উদ্ধৃতিগুলি ব্যবহার করুন --ફોর্ম্যাট = "..." ( github.com/docker/toolbox/issues/433#issuecomment-188790050 )
ডেভিড

এই পোস্টটি দিয়ে যাওয়ার পরে, কেউ নীচের পোস্টেও একবার দেখতে চান। stackoverflow.com/questions/56364643/...
vaibhavnd

85

আপনি এটি দ্বারা পেতে পারেন docker images --digests

REPOSITORY          TAG    DIGEST                                                                    IMAGE ID     CREATED        SIZE
docker/ucp-agent    2.1.0  sha256:a428de44a9059f31a59237a5881c2d2cffa93757d99026156e4ea544577ab7f3   583407a61900 3 weeks ago    22.3 MB

4
শুধুমাত্র হজম পেতে, আপনি এটি ব্যবহার করতে পারেন docker images --format '{{.Digest}}'foreachহজমের সাথে কিছু কাজ করার জন্য এটি একটি বিবৃতিতে কার্যকর।
মার্ক লোয়ম্যান

22

সবচেয়ে সহজ এবং সংক্ষিপ্ত উপায় হ'ল:

docker images --no-trunc --quiet $IMAGE

এটি কেবল sha256:...স্ট্রিংটি দেয় এবং অন্য কিছুই না।

যেমন:

$ docker images --no-trunc --quiet debian:stretch-slim
sha256:220611111e8c9bbe242e9dc1367c0fa89eef83f26203ee3f7c3764046e02b248

সম্পাদনা করুন:

দ্রষ্টব্য: এটি কেবল স্থানীয় চিত্রগুলির জন্য কাজ করে। আপনি docker pull $IMAGEপ্রয়োজন হলে প্রথমে পারেন।


19

শুধু এটি দেখেছি:

আমি যখন কোনও চিত্র টানছি, তখন শ 256 কোডটি আউটপুটটির নীচে ডিপ্লেড হয় (ডাইজেস্ট: শ ....):

docker pull tomcat:7-jre8
7-jre8: Pulling from library/tomcat
902b87aaaec9: Already exists 
9a61b6b1315e: Already exists 
...   
4dcef5c50d60: Already exists 
Digest: sha256:c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f
Status: Image is up to date for tomcat:7-jre8

এই শ কোড

sha256: c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f

এর পরে ছবিটি টানতে ব্যবহার করা যেতে পারে

ডকার টল টমকাট @ sha256: c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f

এইভাবে আপনি নিশ্চিত হতে পারেন যে চিত্রটি পরিবর্তিত হয়নি এবং নিরাপদে উত্পাদনের জন্য ব্যবহার করা যেতে পারে।


10
এটি সত্যিই একটি সম্পূর্ণ সমাধান নয়, কারণ এটি কেবল অনলাইনে চিত্রগুলি ব্যবহার করে। আপনি যদি স্থানীয় চিত্রের sha256 চান?
জেলফির কালটসটহল 20'17

7

বিদ্যমান উত্তরগুলি ছাড়াও, আপনার কাছে থাকা সমস্ত চিত্রের ডাইজেস্টের তালিকা পেতে আপনি --digestsবিকল্পটি ব্যবহার docker imagesকরতে পারেন।

docker images --digests

আপনি আরও নিচে ড্রিল করতে একটি গ্রেপ যোগ করতে পারেন

docker images --digests | grep tomcat

5

এটি আইডি ক্ষেত্রটি হওয়া উচিত ছিল, যা আপনি পুরানো অবনমিত ডকার হাব এপিআইতে দেখতে পেতেন

GET /v1/repositories/foo/bar/images HTTP/1.1
  Host: index.docker.io
  Accept: application/json

Parameters:

namespace – the namespace for the repo
repo_name – the name for the repo

প্রতিক্রিয়া উদাহরণ:

HTTP/1.1 200
Vary: Accept
Content-Type: application/json

[{"id": "9e89cc6f0bc3c38722009fe6857087b486531f9a779a0c17e3ed29dae8f12c4f",
"checksum": "b486531f9a779a0c17e3ed29dae8f12c4f9e89cc6f0bc3c38722009fe6857087"},
{"id": "ertwetewtwe38722009fe6857087b486531f9a779a0c1dfddgfgsdgdsgds",
"checksum": "34t23f23fc17e3ed29dae8f12c4f9e89cc6f0bsdfgfsdgdsgdsgerwgew"}]

বাট: নতুন ডকার বিতরণে এটি এখন কীভাবে কাজ করছে তা নয়628 সংখ্যাটি দেখুন : "ট্যাগ নামের ইমেজ আইডি পান"

/v1/রেজিস্ট্রি প্রতিক্রিয়া /repositories/<repo>/tagsট্যাগ হ্যান্ডেল সহ ইমেজ আইডি তালিকা করতেন।
/v2/হ্যান্ডেলটি কেবল মনে হচ্ছে।

স্থানীয়ভাবে পাওয়া আইডির সাথে তুলনা করতে আইডিটি পাওয়া দরকারী হবে। আমি যে আইডিটি সন্ধান করতে পারি তার একমাত্র জায়গাটি v1Compatম্যানিফেস্টের বিভাগে (যা আমি চাই তথ্যের জন্য ওভারকিল)

বর্তমান (2015 সালের মাঝামাঝি) উত্তরটি হ'ল:

ভি 1 এআইপি-র এই সম্পত্তি ব্যাকএন্ডে চিত্রগুলি যেভাবে সংরক্ষণ করা হয় তার জন্য খুব কম্পিউটেশনাল ব্যয়বহুল। গৌণ অনুসন্ধানটি এড়াতে কেবল ট্যাগগুলির নাম গণনা করা হয়।
তদ্ব্যতীত, ভি 2 এপিআই চিত্র আইডিগুলিতে ডিল করে না। বরং স্তরগুলি সনাক্ত করতে এটি হজম ব্যবহার করে, যা স্তরটির সম্পত্তি হিসাবে গণনা করা যেতে পারে এবং স্বতন্ত্রভাবে যাচাইযোগ্য।


4

কিছু ক্ষেত্রে কাজ না করার জন্য আমি উপরের পদ্ধতিগুলি পেয়েছি। তারা হয়:

  • একই হ্যাশ দিয়ে একাধিক চিত্রের সাথে ভাল ব্যবহার করবেন না (.RepoDigests পরামর্শের ক্ষেত্রে - যখন আপনি একটি নির্দিষ্ট রেজিস্ট্রি পাথ ব্যবহার করতে চান)
  • ইমেজটিকে রেজিস্ট্রিগুলিতে ঠেলে দেওয়ার পরে ভাল কাজ করবেন না (যদি এটি একটি স্থানীয় হ্যাশ হয় তবে রেজিস্ট্রিতে হ্যাশ নয়)।

নীচের পদ্ধতিটি সূক্ষ্ম, তবে নির্দিষ্ট ধাক্কা পাত্রে নির্দিষ্ট পূর্ণ 'নাম' এবং হ্যাশটি বের করার জন্য কাজ করে।

এখানে দৃশ্যধারণ করা হয়েছে - একই রেপোতে একটি চিত্র পৃথকভাবে 2 টি পৃথক প্রকল্পে আপলোড করা হয়, সুতরাং রেপোডিজেটসকে জিজ্ঞাসাবাদ করে 2 টি ফলাফল ফিরে আসে।

$ docker inspect --format='{{.RepoDigests}}' gcr.io/alpha/homeapp:latest

[gcr.io/alpha/homeapp@sha256:ce7395d681afeb6afd68e73a8044e4a965ede52cd0799de7f97198cca6ece7ed gcr.io/beta/homeapp@sha256:ce7395d681afeb6afd68e73a8044e4a965ede52cd0799de7f97198cca6ece7ed]

আমি আলফা ফলাফলটি ব্যবহার করতে চাই, তবে এটি কোন সূচকটি হবে তা পূর্বাভাস দিতে পারি না। সুতরাং বন্ধনীগুলি সরানোর জন্য এবং পাঠ্য আউটপুটটি আমারে পৃথক লাইনে প্রতিটি এন্ট্রি পাওয়ার প্রয়োজন entry সেখান থেকে আমি সহজেই ফলাফলটি গ্রেপ করতে পারি।

$ docker inspect --format='{{.RepoDigests}}' gcr.io/alpha/homeapp:latest | sed 's:^.\(.*\).$:\1:' | tr " " "\n" | grep alpha

gcr.io/alpha/homeapp@sha256:ce7395d681afeb6afd68e73a8044e4a965ede52cd0799de7f97198cca6ece7ed 

3

@ জেলফায়ার দ্বারা যেমনটি উল্লেখ করা হয়েছে, হজম ব্যবহার করা ভাল উপায় নয় কারণ এটি স্থানীয়-কেবল চিত্রের জন্য বিদ্যমান না। আমি ধরে নিচ্ছি ইমেজ আইডি শা ট্যাগ / টান / পুশ ইত্যাদি জুড়ে সবচেয়ে নির্ভুল এবং ধারাবাহিক ume

docker inspect --format='{{index .Id}}' $IMAGE

কৌতুক করে।


2

সংশ্লিষ্ট সংগ্রহস্থল থেকে চিত্রটি টানানোর সময় আপনি এটি সন্ধান করতে পারেন। নীচে কমান্ড ডাইজেস্টের উল্লেখ করেছে: ডকার চিত্রটি টানার সময় sha256।

09:33 AM##~::>docker --version
Docker version 19.03.4, build 9013bf5

ডাইজেস্ট: sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d

09:28 AM##~::>docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
7ddbc47eeb70: Pull complete
c1bbdc448b72: Pull complete
8c3b70e39044: Pull complete
45d437916d57: Pull complete
**Digest: sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d**
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

ছবিটি ডাউনলোড হয়ে গেলে, আমরা নিম্নলিখিতটি করতে পারি

"উবুন্টু @ sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d"

09:36 AM##~::>docker inspect ubuntu | grep -i sha256
        "Id": "sha256:775349758637aff77bf85e2ff0597e86e3e859183ef0baba8b3e8fc8d3cba51c",
            **"ubuntu@sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d"**
            "Image": "sha256:f0caea6f785de71fe8c8b1b276a7094151df6058aa3f22d2902fe6b51f1a7a8f",
            "Image": "sha256:f0caea6f785de71fe8c8b1b276a7094151df6058aa3f22d2902fe6b51f1a7a8f",
                "sha256:cc967c529ced563b7746b663d98248bc571afdb3c012019d7f54d6c092793b8b",
                "sha256:2c6ac8e5063e35e91ab79dfb7330c6154b82f3a7e4724fb1b4475c0a95dfdd33",
                "sha256:6c01b5a53aac53c66f02ea711295c7586061cbe083b110d54dafbeb6cf7636bf",
                "sha256:e0b3afb09dc386786d49d6443bdfb20bc74d77dcf68e152db7e5bb36b1cca638"

1

কেবল docker pull tomcat:7-jre8আবার ইস্যু করুন এবং আপনি যা চান তা পাবেন।

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