ডকার হল একধরনের লিনাক্স কন্টেইনার টেকনোলজি । এর কাজ হল ডেভেলপমেন্ট এর জন্য আপনার অ্যাপ্লিকেশান লেয়ার কে সিস্টেম লেয়ার থেকে আলাদা করা । এটা একটা Cross Platform টুল যেটা উইন্ডোজ , লিনাক্স , ম্যাক , পাওয়ার পিসি সহ অনেক অনেক অপারেটিং সিস্টেম এ চলে ।
উপরের দুই লাইন এ হইত তেমন কিছু বোঝা গেল না , তাই একটু সহজ করে বলি । মনে করুন আপনি ওয়েব অ্যাপ্লিকেশান ডেভেলপ করা শুরু করবেন । তাহলে প্রথম কাজটা হবে যে আপনাকে আগে ডেভেলপমেন্ট এর উপযোগী পরিবেশ বানাতে হবে আপনার মেশিন অথবা কম্পিউটারে । অর্থাৎ ওয়েব অ্যাপ্লিকেশান ডেভেলপ করার জন্য যা যা লাগে সেসব সফটওয়্যার আপনার পিসি তে ইন্সটল থাকতে হবে । এটাই স্বাভাবিক । হুম , যারা উইন্ডোজ ইউজার তারা হয়ত Xampp ডাউনলোড কোরে ইন্সটল কোরে কাজ করার চেষ্টা করবেন । ভাল উপায় , কম সময়ে একটা পিএইচপি ফাইল রান করারা জন্য।
কিন্তু পরিস্থিতিটা যদি এমন হয় যদি আপনার প্রোজেক্ট রান করাতে গিয়ে অনেক কিছু কনফিগার করতে হয়েছে , পিএইচপি এর অনেক এক্সট্রা Extension ইন্সটল করতে হয়েছে, এপাচে সার্ভারেও কিছু পাল্টাতে হয়েছে । এখন যদি আপনার পিসি কোন কারণে ক্রাশ করে অথবা সিস্টেম নষ্ট হয়ে যায় তাহলে অবশই আপনাকে সেসব কিছু আবার করতে হবে। ঠিক একই কাজ করতে হবে যদি রিমোট সার্ভার কোন কারণে জামেলা করে এবং সার্ভিস এক যায়গা থেকে অন্যও যায়গায় সরাতে হয় নতুন একটা মেশিনে , তখন সেই নতুন মাশিনে আবার সব কিছু শুরু থেকে কনফিগার করা লাগবে !!
এর থেকে ভাল একটা উধারন হল ধরুন আপনাকে আপনার প্রোজেক্ট বস কে জমা দিতে হবে । ধরলাম আপনি এক্সম্পপ এর নতুন ভার্সন চালান অথবা অনেক পুরনো, আবার আপনি আপনার পিসি তে অনেক কিছু কনফিগার করেছেন যার জন্য প্রোজেক্ট টা ঠিকমত চলছে , কিন্তু আপনার বস এর পিসি তে সেসব করা নেই ! তিনি যখন প্রোজেক্ট রান করার চেষ্টা করবে তখন সেটা ঠিকমত চলবে না ।
আপনি তখন একটাই কথা বলবেন যে “আমার পিসি তে তো ঠিক মত চলল !” , যেটা কিনা সবাই বলে । কিন্তু যদি আপনি আপনার প্রোজেক্টের সোর্স কোড এবং সব সফটওয়্যার , কনফিগারেশন সহ দিয়ে দিতে পারতেন একসাথে ! জিপ করে ? ধরুন যদি অ্যাপ্লিকেশানটা Oracle দিয়ে ডেভেলপ করা , ওটাও জিপ করতেন ? আর জিপ এর সাইজ টা নিশ্চয়ই পাঠানোর উপযোগী হত না ।
কিন্তু যদি এমন হত যে আপনি একটা টেক্সট ফাইল এ লিখে দিয়েছেন যে অমি আমার ডেভেলপমেন্ট এর জন্য এসব সফটওয়্যার ব্যবহার করেছি এবং এসব কনফিগার করেছি । আর শুধু মাত্র সেই কয়েক কিলোবাইটের ফাইলটা প্রোজেক্ট এর সাথে দিয়ে দিতে পারতেন আর প্রোজেক্ট রান করার সময় সব কিছু আপনা আপনি ইন্টারনেট থেকে ডাউনলোড হয়ে অটো কনফিগার হয়ে যেত !! তাহলে আপনাকে চিন্তা করতে হত না যে তার পিসি তে যদি না চলে অথবা লোকাল মেশিন এ তো ঠিকঠাক চলল , যদি প্রোডাকশন সার্ভারে ঠিকমত না কাজ করে ?
জাভার উদাহরণ দিয়ে বলি, আপনি যখন একটা জাভা কোড নয়তবা প্রোজেক্ট অন্য একজনকে দেন তখন অবশ্যই চিন্তা করেন না যে সেটা তার কম্পিউটারে ঠিক মত কাজ করবে কি না , সে যে অপারেটিং সিস্টেম ই ব্যবহার করুক না কেন সেটা কাজ করবে , কারণ জাভার JVM কোড কে বুজতে দেই না যে সে কোন প্লাটফরম এ রান হচ্ছে। তাই অনেকেই বলে যে , “একবার কোড করে অনেক সিস্টেম এ রান করা যায় জাভাতে” , ঠিক তেমনি একবার Docker Environment সেটআপ করে ডেভেলপমেন্ট করলে প্রবরটিতে যেকোনো সিস্টেমে সরান/চালানো যাবে আপনার পুরো প্রোজেক্ট।
ডকার ফাইল এ যা লিখা থাকবে , ডকার তার হাব/রেজিস্ট্রি থেকে সেসব সফটওয়্যার আপনা আপনি নামিয়ে , আপনার কনফিগার ফাইল নিয়ে পুর প্রোজেক্টের সাথে লিঙ্কআপ করবে কিন্তু একটা সফটওয়্যার ও আপনার পিসি তে ইন্সটল হবে না ! এবং কাজ শেষে আপনার সব ডাটা সংরক্ষিত থাকবে ।
লোকাল মেশিন থেকে ডেভেলপমেন্ট/প্রোডাকশন সার্ভার অথবা যদি কারো কাছে প্রোজেক্ট ট্রান্সফার করতে হয় তাহলে সোর্স কোডের সাথে Dockerfile টি দিয়ে দিলেই আর কিছু কনফিগার করা লাগবে না । তাকে চিন্তাও করতে হবে না Dependency নিয়ে । সুধু তার কম্পিউটারে ডকার ইন্সটল থাকলে আর ইন্টারনেটের সাথে কানেক্ট থাকতে হবে ।
Top comments (0)