ডকার ইমেজ অপরিবর্তনীয়. একবার নির্মিত, তারা পরিবর্তন হয় না. এটি ধারাবাহিকতা, পূর্বাভাসযোগ্যতা এবং স্থিতিশীলতা নিশ্চিত করে। একই চিত্র থেকে তৈরি প্রতিটি ধারক একইভাবে আচরণ করে এবং সংস্করণ নিরাপদ এবং সহজ হয়ে যায়। কিন্তু আপনি যদি একটি চলমান পাত্রের ভিতরে কিছু পরিবর্তন করতে চান, যেমন একটি প্যাকেজ ইনস্টল করা বা একটি কনফিগারেশন আপডেট করা? সেখানেই ডকার কমিট আসে৷ এটি আপনাকে একটি চলমান পাত্রে পরিবর্তনগুলি ক্যাপচার করতে এবং আসলটিকে স্পর্শ না করে একটি নতুন চিত্র তৈরি করতে দেয়৷ এটি ফিক্সগুলি পরীক্ষা করার জন্য, দ্রুত পুনরাবৃত্তি করার জন্য এবং স্ক্র্যাচ থেকে পুনর্নির্মাণ ছাড়াই কাস্টম চিত্রগুলি রোল আউট করার জন্য দুর্দান্ত৷
বিষয়বস্তুর সারণী
কেন ডকার ইমেজ পরিবর্তন হয় না
ডকার ইমেজ একাধিক পঠনযোগ্য স্তর নিয়ে গঠিত। আপনি যখন একটি ধারক চালান, ডকার উপরে একটি পাতলা লেখার যোগ্য স্তর যোগ করে যাকে কন্টেইনার স্তর বলা হয়। আপনার করা যেকোনো পরিবর্তন শুধুমাত্র এই উপরের স্তরে ঘটবে। একবার ধারকটি মুছে ফেলা হলে, সেই স্তরের সমস্ত পরিবর্তনগুলি অদৃশ্য হয়ে যায়, মূল চিত্রটিকে অপরিবর্তিত রেখে৷
এই ডিজাইনটি বেশ কিছু সুবিধার গ্যারান্টি দেয়:
- একই চিত্রের প্রতিটি ধারক একই আচরণ করে, ধারাবাহিকতা নিশ্চিত করে।
- একটি পাত্রে পরিবর্তন অন্যদের প্রভাবিত করে না, পূর্বাভাস প্রদান করে।
- আপনি নিরাপদে নির্দিষ্ট ছবির সংস্করণগুলিকে ঝুঁকি ছাড়াই ট্যাগ করতে পারেন৷ ৷
এই নকশাটি চমৎকার স্থিতিশীলতা প্রদান করে, কিন্তু আপনি যখন চলমান পাত্রে দ্রুত পরিবর্তন করতে চান তখন আপনাকে সীমাবদ্ধ করে। সেখানেই docker commit সাহায্য করে
একটি চলমান ধারক থেকে একটি নতুন চিত্র তৈরি করে
আপনি যখন docker commit চালান কমান্ড, ডকার একটি চলমান ধারকটির বর্তমান অবস্থা ক্যাপচার করে এবং এটি থেকে একটি নতুন চিত্র তৈরি করে। এটি কনটেইনারের ফাইল সিস্টেমের একটি স্ন্যাপশট নেয়, আপনার করা যেকোনো পরিবর্তন যেমন ইনস্টল করা প্যাকেজ, আপডেট করা কনফিগারেশন বা পরিবর্তিত ফাইলগুলিকে একটি নতুন ইমেজ লেয়ার হিসেবে সংরক্ষণ করে। এইভাবে, আসল চিত্রটি অস্পর্শিত থাকে, আপনাকে পরীক্ষা করতে এবং দ্রুত পুনরাবৃত্তি করতে দেয়।
এটি ভবিষ্যতের পুনঃব্যবহারের জন্য একটি কাস্টম বেস সেটআপ সংরক্ষণ, পরীক্ষার সময় ছোট সংশোধন বা কনফিগারেশন পরিবর্তনগুলি প্রয়োগ করার জন্য, অথবা স্ক্র্যাচ থেকে একটি ডকারফাইল পুনর্নির্মাণ না করেই আপনার দলের সাথে আপডেট করা ছবিগুলি ভাগ করার জন্য আদর্শ করে তোলে৷
আপনি docker commit ব্যবহার করতে পারেন চলমান ধারক থেকে একটি নতুন চিত্র তৈরি করতে নিম্নলিখিত সিনট্যাক্স সহ কমান্ড করুন:
docker commit [OPTIONS] CONTAINER_ID NEW_IMAGE_NAME[:TAG]
এখানে, CONTAINER_ID আপনি যে কন্টেইনারটি ক্যাপচার করতে চান তার ID বা নাম, NEW_IMAGE_NAME নতুন ছবির জন্য আপনি যে নামটি চান, এবং TAG ঐচ্ছিক, ডিফল্টটি সর্বশেষ।
দ্রষ্টব্য: docker commit docker container commit এর জন্য একটি উত্তরাধিকার উপনাম; উভয়ই অভিন্ন।
docker commit কমান্ড বিভিন্ন বিকল্প সরবরাহ করে যা আপনাকে মেটাডেটা যোগ করতে, কনফিগারেশন পরিবর্তনগুলি প্রয়োগ করতে এবং কমিট প্রক্রিয়াটি কীভাবে আচরণ করে তা নিয়ন্ত্রণ করতে দেয়। নীচের সারণীটি সমস্ত সমর্থিত বিকল্পগুলিকে সংক্ষিপ্ত করে:
docker commit -a "Anees" my-container my-image -c–নতুন ছবিতে ENV, LABEL, বা CMD-এর মতো ডকারফাইল নির্দেশাবলী পরিবর্তন করে।docker commit -c "ENV APP_ENV=prod" my-container my-image -m–বার্তা ইমেজে করা পরিবর্তনগুলি বর্ণনা করে একটি ছোট বার্তা যোগ করে।docker commit -m "Installed curl" my-container my-image -p–pause ধারাবাহিকতা নিশ্চিত করতে প্রতিশ্রুতি দেওয়ার সময় কন্টেইনারকে বিরতি দেয় (ডিফল্ট:সত্য)।docker commit --pause=false my-container my-image ডকার কমিট কিভাবে কাজ করে দেখুন
ধরুন আপনি আপনার ডকারফাইল পুনর্নির্মাণ না করে একটি আলপাইন পাত্রে কার্ল ইনস্টল করতে চান। এটি করতে, বেস ইমেজ থেকে একটি ধারক চালান:
docker run -it alpine:latest /bin/sh একবার আপনি পাত্রে থাকলে, প্রয়োজনীয় পরিবর্তন করুন:
apk update && apk add curl
এখন কন্টেইনার থেকে প্রস্থান করুন:
exit এর পরে, একটি নতুন চিত্র হিসাবে কন্টেইনারটি কমিট করুন:
docker commit alpine-with-curl:1.0
আপনার নতুন ছবি যাচাই করুন:
docker images এখন, আপনার কাছে কার্ল পূর্ব-ইন্সটল করা সহ যে কোনো জায়গায় চালানোর জন্য একটি নতুন ছবি প্রস্তুত রয়েছে৷
৷
সংরক্ষিত পরিবর্তন পরীক্ষা করতে আপনার নতুন ছবি চালান
আপনার নতুন ছবি তৈরি করার পরে, আপনার পরিবর্তনগুলি সংরক্ষিত হয়েছে তা যাচাই করতে আপনি এটি থেকে একটি ধারক চালাতে পারেন৷
docker run -it alpine-with-curl:1.0 /bin/sh
এই কমান্ডটি alpine-with-curl:1.0 এর উপর ভিত্তি করে একটি কন্টেইনারের ভিতরে একটি ইন্টারেক্টিভ শেল খোলে ইমেজ একবার ভিতরে, আপনি আপনার পরিবর্তনগুলি অক্ষত আছে কিনা তা পরীক্ষা করতে পারেন৷
curl --version এটি দেখায় যে পরিবর্তনগুলি নতুন ছবিতে অব্যাহত রয়েছে৷
৷
ডকার কমিট বনাম ডকারফাইল:কখন কোনটি ব্যবহার করতে হবে
ডকারফাইল এবং ডকার কমিট উভয়ই আপনাকে ডকার ইমেজ তৈরি করতে দেয়, কিন্তু তারা খুব ভিন্ন উপায়ে কাজ করে এবং বিভিন্ন পরিস্থিতিতে উপযুক্ত।
আপনার যখন নির্ভরযোগ্য এবং পুনরাবৃত্তিযোগ্য বিল্ডের প্রয়োজন হয়, বিশেষ করে CI/CD পাইপলাইন এবং উত্পাদন পরিবেশের জন্য তখন একটি ডকারফাইল হল সর্বোত্তম পছন্দ। এটি সমস্ত পরিবর্তনগুলিকে কোডে স্পষ্টভাবে সংজ্ঞায়িত করে রাখে, যা সময়ের সাথে সাথে ট্র্যাক, পর্যালোচনা এবং সংস্করণ-নিয়ন্ত্রণকে সহজ করে তোলে। এই পদ্ধতিটি নিশ্চিত করে যে যে কেউ ইমেজ তৈরি করে পরবর্তীতে একই ফলাফল পায়, যা দীর্ঘমেয়াদী রক্ষণাবেক্ষণ এবং দলের সহযোগিতার জন্য গুরুত্বপূর্ণ।
অন্যদিকে, docker commit একটি সম্পূর্ণ ডকারফাইল পুনর্লিখন বা পুনর্নির্মাণ ছাড়াই আপনি চেষ্টা করতে চান এমন দ্রুত সমাধান, পরীক্ষা, বা ছোট সমন্বয়ের জন্য ভাল কাজ করে। আপনি যখন পরীক্ষা-নিরীক্ষা করছেন, ডিবাগিং করছেন বা ফ্লাইতে কোনও পরিবর্তন যাচাই করছেন তখন এটি কার্যকর। যাইহোক, যেহেতু পরিবর্তনগুলি একটি ফাইলে নথিভুক্ত করা হয় না, এই পদ্ধতিটি উৎপাদনের পরিবর্তে স্বল্পমেয়াদী ব্যবহারের জন্য আরও উপযুক্ত৷
সংক্ষেপে, আপনি docker commit ব্যবহার করতে পারেন প্রধানত পরীক্ষা বা অস্থায়ী সংশোধনের জন্য। উৎপাদন-প্রস্তুত চিত্রগুলির জন্য, সর্বদা একটি ডকারফাইল পছন্দ করুন। ডকার থেকে সর্বাধিক সুবিধা পেতে, অন্যান্য মূল কমান্ডগুলি অন্বেষণ করা মূল্যবান যা কন্টেইনার, চিত্র এবং ওয়ার্কফ্লোগুলির সাথে কাজ করা সহজ করে তোলে৷