কীভাবে ডকার চিত্রের সামগ্রী দেখতে পাবেন


292

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



10
ডুপ নয়। ধারক এবং চিত্র দেখা একই জিনিস নয়। আপনি প্রাথমিক ফাইল সিস্টেমটি দেখতে বা এমনকি এটি যাচাই করতে চাইতে পারেন যে এটি চালানোর সুযোগ পাওয়ার আগে চিত্রের অভ্যন্তরে দূষিত কিছু নেই।
কেইলারন

4
আপনি যদি চিত্রটি ধারক হিসাবে চালাতে না পারেন তবে আপনি ড্রাইভের মতো একটি সরঞ্জাম ( github.com/wagoodman/dive ) ব্যবহার করতে পারেন বা ডক ফাইল হিসাবে চিত্রটি রফতানি করতে ডকার সেভ ব্যবহার করতে পারেন। তারপরে আপনি ডারটি বা ডাইভের সাহায্যে চিত্রটি অন্বেষণ করতে পারবেন explore
FunThomas424242

নেই একটি প্রতারিত কিন্তু আপনি এখানে উত্তর পেতে পারবেন: stackoverflow.com/a/40324326/5641227
খলিল Gharbaoui

উত্তর:


373

আপনি কেবল সেই চিত্রটি ব্যবহার করে একটি ইন্টারেক্টিভ শেল ধারক চালনা করতে পারেন এবং ছবিটিতে যা কিছু সামগ্রী রয়েছে তা অন্বেষণ করতে পারেন।

এই ক্ষেত্রে:

docker run -it image_name sh

অথবা একটি সহ চিত্রগুলির জন্য অনুসরণ করা entrypoint

docker run -it --entrypoint sh image_name

অথবা, আপনি যদি চিত্রটি কীভাবে তৈরি হয়েছিল তা দেখতে চান তবে এর পদক্ষেপগুলির অর্থ Dockerfileআপনি করতে পারেন:

docker image history --no-trunc image_name > image_history

পদক্ষেপগুলি image_historyফাইলটিতে লগ ইন করা হবে।


1
ধন্যবাদ। প্রথমটি আমি যা খুঁজছি। মূলত ফোল্ডারগুলি অন্বেষণ করুন।
পাইলারন

9
আমি "FROM স্ক্র্যাচ" ব্যবহার করে তৈরি করা একটি চিত্রের সামগ্রীগুলি দেখার চেষ্টা করছি এবং কোনও শেল উপলব্ধ নেই। বিষয়বস্তু দেখার অন্য কোনও উপায় আছে? আমি যে চিত্রটি দেখার চেষ্টা করছি তা হ'ল পোর্টেইনার / পোর্টেইনার।
জুয়ান হার্নান্দেজ

2
এটা কি সম্ভব যে কেউ কোনও পাত্রে স্প্যানিং না করে চিত্রের সামগ্রীগুলি দেখতে পান? বা আমরা কী ধরে নিতে পারি যে এটির থেকে কোনও পাত্রে স্প্যান করার অধিকার না থাকলে এগুলি সবার থেকে নিরাপদ?
শাবিরমীন

3
"এন্ট্রিপয়েন্ট সহ উইন্ডো পাত্রে" এর আগে যা বলা হয়েছিল তা একত্রিত করে: docker run -it --entrypoint cmd <image_name>কাজ করবে।
বায়টান কার্ট

2
@JuanHernandez, হ্যাঁ, আপনি ইমেজ পূর্ণ বিষয়বস্তু যেমন নির্দেশিত ডাম্প করতে stackoverflow.com/a/42677219/320594
যায়েম হাবলুটজেল

197

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

$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured        

এবং এটি ব্যর্থ হবে:

$ docker run --rm -it --entrypoint sh drone/drone
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"sh\": executable file not found in $PATH".

এটি কোনও অস্বাভাবিক কনফিগারেশন নয়; অনেকগুলি ন্যূনতম চিত্রগুলিতে লক্ষ্য পরিষেবাটি সমর্থন করার জন্য প্রয়োজনীয় বাইনারি থাকে। ভাগ্যক্রমে, এমন একটি চিত্র ফাইল-সিস্টেম অনুসন্ধানের ব্যবস্থা আছে যা চিত্রের বিষয়বস্তুর উপর নির্ভর করে না । সবচেয়ে সহজ সম্ভবত হ'ল docker exportআদেশ, যা একটি ধারক সংরক্ষণাগার হিসাবে একটি ধারক ফাইল সিস্টেম রফতানি করবে । সুতরাং, একটি ধারক শুরু করুন (এটি ব্যর্থ হয় বা না তা বিবেচ্য নয়):

$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured        

তারপরে docker exportফাইল সিস্টেমটি রফতানি করতে ব্যবহার করুন tar:

$ docker export $(docker ps -lq) | tar tf -

docker ps -lq"আমাকে সাম্প্রতিকতম Docker পাত্রের আইডি দাও" সেখানে মানে। আপনি এটি একটি সুস্পষ্ট ধারকটির নাম বা আইডি দিয়ে প্রতিস্থাপন করতে পারেন।


5
এই উত্তরটি নির্ধারিত সময়ে কোনও
জোও আন্ড্রেড

2
এই উত্তরটি আরও সঠিক এবং আমার পক্ষে কাজ করে, যেহেতু আমি বিদেশী স্থাপত্যের সাথে চিত্রের বিষয়বস্তুগুলি অন্বেষণ করতে চাই এবং আমি এটি "চালাতে" পারি না
ভ্লাদিমির পেরেভালভ

94

কেবলমাত্র চিত্রের সামগ্রী দেখতে আপনার ধারক শুরু করা উচিত নয়। উদাহরণস্বরূপ, আপনি দূষিত সামগ্রী অনুসন্ধান করতে চাইতে পারেন, এটি চালাবেন না। "রান" এর পরিবর্তে "তৈরি করুন" ব্যবহার করুন;

docker create --name="tmp_$$" image:tag
docker export tmp_$$ | tar t
docker rm tmp_$$

11
উপরের ২ য় লাইনটি কেবলমাত্র ফাইল-সিস্টেমের সামগ্রী তালিকাভুক্ত করে। আপনি যদি সমস্ত ফাইলকে ট্যার হিসাবে পেতে চান তবে আপনি এ জাতীয় কিছু দিয়ে প্রতিস্থাপন করতে পারেন docker export tmp_$$ > image-fs.tar
পিনো

উইন্ডোজ ওএসের জন্য দ্বিতীয় লাইনটি কী হবে? docker export tmp_$$ | tar tকাজ করবে না।
আলেকসেই মেরিনিচেনকো

@ আলেক্সি মেরিনিচেনকো tarআপনার মেশিনে ইনস্টল নাও করতে পারেন। tar --helpএটি পরীক্ষা করার চেষ্টা করুন ।
আব্দুররহমান আই।

1
পাত্রে কোনও শেল না থাকলে এটিও কাজ করে
পিটার ডটচেভ

3
@ অ্যালেক্সেইমারিনিচেনকো আপনি -oলিখতে ফাইল নির্দিষ্ট করতে পরামিতি ব্যবহার করতে পারেন । যেমন docker export -o c:\temp\tmp_$$.tar tmp_$$
গিডিআপহর্সি

62
docker save nginx > nginx.tar
tar -xvf nginx.tar

নিম্নলিখিত ফাইল উপস্থিত:

  • manifest.json - কনটেইনার বৈশিষ্ট্যযুক্ত ফাইল সিস্টেমের স্তর এবং json ফাইলের নাম বর্ণনা করে।
  • .json - ধারক বৈশিষ্ট্য
  • - প্রতিটি "স্তরযুক্ত" ডিরেক্টরিতে স্তর বৈশিষ্ট্য এবং সেই স্তরের সাথে সম্পর্কিত ফাইল সিস্টেমের বিবরণে জাসন ফাইল থাকে। ডকার ইমেজ জুড়ে স্তরগুলি পুনরায় ব্যবহার করে স্টোরেজ স্পেসটি অনুকূল করতে কন্টেইনার চিত্রগুলিকে স্তর হিসাবে স্টোর করে।

https://sreeninet.wordpress.com/2016/06/11/looking-inside-container-images/

অথবা

আপনি টিউআইয়ের সাথে ইন্টারেক্টিভভাবে চিত্রের সামগ্রী দেখতে ডুব ব্যবহার করতে পারেন

এখানে চিত্র বর্ণনা লিখুন

https://github.com/wagoodman/dive


5
এটি আমার কাছে সবচেয়ে দরকারী উত্তর বলে মনে হচ্ছে, কারণ ফাইলগুলি পেতে আপনাকে কোনও ধারক শুরু করতে হবে না।
আলেক থমাস

1
সম্পূর্ণরূপে @ অ্যালেকথোমাস সম্মত হন - এবং এটিকে আরও একধাপ এগিয়ে নিয়ে যাওয়ার জন্য কেন আমার এমনকি প্রয়োজনীয় জিনিসগুলি dockerকেবলমাত্র একটি ভিন্ন ধরণের সংরক্ষণাগার ফাইলের বিষয়বস্তুগুলি দেখার প্রয়োজন কেন ।
এড র‌্যান্ডাল

ভাল উত্তর, আমি ট্যাগটিও উল্লেখ করব: docker save --output nginx.tar nginx:latestঅন্যথায় ডক অনুসারে এতে "সমস্ত পিতামাতার স্তর এবং সমস্ত ট্যাগ + সংস্করণ" থাকবে
তারেক

এটি আপভোট করা উচিত কারণ আপনার অভ্যন্তরে ইউনিক্সের কোনও ব্যবহার না থাকলে সম্ভবত অভ্যন্তরীণ অন্বেষণের একমাত্র উপায়। এছাড়াও এই ভাবে কোনও ধারক তৈরির প্রয়োজন হয় না।
স্টানিস্লাভ জার্মানি-এভুতুশেনকো

9

কোনও চিত্রের বিশদ বিষয়বস্তু তালিকাবদ্ধ করতে আপনাকে রান করতে হবে docker run --rm image/name ls -alRযেখানে --rmএকটি ধারক তৈরি হওয়ার সাথে সাথেই মুছে ফেলতে হবে।

এখানে চিত্র বর্ণনা লিখুন


11
এটি ধরে নিয়েছে যে ছবিটি lsউপলভ্য হয়েছে এবংPATH
বিশৃঙ্খলায়

6

এক্সপ্লোরিং ডকার চিত্র !

  1. জিনিসটা কি শেল ধরনের রয়েছে bashবা shবা ...

    ছবিটি প্রথমে পরীক্ষা করুন: docker inspect name-of-container-or-image

    জসন রিটার্নের জন্য entrypointবা cmdসন্ধান করুন।

  2. তারপরে: docker run --rm -it --entrypoint=/bin/bash name-of-image

    একবার ভিতরে করুন: ls -lsaবা অন্য কোনও শেল কমান্ড যেমন:cd ..

    -itইন্টারেক্টিভ ... এবং TTY জন্য দাঁড়িয়েছে। --rmঅপসারণ ধারক ঘোরা চালানোর পর।


1
এই উত্তরের সমস্যাটি হ'ল, গৃহীত উত্তরে আলোচিত হিসাবে, আপনার চিত্রের কোনও শেল রয়েছে এমন কোনও গ্যারান্টি নেই । বা ls। বা সত্যই কোন সাধারণ সরঞ্জাম।
17

4

আমরা নিম্নলিখিত হিসাবে একটি সহজ চেষ্টা করতে পারেন:

docker image inspect image_id

এটি ডকার সংস্করণে কাজ করেছে:

DockerVersion": "18.05.0-ce"

12
এটি সামগ্রীগুলি প্রদর্শন করে না ; এটি কেবল স্তর ইত্যাদি দেখায় যা চিত্রটি তৈরি করতে গিয়েছিল।
রজার লিপসক্বে

0

উইন্ডোজের জন্য ডকার ইই (হাইপার-ভি সার্ভার 2016-এ 17.06.2-ee-6) সহ উইন্ডোজ কনটেইনারগুলির সমস্ত সামগ্রী C:\ProgramData\docker\windowsfilter\হোস্ট ওএসের পথে পরীক্ষা করা যেতে পারে ।

কোনও বিশেষ মাউন্টিংয়ের প্রয়োজন নেই।

ফোল্ডার উপসর্গ docker ps -aআউটপুট থেকে ধারক আইডি দ্বারা পাওয়া যাবে ।


-1

অ্যাঙ্কোর নামে একটি মুক্ত ওপেন সোর্স সরঞ্জাম রয়েছে যা আপনি ধারক ইমেজগুলি স্ক্যান করতে ব্যবহার করতে পারেন। এই কমান্ডটি আপনাকে ধারক ইমেলে সমস্ত ফাইল তালিকাভুক্ত করার অনুমতি দেবে

অ্যাঙ্কর-ক্লিমে চিত্র সামগ্রীটি মাইরেপো / অ্যাপ্লিকেশন: সর্বশেষ ফাইল

https://anchore.com/opensource/

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