ডকার চিত্র "স্তরগুলি" কী?


165

আমি ডকারের জন্য একেবারে নতুন এবং ডকারের চিত্রটি ঠিক কী তা বোঝার চেষ্টা করছি । ডকার চিত্রের প্রতিটি একক সংজ্ঞা "স্তর" শব্দটি ব্যবহার করে তবে স্তর দ্বারা কী বোঝানো হয় তা নির্ধারণ করে বলে মনে হয় না ।

অফিসিয়াল ডকার ডক্স থেকে :

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

সুতরাং আমি জিজ্ঞাসা, একটি স্তর কি (ঠিক); কেউ কি তার কয়েকটি দৃ concrete় উদাহরণ দিতে পারে? এবং এই স্তরগুলি কীভাবে একটি চিত্র তৈরি করতে "একসাথে স্ন্যাপ" করবে?

উত্তর:


132

আমি হয়ত দেরি করতে পেরেছি, তবে এখানে আমার 10 সেন্ট (আশীষইনের জবাবের পরিপূরক):

মূলত, একটি স্তর, বা চিত্র স্তর হ'ল একটি চিত্র বা একটি মধ্যবর্তী চিত্রের পরিবর্তন । প্রতিটি কমান্ড আপনাকে উল্লেখ ( FROM, RUN, COPY, ইত্যাদি) আপনার Dockerfile এ, পরিবর্তনের পূর্ববর্তী চিত্র ঘটায় এইভাবে একটি নতুন লেয়ার তৈরি করা। আপনি যখন গিট ব্যবহার করছেন তখন আপনি এটি মঞ্চ পরিবর্তন হিসাবে ভাবতে পারেন: আপনি কোনও ফাইলের পরিবর্তন যোগ করেন, তারপরে অন্য একটি, তার পরে অন্যটি ...

নিম্নলিখিত ডকফায়াইল বিবেচনা করুন:

FROM rails:onbuild
ENV RAILS_ENV production
ENTRYPOINT ["bundle", "exec", "puma"]

প্রথমত, আমরা একটি শুরুর চিত্রটি চয়ন করি: rails:onbuildযার পরিবর্তে অনেক স্তর থাকে । আমরা আমাদের প্রারম্ভিক চিত্রের উপরে আরেকটি স্তর যুক্ত করি, কমান্ডের RAILS_ENVসাহায্যে পরিবেশের পরিবর্তনশীল সেট করি ENV। তারপরে, আমরা ডকারকে চালনার জন্য বলি bundle exec puma(যা রেল সার্ভারটি বুট করে)। এটি অন্য স্তর।

চিত্রগুলি তৈরির সময় স্তরগুলির ধারণাটি কার্যকর হয়। স্তরগুলি অন্তর্বর্তী চিত্র, কারণ আপনি যদি আপনার ডকফাইফিলে পরিবর্তন করেন তবে ডকার কেবলমাত্র সেই স্তরটি তৈরি করবে যা পরিবর্তিত হয়েছিল এবং তার পরে এটিগুলি । একে বলা হয় লেয়ার ক্যাচিং।

আপনি এটি সম্পর্কে এখানে আরও পড়তে পারেন ।


13
যদি আপনি একটি স্তর পরিবর্তন করেন বা যোগ করেন তবে ডকার পরে যে কোনও স্তরও তৈরি করবেন যা সেগুলি পরে পরিবর্তিত হতে পারে।
আদম

অন্যান্য উত্তরগুলি থেকে অনুপস্থিত স্তরগুলির ধারণার পিছনে কারণ ব্যাখ্যা করার জন্য ধন্যবাদ Thanks
সীতা সোমগনি

@ ডেভিড, উপরের উদাহরণে কয়টি স্তর যুক্ত হবে? 2? বা 1?
গৌরব

1
@ গৌরবসিংলা এটি ২ হওয়া উচিত Change দেখে মনে হচ্ছে স্তরটি গিটের প্রতিশ্রুতিবদ্ধ।
পোকারফেরিস

সর্বশেষ ওয়েব লিঙ্কটি ( https://labs.ctl.io/caching-docker-images/) ভাঙ্গা। প্রতিস্থাপনের জন্য কেউ পরামর্শ পেয়েছেন?
জনি উটাহ

72

একটি ডকারফর্ম ব্যবহার করে একটি ডকারের ধারক চিত্র তৈরি করা হয় । ডকফাইফাইলের প্রতিটি লাইন একটি স্তর তৈরি করবে। নিম্নলিখিত ডামি উদাহরণ বিবেচনা করুন:

FROM ubuntu             #This has its own number of layers say "X"
MAINTAINER FOO          #This is one layer 
RUN mkdir /tmp/foo      #This is one layer 
RUN apt-get install vim #This is one layer 

এটি একটি চূড়ান্ত চিত্র তৈরি করবে যেখানে মোট স্তরগুলির সংখ্যা হবে এক্স + 3


32
যদিও আমি ডাউনওয়েট করি নি, আমার ধারণাটি হ'ল এটি স্তরগুলি কীভাবে তৈরি করবেন তা ব্যাখ্যা করে তবে কোনও স্তর কী তা সম্পর্কে কোনওভাবেই প্রশ্নের উত্তর দেয় না ।
লাসে ভি কার্লসেন

2
আমি @ ল্যাসেভি.কার্লসেনের সাথে একমত, অ্যাশিষজাইন। আমি আপনাকে হ্রাস করতে পারি নি এবং আসলে আমাকে সাহায্য করার চেষ্টা করার জন্য আপনাকে উত্সাহিত করছি (সুতরাং +1) - তবে আমাকে আপনাকে সবুজ চেক দিতে সক্ষম হওয়ার জন্য, আমাকে বুঝতে হবে যে একটি স্তর আসলে কী! আবারও ধন্যবাদ, চালিয়ে যাও!
বুক করুন

3
সেরা উত্তর imo। আমাদের মধ্যে যারা "ডকার ব্যবহার করে" চলে যান তাদের জন্য স্তরগুলি কীভাবে কাজ করে তা আমাদের সূচনা দেয়।
ডিসিটি

6
"ডকফাইফিলের প্রতিটি লাইন একটি স্তর তৈরি করবে" - এটি আমার পক্ষে জানার জন্য খুব সহায়ক ছিল
আকিরেকাডু

2
@কিরেকাডু এটি সম্পূর্ণ গল্প নয়। বেশিরভাগ লাইন একটি স্তর তৈরি করবে তবে কেবল ADD, COPY বা RUN নির্দেশাবলী স্তর তৈরি করবে যা ফলস্বরূপ ধারক ইমেজের আকার বাড়িয়ে তুলবে। আমি বেশিরভাগ লাইন বলেছি কারণ আপনি যদি একসাথে কমান্ডগুলি শৃঙ্খলাবদ্ধ করেন, বা ব্যাকস্ল্যাশ দিয়ে নিউলাইনগুলি অবলম্বন করেন তবে শৃঙ্খলিত কমান্ডগুলির ক্রম / পলায়ন করা নিউলাইনগুলি একক কমান্ড গঠন করবে।
স্কট সিমন্তিস

41

তারা একটি উদাহরণ দিয়ে আমার কাছে সর্বাধিক উপলব্ধি করে ...

আপনার নিজের বিল্ডের স্তরগুলি ডকার ডিফের সাথে পরীক্ষা করে

আসুন একটি স্বীকৃত উদাহরণ ডকফেরফাইল নিতে দাও:

FROM busybox

RUN mkdir /data
# imagine this is downloading source code
RUN dd if=/dev/zero bs=1024 count=1024 of=/data/one 
RUN chmod -R 0777 /data
# imagine this is compiling the app
RUN dd if=/dev/zero bs=1024 count=1024 of=/data/two 
RUN chmod -R 0777 /data
# and now this cleans up that downloaded source code
RUN rm /data/one 

CMD ls -alh /data

এই ddকমান্ডগুলির প্রত্যেকটি ডিস্কে 1M ফাইল আউটপুট করে। অস্থায়ী পাত্রে সংরক্ষণ করতে অতিরিক্ত পতাকা দিয়ে চিত্রটি তৈরি করতে দেয়:

docker image build --rm=false .

আউটপুটে, আপনি প্রতিটি চলমান কমান্ড অস্থায়ী পাত্রে ঘটতে দেখবেন যা আমরা এখন স্বয়ংক্রিয়ভাবে মোছার পরিবর্তে রাখি:

...
Step 2/7 : RUN mkdir /data
 ---> Running in 04c5fa1360b0
 ---> 9b4368667b8c
Step 3/7 : RUN dd if=/dev/zero bs=1024 count=1024 of=/data/one
 ---> Running in f1b72db3bfaa
1024+0 records in
1024+0 records out
1048576 bytes (1.0MB) copied, 0.006002 seconds, 166.6MB/s
 ---> ea2506fc6e11

আপনি যদি docker diffসেই কনটেইনার আইডির প্রত্যেকটিতে একটি চালনা করেন তবে আপনি দেখতে পাবেন যে সেই পাত্রে কী ফাইল তৈরি হয়েছিল:

$ docker diff 04c5fa1360b0  # mkdir /data
A /data
$ docker diff f1b72db3bfaa  # dd if=/dev/zero bs=1024 count=1024 of=/data/one
C /data
A /data/one
$ docker diff 81c607555a7d  # chmod -R 0777 /data
C /data
C /data/one
$ docker diff 1bd249e1a47b  # dd if=/dev/zero bs=1024 count=1024 of=/data/two
C /data
A /data/two
$ docker diff 038bd2bc5aea  # chmod -R 0777 /data
C /data/one
C /data/two
$ docker diff 504c6e9b6637  # rm /data/one
C /data
D /data/one

একটির সাথে উপস্থাপিত প্রতিটি লাইন Aফাইল যুক্ত করছে, Cবিদ্যমান ফাইলে পরিবর্তনের Dইঙ্গিত দেয় এবং মুছে ফেলা নির্দেশ করে।

এখানে টিএল; ডিআর অংশ

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

বিদ্যমান চিত্র পরীক্ষা করা হচ্ছে

আপনি কমান্ডগুলি দেখতে পাবেন যা কমান্ডটি দিয়ে একটি বিদ্যমান চিত্রের স্তর তৈরি করতে যায় docker history। আপনি docker image inspectকোনও ছবিতে একটি চালনাও করতে পারবেন এবং রুটএফএস বিভাগের অধীন স্তরগুলির তালিকা দেখতে পাবেন।

উপরের চিত্রটির ইতিহাস এখানে:

IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
a81cfb93008c        4 seconds ago       /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "ls -…   0B
f36265598aef        5 seconds ago       /bin/sh -c rm /data/one                         0B
c79aff033b1c        7 seconds ago       /bin/sh -c chmod -R 0777 /data                  2.1MB
b821dfe9ea38        10 seconds ago      /bin/sh -c dd if=/dev/zero bs=1024 count=102…   1.05MB
a5602b8e8c69        13 seconds ago      /bin/sh -c chmod -R 0777 /data                  1.05MB
08ec3c707b11        15 seconds ago      /bin/sh -c dd if=/dev/zero bs=1024 count=102…   1.05MB
ed27832cb6c7        18 seconds ago      /bin/sh -c mkdir /data                          0B
22c2dd5ee85d        2 weeks ago         /bin/sh -c #(nop)  CMD ["sh"]                   0B
<missing>           2 weeks ago         /bin/sh -c #(nop) ADD file:2a4c44bdcb743a52f…   1.16MB

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

স্তর কেন?

স্তরগুলির কয়েকটি সুবিধা রয়েছে। প্রথমত, তারা পরিবর্তনযোগ্য। একবার তৈরি হয়ে গেলে, sha256 হ্যাশ দ্বারা চিহ্নিত সেই স্তরটি কখনই পরিবর্তিত হবে না। সেই অপরিবর্তনীয়তা চিত্রগুলিকে নিরাপদে তৈরি এবং একে অপরের কাঁটাচামচ করতে দেয়। যদি দুটি ডকফায়াইলের একই প্রাথমিক লাইনের সেট থাকে এবং একই সার্ভারে নির্মিত হয় তবে তারা ডিস্কের স্থান সাশ্রয় করে প্রাথমিক স্তরগুলির একই সেটটি ভাগ করে দেবে। এর অর্থ হ'ল যদি আপনি কোনও চিত্র পুনর্নির্মাণ করেন, তবে ডকফাইফিলের শেষ কয়েকটি লাইন পরিবর্তনের অভিজ্ঞতা রয়েছে, কেবল সেই স্তরগুলি পুনরায় তৈরি করা দরকার এবং বাকী স্তর স্তরটি পুনরায় ব্যবহার করা যেতে পারে। এটি খুব দ্রুত ডকারের চিত্রগুলি পুনর্নির্মাণ করতে পারে।

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

স্তর ফোটা কমাতে

স্তরগুলির একটি নেতিবাচক চিত্রগুলি তৈরি করা হচ্ছে যা নকল ফাইল বা শিপ ফাইলগুলি পরের স্তরে মুছে ফেলা হয়। সমাধানটি প্রায়শই একক RUNকমান্ডে একাধিক কমান্ড একত্রিত করা হয় । বিশেষত আপনি যখন বিদ্যমান ফাইলগুলি সংশোধন করছেন বা ফাইলগুলি মুছছেন, আপনি সেই পদক্ষেপগুলি একই কমান্ডে চালিত করতে চান যেখানে সেগুলি প্রথম তৈরি করা হয়েছিল। উপরের ডকফেরফিলের একটি পুনর্লিখন এর মতো দেখাবে:

FROM busybox

RUN mkdir /data \
 && dd if=/dev/zero bs=1024 count=1024 of=/data/one \
 && chmod -R 0777 /data \
 && dd if=/dev/zero bs=1024 count=1024 of=/data/two \
 && chmod -R 0777 /data \
 && rm /data/one

CMD ls -alh /data

এবং যদি আপনি ফলাফলগুলি তুলনা করেন:

  • ব্যস্তবক্স: M 1MB
  • প্রথম চিত্র: 6MB
  • দ্বিতীয় চিত্র: M 2MB

সংক্ষিপ্ত উদাহরণে কিছু লাইন একত্রিত করে আমরা আমাদের চিত্রটিতে একই ফলস্বরূপ সামগ্রী পেয়েছি এবং আপনি আমাদের চূড়ান্ত চিত্রটিতে দেখতে পেলেন এমন 5MB থেকে 1MB ফাইলের মধ্যে আমাদের চিত্র সঙ্কুচিত করে।


ফাইল রিডের সময় স্তরগুলি অতিক্রম করা কিছু ওভারহেডকে ডেকে আনে? এই ওভারহেডটি সংরক্ষণ করার জন্য, এক RUN- তে একাধিক কমান্ড (যেভাবেই হোক একসাথে চালানো দরকার) একত্রিত করার অর্থ কী?
সের্গি কোলেস্নিকভ

@ সের্গি কোলেস্নিকভ আপনি সময়োপযোগী অনুকূলকরণের জন্য কতটা সময় ব্যয় করতে চান তার উপর নির্ভর করে। ঝুঁকিটি কয়েক ঘন্টা বিকাশকারী সময় ব্যয় করা, যোগ ব্যান্ডউইথ এবং স্টোরেজ gigs, রানটাইমের মিলিসেকেন্ড সংরক্ষণ করতে। পারফরম্যান্স সম্পর্কিত অনেকগুলি জিনিসের মতোই, চূড়ান্ততা রয়েছে এবং এটি সমাধানের চেষ্টা করার আগে সমস্যাটি পরিমাপ করা দরকার।
বিএমবিচ

19

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

উদাহরণস্বরূপ, একটি বেস ইমেজ থেকে একটি স্থানীয়ভাবে নির্মিত ছবিতে, এর কথা বলা যাক, ubuntu:14.04, docker historyকমান্ড ইমেজ শৃঙ্খল উৎপাদ কিন্তু ইমেজ ID গুলির মধ্যে কয়েকটি হিসাবে 'নিখোঁজ' কারণ বিল্ড ইতিহাস আর লোড হয় দেখানো হবে। এবং এই চিত্রগুলি রচনা করে এমন স্তরগুলি এর মাধ্যমে খুঁজে পাওয়া যাবে

docker inspect <image_id> | jq -r '.[].RootFS'

/var/lib/docker/aufs/diffস্টোরেজ ড্রাইভার নির্বাচন করা হলে স্তর সামগ্রী সংরক্ষণ করা হয় aufs। তবে স্তরগুলি এলোমেলোভাবে উত্পন্ন ক্যাশে আইডি দিয়ে নামকরণ করা হয়েছে, এটি একটি স্তর এবং এর ক্যাশে আইডিটির মধ্যে লিঙ্কটি সুরক্ষার কারণে কেবল ডকার ইঞ্জিনের কাছেই পরিচিত। আমি এখনও এটির জন্য একটি উপায় খুঁজছি

  1. একটি চিত্র এবং এর রচনা স্তর (গুলি) এর মধ্যে সম্পর্কিত সম্পর্ক
  2. আসল অবস্থান এবং ডিস্কের একটি স্তরের আকার

এই ব্লগটি অনেক অন্তর্দৃষ্টি প্রদান করেছে।


এই এসও এন্ট্রিতে আমি পোস্ট করা দুটি প্রশ্নের উত্তর দেওয়ার একটি বরং নিষ্পাপ উপায় পোস্ট করেছি।
রুইফেং মা

13

পার ডকারের মবি প্রকল্পের মাধ্যমে চিত্রটি :

চিত্রগুলি স্তরগুলি সমন্বয়ে গঠিত। প্রতিটি স্তর ফাইল সিস্টেমের পরিবর্তনের একটি সেট। স্তরগুলির কনফিগারেশন মেটাডেটা যেমন পরিবেশের ভেরিয়েবল বা ডিফল্ট আর্গুমেন্ট নেই - এগুলি কোনও নির্দিষ্ট স্তরের পরিবর্তে পুরো চিত্রটির বৈশিষ্ট্য।

সুতরাং, মূলত, একটি স্তর হ'ল ফাইল সিস্টেমে পরিবর্তনের একটি সেট।


এটি পেতে আমাকে কেবল কয়েক ঘন্টা সময় লেগেছে, তবে এই মার্জিত-সহজ উত্তর দিয়ে শেষ পর্যন্ত আমি বুঝতে পারি যে স্তরটি কী: "Each [Docker] layer is a set of filesystem changes."(এটি সত্য বলে ধরে নিচ্ছি)) অন্যান্য কারণে বেশ কয়েকটি ডকস / পড়ার সময় আমি এই মৌলিক বিষয়টি বুঝতে পারি নি / ব্লগস / কিউ + এ এর ​​/ ইত্যাদি, এবং আমি সন্দেহ করি যে সীমাবদ্ধতাটি তাদের ছিল এবং আমার নয়। বিষয়টি নির্বিশেষে, ব্রোভো আদিত্য বিষয়টি হৃদয়গ্রাহী হওয়ার জন্য।
জনি উটাহ

12

আমি মনে করি সরকারী দস্তাবেজটি একটি সুন্দর বিস্তারিত ব্যাখ্যা দিয়েছে: https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/


(সূত্র: ডকার ডটকম )

একটি চিত্র অনেকগুলি স্তর নিয়ে থাকে যা সাধারণত ডকফাইফাইল থেকে উত্পন্ন হয়, ডকফাইফিলের প্রতিটি লাইন একটি নতুন স্তর তৈরি করবে, এবং ফলাফলটি একটি চিত্র, যা ফর্ম দ্বারা চিহ্নিত করা হয়েছে repo:tag, যেমনubuntu:15.04

আরও তথ্যের জন্য, দয়া করে উপরের অফিসিয়াল ডক্সটি পড়ার বিষয়টি বিবেচনা করুন।


2

দরকারী তথ্যের জন্য আপনাকে ডেভিড কাস্টিলো ধন্যবাদ জানাই । আমি মনে করি স্তরটি কোনও বাইনারি পরিবর্তন বা কোনও চিত্রের নির্দেশ যা সহজেই করা যায় বা পূর্বাবস্থায় ফিরে যেতে পারে। তারা ধাপে ধাপে সম্পন্ন হয় যা একটি স্তরের স্তরের মতো হয়, তাই আমরা "স্তর" বলে থাকি।

আরও তথ্যের জন্য আপনি "ডকারের ইতিহাস" এর মতো দেখতে পাবেন:

ডকার ইমেজ - ট্রি
সতর্কতা: '--ট্রি' অবমূল্যায়ন করা হয়েছে, এটি শীঘ্রই সরানো হবে। ব্যবহার দেখুন।
11511136ea3c5a ভার্চুয়াল আকার: 0 বি ট্যাগ: স্ক্র্যাচ: সর্বশেষ
  └─59e359cb35ef ভার্চুয়াল আকার: 85.18 মেগাবাইট
    8e8d37d9e3476 ভার্চুয়াল আকার: 85.18 মেগাবাইট ট্যাগ্স: দেবিয়ান: হুইজি
      5c58b36b8f285 ভার্চুয়াল আকার: 85.18 মেগাবাইট
        └─90ea6e05b074 ভার্চুয়াল আকার: 118.6 মেগাবাইট
          D5dc74cffc471 ভার্চুয়াল আকার: 118.6 এমবি ট্যাগ্স: ভিম: সর্বশেষ


5
স্তর সম্পর্কিত একটি নতুন তথ্য পেয়েছে : ডকার যখন রুটফগুলি মাউন্ট করে, তখন এটি কেবল পঠনযোগ্য শুরু হয়, যেমন একটি Linuxতিহ্যবাহী লিনাক্স বুটের মতো, তবে তারপরে ফাইল-সিস্টেমকে পঠন-লিখনের মোডে পরিবর্তনের পরিবর্তে, ইউনিয়ন মাউন্ট যুক্ত করার জন্য এটি গ্রহণ করে পঠনযোগ্য ফাইল সিস্টেমের মধ্যে একটি পঠন-রাইটিং ফাইল সিস্টেম। আসলে একাধিক পঠনযোগ্য ফাইল সিস্টেম একে অপরের উপরে সজ্জিত থাকতে পারে। আমরা এই ফাইল সিস্টেমগুলির প্রত্যেকটিকে একটি স্তর হিসাবে ভাবি
হিপরোজ

1

আমার ব্যক্তিগত বোধগম্যতা হল আমরা গিথুব কমিটের সাথে ডকার স্তরটির তুলনা করতে পারি। আপনার বেস ইমেজ (আপনার তাজা মাস্টার রেপো) এর জন্য, আপনি বেশ কয়েকটি কমিট করেন, প্রতিটি প্রতিশ্রুতি আপনার মাস্টার স্ট্যাটাস পরিবর্তন করে চলেছে, এটি ডকারে একই, প্রতিটি স্তর পূর্ববর্তী মধ্যবর্তী স্তরটির উপর ভিত্তি করে কিছু অপারেশন করছে। এবং তারপরে, এই স্তরটি পরবর্তী স্তরটিতে একটি নতুন মধ্যবর্তী স্তর হয়ে উঠবে।


0

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

এই দুটি ডকফিলিলস দেওয়া হয়েছে

FROM bash
RUN mkdir /data
RUN dd if=/dev/zero bs=1024 count=1024 of=/data/one
RUN dd if=/dev/zero bs=1024 count=1024 of=/data/two
RUN dd if=/dev/zero bs=1024 count=1024 of=/data/three

এবং

FROM bash
RUN mkdir /data
RUN dd if=/dev/zero bs=1024 count=1024 of=/data/three
RUN dd if=/dev/zero bs=1024 count=1024 of=/data/two
RUN dd if=/dev/zero bs=1024 count=1024 of=/data/one

যদি তারা কেবল ফাইল সিস্টেমে পরিবর্তিত হয় তবে একই স্তরগুলির একটি সেট আশা করতে পারে, তবে এটি এমন নয়:

$ docker history img_1
IMAGE               CREATED             CREATED BY                                      SIZE
30daa166a9c5        6 minutes ago       /bin/sh -c dd if=/dev/zero bs=1024 count=102…   1.05MB
4467d16e79f5        6 minutes ago       /bin/sh -c dd if=/dev/zero bs=1024 count=102…   1.05MB
c299561fd031        6 minutes ago       /bin/sh -c dd if=/dev/zero bs=1024 count=102…   1.05MB
646feb178431        6 minutes ago       /bin/sh -c mkdir /data                          0B
78664daf24f4        2 weeks ago         /bin/sh -c #(nop)  CMD ["bash"]                 0B
<missing>           2 weeks ago         /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B
<more missing...>

এবং

$ docker history img_2
IMAGE               CREATED             CREATED BY                                      SIZE
f55c91305f8c        6 minutes ago       /bin/sh -c dd if=/dev/zero bs=1024 count=102…   1.05MB
29b3b627c76f        6 minutes ago       /bin/sh -c dd if=/dev/zero bs=1024 count=102…   1.05MB
18360be603aa        6 minutes ago       /bin/sh -c dd if=/dev/zero bs=1024 count=102…   1.05MB
646feb178431        6 minutes ago       /bin/sh -c mkdir /data                          0B
78664daf24f4        2 weeks ago         /bin/sh -c #(nop)  CMD ["bash"]                 0B
<missing>           2 weeks ago         /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B
<more missing...>

উভয় ক্ষেত্রেই ফাইল সিস্টেমে পরিবর্তনগুলি একইরূপে হওয়া সত্ত্বেও, আপনি দেখতে পারেন order

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