ডিফল্টরূপে, ডকার "/var/lib/docker" এর ভিতরে সবকিছু সঞ্চয় করে, যা রুট (/) পার্টিশনে অবস্থিত। আপনার পাত্রে বাড়ার সাথে সাথে এই ফোল্ডারটি দ্রুত পূরণ হতে পারে। আপনি যদি লক্ষ্য করেন যে আপনার সার্ভার ধীর গতিতে চলছে, ডেটা সংরক্ষণ করতে ব্যর্থ হয়েছে বা এলোমেলোভাবে ক্র্যাশ হচ্ছে, তাহলে সম্ভবত রুট পার্টিশনের স্থান ফুরিয়ে গেছে। এই নির্দেশিকায়, আমরা আপনাকে আপনার ডকার ভলিউম (বা ডেটা) অন্য পার্টিশনে সরানোর এবং রুট পার্টিশনে স্থান খালি করার পদ্ধতির মাধ্যমে পথ দেখাব।
বিষয়বস্তুর সারণী
কেন ডকার ভলিউম অন্য পার্টিশনে সরাতে হবে
ডকার কন্টেইনারগুলি প্রায়শই প্রচুর পরিমাণে স্থায়ী ডেটা তৈরি করে। সময়ের সাথে সাথে, এই ডেটা আপনার রুট পার্টিশনের স্টোরেজ স্পেস গ্রাস করতে পারে। ডকার ভলিউম অন্য পার্টিশনে সরানো আপনাকে সাহায্য করে:
- রুট ফাইল সিস্টেমে ফাঁকা স্থান
- ডিস্ক নিঃশেষিত হওয়ার কারণে সিস্টেম ক্র্যাশ প্রতিরোধ করুন
- ডেডিকেটেড স্টোরেজে বড় অ্যাপ্লিকেশন ডেটা সঞ্চয় করুন
- সামগ্রিক স্টোরেজ ব্যবস্থাপনা উন্নত করুন
উদাহরণস্বরূপ, MySQL বা PostgreSQL এর মতো ডাটাবেস কন্টেইনারগুলি ভলিউমের মধ্যে গিগাবাইট ডেটা সঞ্চয় করতে পারে। এই ভলিউমগুলিকে একটি বৃহত্তর ডেডিকেটেড পার্টিশনে স্থানান্তর করা সিস্টেমের স্থিতিশীলতা বজায় রাখতে সাহায্য করতে পারে৷
ডকার ভলিউম ডিরেক্টরি সনাক্ত করুন
একটি ডকার ভলিউম সরানোর আগে, আমাদের প্রথমে সনাক্ত করতে হবে যে ডকার এটি সিস্টেমে কোথায় সঞ্চয় করে। সমস্ত উপলব্ধ ডকার ভলিউম তালিকাভুক্ত করতে নিম্নলিখিত কমান্ডটি চালান:
docker volume ls
ভলিউম নাম শনাক্ত করার পরে, সেই নির্দিষ্ট ভলিউম পরিদর্শন করতে নীচের কমান্ডটি চালান:
docker volume inspect volume_name
এই কমান্ড ভলিউম সম্পর্কে বিস্তারিত তথ্য প্রদর্শন করে। আউটপুটে, Mountpoint সন্ধান করুন ক্ষেত্র এটি সঠিক ডিরেক্টরি দেখায় যেখানে ডকার ভলিউম ডেটা সঞ্চয় করে।
সম্পূর্ণ ডকার ডেটা রুট সরান
একটি ভিন্ন পার্টিশনে ডকার ডেটা স্থানান্তর করার একটি উপায় হল সমগ্র ডকার স্টোরেজ ডিরেক্টরিকে স্থানান্তরিত করা, যার মধ্যে ভলিউম, ছবি, কন্টেইনার এবং লগ রয়েছে। যদি "/var/lib/docker" পূরণ করা হয় তবে এটি সবচেয়ে পরিষ্কার এবং নিরাপদ পদ্ধতি।
এই উদ্দেশ্যে, প্রথমে, আপনাকে ডকার পরিষেবা বন্ধ করতে হবে যাতে মাইগ্রেশনের সময় কোনও ফাইল পরিবর্তন না হয় তা নিশ্চিত করতে হবে:
sudo systemctl stop docker এর পরে, আপনি rsync কমান্ড ব্যবহার করে ডকার ডেটা অনুলিপি করতে পারেন:
sudo rsync -avxP /var/lib/docker/ /path/to/new/partition/docker-data/ দ্রষ্টব্য :নতুন পার্টিশনের পাথে “/path/to/new/partition/” পরিবর্তন করুন যেখানে আপনি ফোল্ডারটি স্থানান্তর করতে চান।
এই কমান্ডটি ডকার ডিরেক্টরিকে অনুলিপি করে যখন অনুমতিগুলি সংরক্ষণ করে এবং স্থানান্তরের সময় অগ্রগতি দেখায়৷
বিকল্পভাবে, আপনি নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন, যা অতিরিক্ত ডকার বৈশিষ্ট্য যেমন হার্ড লিঙ্ক, ACL এবং বর্ধিত বৈশিষ্ট্যগুলি সংরক্ষণ করে:
sudo rsync -aHAX --info=progress2 /var/lib/docker/ /mnt/docker-data/ ডকার ডেটা স্থানান্তর করার সময় এই সংস্করণটি সুপারিশ করা হয় কারণ এটি আরও ফাইল সিস্টেম মেটাডেটা সংরক্ষণ করে এবং একটি পরিষ্কার সামগ্রিক অগ্রগতি নির্দেশক প্রদান করে৷
এর পরে, এটি মুছে ফেলার আগে এটিকে ব্যাক আপ করতে পুরানো ডেটা ডিরেক্টরিটির নাম পরিবর্তন করুন৷
sudo mv /var/lib/docker /var/lib/docker.old এখন, এই কমান্ড দিয়ে ডেমন ফাইলটি খুলে ডকারের কনফিগারেশন আপডেট করুন:
sudo nano /etc/docker/daemon.json এই ফাইলে নিম্নলিখিত বিষয়বস্তু যোগ করুন:
{
"data-root": "/path/to/new/partition/docker-data"
}
অবশেষে, sudo systemctl start docker দিয়ে ডকার পুনরায় চালু করুন . এর পরে, আপনি নিম্নলিখিত কমান্ডের মাধ্যমে নতুন ডকার ডেটা ডিরেক্টরি নিশ্চিত করতে পারেন:
docker info | grep "Docker Root Dir"
সবকিছু ঠিক থাকলে, পুরানো ব্যাকআপ সরান:
sudo rm -rf /var/lib/docker.old ডকার ডেস্কটপ (GUI পদ্ধতি) ব্যবহার করে সমস্ত ডকার ডেটা সরান
ডকার ডেস্কটপ আপনাকে ডিস্ক চিত্রের অবস্থান পরিবর্তন করে অন্য পার্টিশনে সমস্ত ডকার ডেটা স্থানান্তর করতে দেয়। এই বিকল্পটি আপনার সিস্টেমের একটি নতুন অবস্থানে ছবি, কন্টেনার, ভলিউম এবং বিল্ড ক্যাশে সহ ডকার দ্বারা সঞ্চিত সমস্ত কিছু স্থানান্তর করে৷
এটি করতে, ডকার ডেস্কটপ খুলুন এবং সেটিংস-এ নেভিগেট করুন , সম্পদ-এ যান → উন্নত , এবং তারপর ডিস্ক চিত্র অবস্থান খুঁজুন বিকল্প
ব্রাউজ করুন ক্লিক করুন৷ এবং নতুন পার্টিশন বা ড্রাইভে একটি ফোল্ডার বেছে নিন যেখানে আপনি ডকার এর ডেটা সংরক্ষণ করতে চান, যেমন "/mnt/newdisk/docker-data"। নতুন অবস্থান নির্বাচন করার পরে, প্রয়োগ করুন এবং পুনরায় চালু করুন ক্লিক করুন৷ . ডকার ডেস্কটপ তারপর রিস্টার্ট করবে এবং সমস্ত বিদ্যমান ডকার ডেটা নির্বাচিত পার্টিশনে নিয়ে যাবে।
দ্রষ্টব্য: এটি সমস্ত ডকার ডেটা স্থানান্তর করে। পৃথক ভলিউম সরানোর জন্য বর্তমানে কোন GUI বিকল্প নেই।
শুধুমাত্র নির্দিষ্ট ভলিউম ডেটা স্থানান্তর করুন
আপনি একটি নির্দিষ্ট ডকার ভলিউম অন্য পার্টিশনে স্থানান্তর করতে পারেন এবং হোস্ট বাইন্ড মাউন্টের মাধ্যমে আপনার কন্টেইনারের সাথে এটি ব্যবহার করতে পারেন। এই পদ্ধতি সহজ, নিরাপদ এবং ব্যাক আপ করা সহজ। ভলিউম সরানোর আগে, যে ধারকটি এটি ব্যবহার করে তা বন্ধ করুন:
docker stop container_name
এর পরে, rsync ব্যবহার করুন আপনার নতুন ডিরেক্টরিতে নিরাপদে সমস্ত ডেটা সরাতে:
sudo rsync -a /var/lib/docker/volumes/my_volume/_data/ /data/docker/my_volume/ এটি পুরানো ভলিউম থেকে "/data/docker/my_volume" এ সবকিছু কপি করবে৷
৷ডকার-পরিচালিত ভলিউমের পরিবর্তে একটি বাইন্ড মাউন্ট ব্যবহার করতে আপনার "docker-compose.yml" ফাইলটি সম্পাদনা করুন:
services:
my_service:
volumes:
- /data/docker/my_volume:/container/path
/container/path প্রতিস্থাপন করুন ধারকটির ভিতরের পথের সাথে যেখানে ভলিউমটি মূলত মাউন্ট করা হয়েছিল। তারপর নিম্নলিখিত কমান্ড দিয়ে কন্টেইনার পুনরায় স্থাপন করুন:
docker-compose up -d র্যাপিং আপ
ডকার ভলিউম বা পুরো ডকার ডেটা ডিরেক্টরিকে একটি বড় পার্টিশনে স্থানান্তর করা আপনার রুট ফাইল সিস্টেমে স্থান খালি করে এবং আপনার সার্ভারকে স্থিতিশীল রাখে। কন্টেইনারগুলি ডেটা হারানোর কোনো ঝুঁকি ছাড়াই মসৃণভাবে চলতে থাকে এবং ভবিষ্যতের স্টোরেজ ব্যবস্থাপনা অনেক সহজ হয়ে যায়।
যদি পুরো ডকার ডিরেক্টরিটি স্থানান্তর করা সম্ভব না হয় তবে আপনি এখনও অন্যান্য পদ্ধতি ব্যবহার করে স্থান পুনরুদ্ধার করতে পারেন। এর মধ্যে রয়েছে অব্যবহৃত কন্টেনার, ছবি, নেটওয়ার্ক এবং ক্যাশে ছাঁটাই করা ডকার সিস্টেম প্রুন বা স্বতন্ত্র প্রুন কমান্ড সহ, এবং ডকারের রানটাইমকে প্রভাবিত না করেই বড় ডিরেক্টরিগুলি সরাতে Linux বাইন্ড মাউন্ট ব্যবহার করা।