RUN
এভারটাইম ডকার সাফল্যের সাথে একটি ডকফাইফাইল থেকে একটি কমান্ড কার্যকর করে, চিত্র ফাইল সিস্টেমের একটি নতুন স্তর প্রতিশ্রুতিবদ্ধ। সুবিধার্থে আপনি এই স্তরগুলি আইডিকে একটি নতুন ধারক শুরু করতে চিত্র হিসাবে ব্যবহার করতে পারেন।
নিম্নলিখিত ডকফেরাইল নিন:
FROM busybox
RUN echo 'foo' > /tmp/foo.txt
RUN echo 'bar' >> /tmp/foo.txt
এবং এটি নির্মাণ:
$ docker build -t so-2622957 .
Sending build context to Docker daemon 47.62 kB
Step 1/3 : FROM busybox
---> 00f017a8c2a6
Step 2/3 : RUN echo 'foo' > /tmp/foo.txt
---> Running in 4dbd01ebf27f
---> 044e1532c690
Removing intermediate container 4dbd01ebf27f
Step 3/3 : RUN echo 'bar' >> /tmp/foo.txt
---> Running in 74d81cb9d2b1
---> 5bd8172529c1
Removing intermediate container 74d81cb9d2b1
Successfully built 5bd8172529c1
আপনি এখন থেকে একটি নতুন ধারক শুরু করতে পারেন 00f017a8c2a6
, 044e1532c690
এবং 5bd8172529c1
:
$ docker run --rm 00f017a8c2a6 cat /tmp/foo.txt
cat: /tmp/foo.txt: No such file or directory
$ docker run --rm 044e1532c690 cat /tmp/foo.txt
foo
$ docker run --rm 5bd8172529c1 cat /tmp/foo.txt
foo
bar
অবশ্যই আপনি ফাইল সিস্টেমটি অন্বেষণ করতে এবং কমান্ড ব্যবহার করে দেখতে শেল শুরু করতে চাইতে পারেন:
$ docker run --rm -it 044e1532c690 sh
/ # ls -l /tmp
total 4
-rw-r--r-- 1 root root 4 Mar 9 19:09 foo.txt
/ # cat /tmp/foo.txt
foo
যখন কোনও ডকফাইফিল কমান্ড ব্যর্থ হয়, আপনার প্রথমে লেয়ারের আইডিটি সন্ধান করা এবং সেই আইডি থেকে তৈরি একটি পাত্রে একটি শেল চালানো দরকার:
docker run --rm -it <id_last_working_layer> bash -il
একবার পাত্রে:
- ব্যর্থ কমান্ড চেষ্টা করুন, এবং সমস্যা পুনরুত্পাদন
- তারপরে কমান্ডটি ঠিক করুন এবং এটি পরীক্ষা করুন
- অবশেষে স্থির কমান্ড দিয়ে আপনার ডকফেরাইল আপডেট করুন
আপনার যদি সত্যিকারের লেয়ারটি শেষ কার্যকারী স্তরটি থেকে কাজ করার পরিবর্তে ব্যর্থ হয় তবে পরীক্ষা করতে হবে তবে ড্রয়ের উত্তর দেখুন ।
/var/lib/docker/aufs/diff/3afa404e[...]/.cpanm
সেগুলি সম্পর্কে ডকারের অভ্যন্তরীণ এবং আমি তাদের সাথে