কম্পিউটার

একটি ডকার কন্টেইনারকে অন্য হোস্টে কীভাবে অনুলিপি/সরানো যায়

একটি ডকার কন্টেইনারকে অন্য হোস্টে কীভাবে অনুলিপি/সরানো যায়

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

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

উৎস হোস্ট থেকে কন্টেইনার ছবি সংরক্ষণ করুন

প্রথমে ধারকটি বন্ধ করার প্রয়োজন নেই, তবে এটি করার জন্য এটি অত্যন্ত সুপারিশ করা হয়। আপনি আপনার ডকার উদাহরণে ডেটার একটি স্ন্যাপশট নেবেন। আপনি এটি করার সময় এটি চলমান থাকলে, আপনার স্ন্যাপশটে কিছু ফাইল অসম্পূর্ণ থাকার একটি ছোট সম্ভাবনা রয়েছে। কল্পনা করুন যে কেউ একটি 500MB ফাইল আপলোড করছে। যখন 250MB আপলোড করা হয়, আপনি docker commit ইস্যু করেন আদেশ তারপর আপলোড চলতে থাকে, কিন্তু আপনি যখন এই ডকার ইমেজটিকে অন্য হোস্টে পুনরুদ্ধার করেন, তখন 500MB এর মধ্যে শুধুমাত্র 250MB উপলব্ধ হতে পারে৷

সুতরাং, যদি আপনি পারেন, প্রথমে উদাহরণ বন্ধ করুন।

docker stop NAME_OF_INSTANCE
একটি ডকার কন্টেইনারকে অন্য হোস্টে কীভাবে অনুলিপি/সরানো যায়

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

মনে রাখবেন যে উদাহরণটি বর্তমানে চলমান থাকলে, এটির বিষয়বস্তু সংরক্ষণ করার সময় এই ক্রিয়াটি এটিকে বিরতি দেবে। আপনি যদি আপনার কন্টেইনারে অনেক ডেটা যোগ করেন, তাহলে এই অপারেশনটি সম্পূর্ণ হতে আরও বেশি সময় লাগবে। যদি এটি একটি সমস্যা হয়, আপনি docker commit -p=false NAME_OF_INSTANCE mycontainerimage প্রবেশ করে এই বিরতি এড়াতে পারেন পরবর্তী কমান্ডের পরিবর্তে। যাইহোক, একেবারে প্রয়োজনীয় না হলে এটি করবেন না। এই ক্ষেত্রে অসামঞ্জস্যপূর্ণ/অসম্পূর্ণ ডেটা সহ একটি চিত্র তৈরি করার সম্ভাবনা বেড়ে যায়৷

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

docker commit NAME_OF_INSTANCE mycontainerimage
একটি ডকার কন্টেইনারকে অন্য হোস্টে কীভাবে অনুলিপি/সরানো যায়

এখন, এই ছবিটি একটি ফাইলে সংরক্ষণ করুন এবং এটিকে সংকুচিত করুন।

docker save mycontainerimage | gzip > mycontainerimage.tar.gz

এরপর, আপনার পছন্দের ফাইল স্থানান্তর পদ্ধতি ব্যবহার করুন এবং mycontainerimage.tar.gz অনুলিপি করুন হোস্টে যেখানে আপনি আপনার কন্টেইনার স্থানান্তর করতে চান।

গন্তব্য হোস্টে ধারক চিত্র লোড করুন

আপনি হোস্টে লগ ইন করার পরে যেখানে আপনি ছবিটি স্থানান্তর করেছেন, এটি ডকারে আমদানি করুন৷

gunzip -c mycontainerimage.tar.gz | docker load

যেহেতু আপনি এখানে এই কন্টেইনারটি আরম্ভ করেননি, তাই আপনি এটিকে docker start দিয়ে শুরু করতে পারবেন না এখনো. পরিবর্তে, আপনি যখন এই ডকার দৃষ্টান্তটি প্রথম চালান তখন আপনি অতীতে একই কমান্ডটি ব্যবহার করেছিলেন। এখন শুধু পার্থক্য হল আপনি অতীতে যে ছবি ব্যবহার করেছেন তার পরিবর্তে আপনি শেষে "mycontainerimage" ব্যবহার করবেন।

পরবর্তী কমান্ড শুধুমাত্র একটি উদাহরণ; এটি আপনার ক্ষেত্রে প্রযোজ্য না হলে এটি কপি এবং পেস্ট করবেন না। (আপনি যখন প্রথমবার ছবিটি চালান তখন কোনো বিশেষ প্যারামিটারের প্রয়োজন ছিল না)

docker run -d --name=PICK_NAME_FOR_CONTAINER mycontainerimage

বিপরীতে, নিম্নলিখিত একটি কমান্ডের উদাহরণ যেখানে প্যারামিটার --publish হোস্ট মেশিনে পোর্ট 80 ফরোয়ার্ড করার প্রয়োজন ছিল কন্টেইনারে পোর্ট 80 এ:

docker run -d --name=http-server --publish 80:80 mycontainerimage

এর পরে, আপনি docker stop সহ এই কন্টেইনারটিকে স্বাভাবিকভাবে থামাতে এবং শুরু করতে পারেন এবং docker start কমান্ড।

ফাইল তৈরি না করেই ছবি স্থানান্তর করুন

কখনও কখনও আপনি একটি mycontainerimage.tar.gz তৈরি করা এড়িয়ে যেতে চাইতে পারেন ফাইল হতে পারে আপনার কাছে পর্যাপ্ত ডিস্ক স্পেস নেই যেহেতু ধারকটিতে প্রচুর ডেটা রয়েছে। আপনি একটি কমান্ডে গন্তব্য হোস্টে ছবিটি সংরক্ষণ, সংকুচিত, স্থানান্তর, সংকুচিত করতে এবং লোড করতে পারেন। docker commit চালানোর পরে প্রথম বিভাগে আলোচনা করা কমান্ড, আপনি এটি ব্যবহার করতে পারেন:

docker save mycontainerimage | gzip | ssh root@203.0.113.1 'gunzip | docker load'

এটি উইন্ডোজ থেকেও কাজ করা উচিত, যেহেতু এটিতে এখন একটি অন্তর্নির্মিত SSH ক্লায়েন্ট রয়েছে (PuTTY আর প্রয়োজন নেই)।

তারপরে, docker run চালিয়ে যান আপনার পরিস্থিতিতে প্রযোজ্য আদেশ৷

উপসংহার

docker save এবং docker load মাঝে মাঝে পাত্রে সরানোর জন্য একটি অ্যাডহক সমাধান হিসাবে দুর্দান্ত। কিন্তু মনে রাখবেন, আপনি যদি এটি প্রায়শই করেন, তাহলে আপনি পরিবর্তে আপনার নিজস্ব ব্যক্তিগত সংগ্রহস্থল সেট আপ করতে চাইতে পারেন৷

ইমেজ ক্রেডিট:এয়ার ফোর্স মেডিকেল সার্ভিস


  1. এন্ড্রয়েডের ক্লিপবোর্ডে একটি চিত্র কীভাবে অনুলিপি করবেন

  2. কিভাবে Google Apps ডোমেন ওয়েবসাইট অন্য হোস্টে সরানো যায়।

  3. কিভাবে উইন্ডোজকে অন্য ড্রাইভে সরানো যায়।

  4. কিভাবে ইনস্টল করা প্রোগ্রামগুলিকে Windows 10-এ অন্য ড্রাইভে সরানো যায়