Academy

Docker Volumes এবং Persistent Storage

Latest Technologies - ডকার (Docker) - NCTB BOOK

Docker Volumes এবং Persistent Storage হল Docker কন্টেইনারগুলির মধ্যে ডেটা সংরক্ষণ এবং ব্যবস্থাপনার জন্য গুরুত্বপূর্ণ উপাদান। এগুলি কন্টেইনারের বাইরে ডেটা সংরক্ষণ করতে সাহায্য করে, যা কন্টেইনারের জীবনচক্রের বাইরে ডেটা স্থায়িত্ব নিশ্চিত করে। নিচে Docker Volumes এবং Persistent Storage-এর বিস্তারিত আলোচনা করা হলো।

Docker Volumes

বর্ণনা

Docker Volumes হল একটি বিশেষ ফাইল সিস্টেম যা কন্টেইনারের বাইরের ডেটা সংরক্ষণ করে। এটি মূলত একটি ডেটাবেস বা কন্টেন্ট পরিচালনার জন্য ব্যবহৃত হয়।

ভূমিকা

ডেটা স্থায়িত্ব: Volumes ব্যবহার করে কন্টেইনারগুলি মুছে ফেলার পরেও ডেটা অক্ষুণ্ণ থাকে। এটি ডেটাবেস বা অন্যান্য গুরুত্বপূর্ণ ফাইলের জন্য প্রয়োজনীয়।

শেয়ারিং: Volumes একাধিক কন্টেইনারের মধ্যে শেয়ার করা যেতে পারে, যা বিভিন্ন কন্টেইনার থেকে একই ডেটা অ্যাক্সেস করার সুযোগ দেয়।

কার্যকারিতা: Volumes কন্টেইনারের পারফরম্যান্স উন্নত করে। কন্টেইনারের মধ্যে ডেটা লিখা বা পড়া করা হলে Volumes স্বয়ংক্রিয়ভাবে কন্টেইনারের বাইরের স্টোরেজে সংরক্ষণ হয়।

ব্যবহার সহজতা: Volumes তৈরি এবং পরিচালনা করা সহজ। এটি Docker CLI-তে বিভিন্ন কমান্ডের মাধ্যমে করা যায়।

Docker Volumes তৈরি ও ব্যবহারের উদাহরণ

Volume তৈরি করা:

docker volume create my-volume

কন্টেইনারে Volume ব্যবহার করা:

এখানে, my-volume কন্টেইনারের /app/data ডিরেক্টরির সাথে সংযুক্ত।

docker run -d --name my-container -v my-volume:/app/data my-app-image

Volumes তালিকাভুক্ত করা:

docker volume ls

Volume মুছা:

docker volume rm my-volume

Persistent Storage

বর্ণনা

Persistent Storage হলো একটি ধারণা যা ডেটা সংরক্ষণে স্থায়িত্ব এবং স্থিতিশীলতা নিশ্চিত করে। এটি সাধারণত কন্টেইনারের বাইরের স্টোরেজ সলিউশন, যেমন নেটওয়ার্ক স্টোরেজ (NAS) বা ক্লাউড স্টোরেজ।

ভূমিকা

ডেটার স্থায়িত্ব: Persistent Storage নিশ্চিত করে যে কন্টেইনারগুলি পুনরায় চালু বা মুছে ফেললে ডেটা অক্ষুণ্ণ থাকে। এটি বিশেষ করে ডেটাবেসের জন্য গুরুত্বপূর্ণ।

স্কেলেবিলিটি: Persistent Storage সমাধানগুলি প্রয়োজন হলে ডেটা প্রসারিত করার ক্ষমতা প্রদান করে।

বিভিন্ন কন্টেইনার দ্বারা অ্যাক্সেস: Persistent Storage বিভিন্ন কন্টেইনারের মাধ্যমে শেয়ার করা যেতে পারে, যা একাধিক অ্যাপ্লিকেশন বা সার্ভিসের মধ্যে ডেটা ভাগ করতে সহায়তা করে।

Persistent Storage ব্যবহার করার উদাহরণ

  1. Docker Compose ব্যবহার করে Persistent Storage:এখানে db-data নামক একটি Persistent Volume তৈরি করা হয়েছে যা PostgreSQL ডেটাবেসের জন্য ব্যবহার হচ্ছে।
version: '3'
services:
  db:
    image: postgres
    volumes:
      - db-data:/var/lib/postgresql/data
volumes:
  db-data:

সারসংক্ষেপ

Docker Volumes এবং Persistent Storage হল কন্টেইনার ডেটা সংরক্ষণের গুরুত্বপূর্ণ উপাদান। Docker Volumes কন্টেইনারের বাইরের ডেটা সংরক্ষণ করে এবং স্থায়িত্ব নিশ্চিত করে, যেখানে Persistent Storage ডেটা স্থায়িত্ব এবং স্কেলেবিলিটি নিশ্চিত করে। এগুলির ব্যবহারে, ডেটাবেস এবং অন্যান্য গুরুত্বপূর্ণ অ্যাপ্লিকেশনগুলি নির্বিঘ্নে চলতে পারে, এমনকি কন্টেইনারের জীবনচক্রের পরিবর্তন ঘটলে।

Content added By

Docker Volumes কী এবং এর প্রয়োজনীয়তা

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

Docker Volumes কী?

বর্ণনা: Docker Volume হল একটি ফাইল সিস্টেমের অংশ যা Docker কনটেইনারের বাইরেও স্থায়ী ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। এটি ডেটা কনটেইনার থেকে আলাদা করে সংরক্ষণ করে, তাই কনটেইনার মুছে গেলে ডেটা হারিয়ে যায় না।

প্রকারভেদ:

  • Named Volumes: স্পষ্টভাবে একটি নাম ব্যবহার করে তৈরি করা হয় এবং বিভিন্ন কনটেইনারের মধ্যে শেয়ার করা যায়।
  • Anonymous Volumes: নামহীনভাবে তৈরি হয় এবং সাধারণত একটি নির্দিষ্ট কনটেইনারের জন্য ব্যবহার করা হয়।

Docker Volumes এর প্রয়োজনীয়তা

ডেটা স্থায়িত্ব:

  • কনটেইনারগুলি সাধারণত অস্থায়ী হয় এবং মুছে গেলে তাদের ডেটা হারিয়ে যায়। Volumes ব্যবহার করলে ডেটা হারানোর ঝুঁকি কমে যায়, কারণ এটি কনটেইনারের বাইরেও সংরক্ষিত থাকে।

ডেটা শেয়ারিং:

  • একাধিক কনটেইনারের মধ্যে ডেটা শেয়ার করার প্রয়োজন হলে, Volumes ব্যবহার করা সুবিধাজনক। এটি কনটেইনারগুলোর মধ্যে একসাথে কাজ করার সুযোগ দেয়।

কনফিগারেশন ফাইল এবং লগ ফাইল:

  • অ্যাপ্লিকেশন কনফিগারেশন এবং লগ ফাইলের জন্য Docker Volumes ব্যবহার করা যায়, যা ডেটা হারানোর ঝুঁকি ছাড়াই স্থায়ীভাবে সংরক্ষণ করা যায়।

ব্যাকআপ ও পুনরুদ্ধার:

  • Volumes ব্যবহার করে ডেটা ব্যাকআপ এবং পুনরুদ্ধার করা সহজ হয়। আপনি সহজেই Volume-এর ডেটা সংরক্ষণ করতে পারেন এবং প্রয়োজন হলে পুনরুদ্ধার করতে পারেন।

ফাইল সিস্টেমের পারফরম্যান্স:

  • Docker Volumes, বিশেষ করে লোকাল ড্রাইভে তৈরি করা হলে, কনটেইনারের ফাইল সিস্টেমের তুলনায় উচ্চ পারফরম্যান্স প্রদান করতে পারে।

Docker Volumes তৈরি ও ব্যবহারের উদাহরণ

১. Volume তৈরি করা

docker volume create my-volume

২. কনটেইনারে Volume যুক্ত করা

docker run -d -v my-volume:/data my-image

এখানে, -v my-volume:/data নির্দেশনা দিয়ে my-volume নামের Volume-টি কনটেইনারের /data ডিরেক্টরির সাথে সংযুক্ত করা হচ্ছে।

৩. চলমান কনটেইনারে Volume যুক্ত করা

docker run -d --name my-container -v my-volume:/data my-image

৪. Volume তালিকা করা

docker volume ls

৫. Volume মুছে ফেলা

docker volume rm my-volume

সারসংক্ষেপ

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

Content added By

Bind Mount এবং Named Volumes এর পার্থক্য

Docker-এ Bind Mounts এবং Named Volumes হল দুটি প্রধান স্টোরেজ অপশন, যা কন্টেইনারগুলির মধ্যে ডেটা সংরক্ষণ এবং পরিচালনা করার জন্য ব্যবহৃত হয়। উভয়ের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। নিচে Bind Mount এবং Named Volumes-এর মধ্যে পার্থক্যগুলো আলোচনা করা হলো।

Bind Mounts

বর্ণনা

Bind Mount হল একটি ফাইল বা ডিরেক্টরি যা হোস্ট মেশিন থেকে কন্টেইনারে ম্যাপ করা হয়। এটি হোস্টের ফাইল সিস্টেমের একটি নির্দিষ্ট পথকে কন্টেইনারের একটি পথের সাথে যুক্ত করে।

বৈশিষ্ট্য

  1. হোস্ট সিস্টেমের উপর নির্ভরশীল: Bind Mount হোস্টের ফাইল সিস্টেমে নির্দিষ্ট পথের সাথে যুক্ত হয় এবং এটি সম্পূর্ণরূপে হোস্ট সিস্টেমের উপর নির্ভরশীল।
  2. ডায়নামিক আপডেট: কন্টেইনারের ভিতরে বা বাইরের পরিবর্তনগুলি সরাসরি হোস্টে প্রতিফলিত হয় এবং উল্টো দিকে।
  3. ফাইল সিস্টেমের অ্যাক্সেস: Bind Mount ব্যবহার করে, কন্টেইনারগুলি হোস্ট ফাইল সিস্টেমের সম্পূর্ণ নিয়ন্ত্রণ পায়, যা এটি স্থানীয় ডেভেলপমেন্টের জন্য সুবিধাজনক।

উদাহরণ

docker run -v /host/path:/container/path my-app-image

Named Volumes

বর্ণনা

Named Volumes হল Docker দ্বারা পরিচালিত এবং সংরক্ষিত একটি স্টোরেজ সলিউশন। এগুলি Docker Volume API-এর মাধ্যমে তৈরি করা হয় এবং এটি একটি নামের মাধ্যমে চিহ্নিত করা হয়।

বৈশিষ্ট্য

  1. Docker দ্বারা পরিচালিত: Named Volumes Docker দ্বারা সম্পূর্ণরূপে পরিচালিত হয় এবং Docker Hub বা স্থানীয় স্টোরেজে সংরক্ষিত হয়।
  2. স্থায়িত্ব: Named Volumes কন্টেইনারগুলি মুছে ফেলার পরেও ডেটা অক্ষুণ্ণ রাখে, যা স্থায়িত্ব নিশ্চিত করে।
  3. শেয়ারিং: Named Volumes একাধিক কন্টেইনারের মধ্যে শেয়ার করা যেতে পারে, যা ডেটা একাধিক অ্যাপ্লিকেশনের মধ্যে ব্যবহার করতে সহায়ক।

উদাহরণ

docker run -v my-volume:/container/path my-app-image

Bind Mount এবং Named Volumes-এর মধ্যে পার্থক্য

বিষয়Bind MountsNamed Volumes
উৎপত্তিহোস্ট ফাইল সিস্টেমের নির্দিষ্ট পথDocker দ্বারা পরিচালিত এবং সংরক্ষিত
নিয়ন্ত্রণহোস্ট সিস্টেমের উপর নিয়ন্ত্রণDocker দ্বারা সম্পূর্ণরূপে নিয়ন্ত্রিত
স্থায়িত্বকন্টেইনার মুছে ফেলা হলে ডেটা অক্ষুণ্ণ থাকে নাকন্টেইনার মুছে ফেলার পরেও ডেটা অক্ষুণ্ণ থাকে
শেয়ারিংকন্টেইনারের মধ্যে সহজে শেয়ার করা যায় নাএকাধিক কন্টেইনারের মধ্যে শেয়ার করা যায়
ডায়নামিক আপডেটকন্টেইনার এবং হোস্টের মধ্যে সরাসরি আপডেট হয়শুধুমাত্র Docker ইঞ্জিনের মাধ্যমে পরিচালিত হয়

সারসংক্ষেপ

Bind Mounts এবং Named Volumes হল Docker-এ ব্যবহৃত দুই ধরনের স্টোরেজ অপশন। Bind Mount হোস্ট ফাইল সিস্টেমের নির্দিষ্ট পথের সাথে কন্টেইনারের পথ যুক্ত করে, যেখানে Named Volumes Docker দ্বারা পরিচালিত এবং স্থায়ী স্টোরেজ হিসাবে কাজ করে। আপনি কোনটি ব্যবহার করবেন তা নির্ভর করে আপনার প্রয়োজনের উপর, যেমন ডেভেলপমেন্ট, ডেটার স্থায়িত্ব, এবং কন্টেইনারগুলির মধ্যে শেয়ারিং।

Content added By

Container এর জন্য Persistent Data Management

Persistent Data Management কনটেইনারাইজড পরিবেশে ডেটা সংরক্ষণ এবং ব্যবস্থাপনার একটি গুরুত্বপূর্ণ অংশ। কনটেইনারগুলি অস্থায়ী এবং প্রতিবার চালু হলে একটি নতুন কনটেইনার তৈরি হয়, যা পূর্বের ডেটা হারিয়ে যাওয়ার ঝুঁকি তৈরি করে। তাই Persistent Data Management কনটেইনারের জন্য একটি অত্যাবশ্যক প্রক্রিয়া। এখানে আমরা Persistent Data Management-এর পদ্ধতি এবং বিভিন্ন দিক আলোচনা করবো।

Persistent Data Management এর উপাদান

Docker Volumes:

  • বর্ণনা: Docker Volumes হল একটি ফাইল সিস্টেমের অংশ যা কনটেইনারের বাইরেও ডেটা সংরক্ষণ করে। এটি কনটেইনারের জীবনকাল অতিক্রম করে, তাই কনটেইনার মুছে গেলেও ডেটা নিরাপদ থাকে।
  • ব্যবহার: কনটেইনার তৈরি করার সময়, Volumes ব্যবহার করে ডেটা সংরক্ষণ করা হয়। উদাহরণ:
docker run -d -v my-volume:/data my-image

Bind Mounts:

  • বর্ণনা: Bind mounts হল ফাইল সিস্টেমের স্থানীয় অংশ যা কনটেইনারের ভিতরে সংযুক্ত হয়। এটি স্থানীয় ফাইল সিস্টেমের নির্দিষ্ট ডিরেক্টরি বা ফাইল কনটেইনারে মাউন্ট করে।
  • ব্যবহার: এটি ডেভেলপমেন্টের সময় স্থানীয় ফাইলের পরিবর্তনকে কনটেইনারে রিয়েল-টাইমে প্রতিফলিত করতে সহায়ক। উদাহরণ:
docker run -d -v /local/path:/container/path my-image

Docker Compose:

  • বর্ণনা: Docker Compose একটি টুল যা একাধিক কনটেইনার ব্যবস্থাপনার জন্য ব্যবহার করা হয়। এটি docker-compose.yml ফাইলের মাধ্যমে কনটেইনার, নেটওয়ার্ক এবং Volumes কনফিগার করতে দেয়।
  • ব্যবহার: Persistent Volumes পরিচালনা করতে Docker Compose ব্যবহার করুন। উদাহরণ:
version: '3.8'
services:
  web:
    image: my-web-app
    volumes:
      - my-volume:/data
volumes:
  my-volume:

Database Containers:

  • বর্ণনা: যখন আপনি ডেটাবেস (যেমন MySQL, PostgreSQL) কনটেইনার ব্যবহার করেন, তখন Persistent Data Management নিশ্চিত করা অত্যন্ত গুরুত্বপূর্ণ। সাধারণত, ডেটাবেসের জন্য Volumes ব্যবহার করা হয়।
  • ব্যবহার: ডেটাবেসের ডেটা সুরক্ষিত রাখতে একটি Volume ব্যবহার করুন। উদাহরণ:
docker run -d -e MYSQL_ROOT_PASSWORD=root -v mysql-data:/var/lib/mysql mysql

Persistent Data Management এর চ্যালেঞ্জ

ডেটা সংরক্ষণের ঝুঁকি:

  • কনটেইনার যখন মুছে ফেলা হয়, তখন অস্থায়ী ডেটা হারিয়ে যায়। তাই Persistent Volumes ব্যবহার করা উচিত।

ডেটা সিঙ্ক্রোনাইজেশন:

  • স্থানীয় ফাইল সিস্টেম এবং কনটেইনারের মধ্যে ডেটার সিঙ্ক্রোনাইজেশন নিশ্চিত করা।

ব্যাকআপ এবং পুনরুদ্ধার:

  • Persistent Volumes-এর জন্য নিয়মিত ব্যাকআপ গ্রহণ এবং প্রয়োজনে পুনরুদ্ধারের ব্যবস্থা থাকা উচিত।

পারফরম্যান্স সমস্যা:

  • কিছু সময়ে, Volumes বা Bind Mounts-এর পারফরম্যান্স বিভিন্ন হতে পারে। এই জন্য সঠিক কনফিগারেশন নিশ্চিত করা জরুরি।

সারসংক্ষেপ

Persistent Data Management কনটেইনারের জন্য একটি অপরিহার্য প্রক্রিয়া। Docker Volumes, Bind Mounts, এবং Docker Compose ব্যবহার করে কনটেইনারের বাইরের ডেটা সংরক্ষণ ও ব্যবস্থাপনা করা যায়। ডেটাবেস কনটেইনারের জন্য প্রয়োজনীয়তা বাড়ানোর জন্য Persistent Data Management খুবই গুরুত্বপূর্ণ। এভাবে কনটেইনারের অস্থায়ী প্রকৃতির সীমাবদ্ধতা কাটিয়ে ওঠা সম্ভব হয়।

Content added By

Docker Volume Command এবং উদাহরণ

Docker Volume ব্যবস্থাপনা করার জন্য বিভিন্ন কমান্ড উপলব্ধ রয়েছে। নিচে Docker Volume-এর সাথে কাজ করার জন্য প্রধান কমান্ড এবং তাদের উদাহরণ দেওয়া হলো।

১. Volume তৈরি করা

Docker Volume তৈরি করতে docker volume create কমান্ড ব্যবহার করা হয়।

docker volume create my-volume

বিবরণ: এখানে my-volume হল নতুন তৈরি করা ভলিউমের নাম।

২. Volume তালিকা দেখা

সকল Docker Volume দেখতে docker volume ls কমান্ড ব্যবহার করুন।

docker volume ls

বিবরণ: এটি আপনার সিস্টেমে উপলব্ধ সমস্ত ভলিউমের একটি তালিকা প্রদর্শন করবে।

৩. Volume সম্পর্কে বিস্তারিত তথ্য দেখা

নির্দিষ্ট একটি Volume সম্পর্কে বিস্তারিত তথ্য দেখতে docker volume inspect কমান্ড ব্যবহার করা হয়।

docker volume inspect my-volume

বিবরণ: এটি my-volume ভলিউমের বিস্তারিত তথ্য, যেমন এর পথ, এবং ব্যবহারকারী কন্টেইনারগুলির তথ্য দেখাবে।

৪. Volume মুছা

অপ্রয়োজনীয় Volume মুছতে docker volume rm কমান্ড ব্যবহার করুন।

docker volume rm my-volume

বিবরণ: এটি my-volume নামক ভলিউমটি মুছে ফেলবে। মনে রাখবেন, যদি সেই ভলিউমটি এখনও কোনো কন্টেইনার দ্বারা ব্যবহৃত হয়, তবে এটি মুছে ফেলা যাবে না।

৫. সমস্ত অব্যবহৃত Volume মুছা

সকল অব্যবহৃত Volume মুছতে docker volume prune কমান্ড ব্যবহার করুন।

docker volume prune

বিবরণ: এই কমান্ডটি সমস্ত অব্যবহৃত (unused) ভলিউম মুছে ফেলবে। এটি মুছতে চান কিনা নিশ্চিত করার জন্য আপনাকে একটি নিশ্চিতকরণ বার্তা দেখানো হবে।

৬. Volume ব্যবহার করে কন্টেইনার চালানো

Volume ব্যবহার করে একটি কন্টেইনার চালানোর জন্য -v বা --mount অপশন ব্যবহার করতে পারেন। উদাহরণস্বরূপ:

docker run -d --name my-container -v my-volume:/app/data my-app-image

বিবরণ: এখানে my-volume কন্টেইনারের /app/data ডিরেক্টরির সাথে যুক্ত করা হয়েছে। এটি কন্টেইনারের ভিতরে my-volume এর তথ্য সংরক্ষণ করবে।

সারসংক্ষেপ

Docker Volume-এর সঙ্গে কাজ করার জন্য বিভিন্ন কমান্ড রয়েছে, যা ভলিউম তৈরি, তালিকা, তথ্য দেখা, মুছা এবং কন্টেইনারের সাথে যুক্ত করার জন্য ব্যবহৃত হয়। এই কমান্ডগুলির মাধ্যমে আপনি ডেটার স্থায়িত্ব এবং কন্টেইনারের মধ্যে শেয়ারিং সুবিধা লাভ করতে পারেন। Docker Volume ব্যবস্থাপনা আপনার ডেভেলপমেন্ট এবং ডিপ্লয়মেন্টের প্রক্রিয়াকে আরও কার্যকর করে তোলে।

Content added By
Promotion