ডকার ভলিউম ধারক এবং ডকার ভলিউমের মধ্যে কীভাবে সিদ্ধান্ত নেবেন?


24

দস্তাবেজগুলি পড়ার পরে আমি নিজেকে উত্পাদনশীল অ্যাপ্লিকেশন / পরিষেবা ডেটা কীভাবে পরিচালনা করতে পারি তা সম্পর্কে কিছুটা বিভ্রান্তি পেয়েছি।

3 টি বিকল্প বলে মনে হচ্ছে:

  1. কেবল হোস্ট ডিরেক্টরিতে ভলিউম মানচিত্র করুন (উদাহরণস্বরূপ -vযুক্তি docker run)
  2. ডেটা (যেমন পৃথক ধারক এবং --volumes-from) জন্য একটি ডকার ধারক চিত্র তৈরি করুন
  3. ডকার ভলিউম তৈরি করা (যেমন docker volume create)

এখন, মনে হচ্ছে স্বীকৃত অনুশীলনটি বিকল্প # 2, তবে আমি ভাবছি যে # 3 এর উদ্দেশ্য কী।

বিশেষত আপনি কীভাবে এই পরিস্থিতিগুলি সঠিকভাবে পরিচালনা করেন docker volumeএবং প্রতিটি পরিস্থিতির জন্য কোনও ডাটা ভলিউম ধারক বা এটি ব্যবহার করা ভাল?

  • আপনার সার্ভারে আলাদা ভলিউম এবং / অথবা স্টোরেজ স্তরতে আপনার অ্যাপ্লিকেশন ডেটা প্রয়োজন
  • ব্যাক আপ
  • ডেটা পুনরুদ্ধার করা হচ্ছে



# 1 উত্পাদনের জন্য একটি গুরুতর বিকল্প নয়; এটির বিকল্পটি যদি বিদ্যমান থাকে তবে তা কখনই করা উচিত নয়।
মাইকেল হ্যাম্পটন

2
@ মিশেলহ্যাম্পটন কেন ?, তথ্য ডকারাইজড নাও হতে পারে তবে হোস্ট ওএস এখনও একটি অবকাঠামোগত দল দ্বারা পরিচালিত হয় যারা পর্যবেক্ষণ করে এবং ব্যাকআপগুলি
ডিউকোফগেমিং

@dukeofgaming আপনি btrfs scrubক্ষতিগ্রস্থ ফাইলগুলি সন্ধান করতে এবং এটি সংশোধন করতে এর উপর চালাতে পারবেন তা উল্লেখ করার দরকার নেই । আমি কীভাবে ডকারাইজড স্টাফগুলি কাজ করে তা নিশ্চিত নই, তবে আমার ধারণা এটি ডেটা পচা থেকে রক্ষা করে না, তাই কেবলমাত্র পৃথক ফাইলগুলি পুনরুদ্ধারের পরিবর্তে কোনও খারাপ কিছু ঘটলে আমার সর্বদা একটি পুনরুদ্ধার প্রয়োজন need আরেকটি ধারণা যে এটি বিমূর্তির আরও একটি স্তর যুক্ত করে, তাই এটি ফাইল পড়া এবং আরও কিছুটা কমিয়ে দেয়। আমি কোনওভাবে # 2 এবং # 3 এর সুবিধাগুলি দেখতে পাচ্ছি না তবে আমি ডকারের সাথে অভিজ্ঞ নই, সুতরাং এটি পরিবর্তন হতে পারে।
inf3rno

উত্তর:


18

আমার মনে হয় # 2 এবং # 3 একই জিনিস, মূল পার্থক্য হ'ল # 3 দিয়ে কোনও থামানো ধারক নেই (এটি আক্ষরিক অর্থে, কেবল একটি নামযুক্ত ভলিউম)। উদাহরণস্বরূপ, আপনি একটি নামযুক্ত ভলিউম তৈরি করতে পারেন এবং একইভাবে আপনি -vপরিবর্তে # 2 দিয়ে যা করবেন তা করতে পারেন ।

একটি নামযুক্ত ভলিউম তৈরি করুন:

$ docker volume create --name test

একটি ধারক থেকে সেই ভলিউমে কিছু তথ্য মাউন্ট করুন এবং লিখুন:

$ docker run -v test:/opt/test alpine touch /opt/test/hello

তারপরে আপনি একই testধারকটি অন্য পাত্রে মাউন্ট করতে পারেন এবং ডেটা পড়তে পারেন:

$ docker run -v test:/opt/test alpine ls -al /opt/test     
total 8
drwxr-xr-x    2 root     root          4096 Jan 23 22:28 .
drwxr-xr-x    3 root     root          4096 Jan 23 22:29 ..
-rw-r--r--    1 root     root             0 Jan 23 22:28 hello

এখানে সুবিধা হ'ল ভলিউমটি দুর্ঘটনাক্রমে অদৃশ্য হয়ে যাবে না যদি আপনি কেবলমাত্র ডেটা পাত্রে সরিয়ে ফেলেন। আপনি এখন এটি docker volumeসাব-কমান্ড দিয়ে পরিচালনা করুন ।

$ d volume ls
DRIVER              VOLUME NAME
local               test

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

এই কারণে, আমি মনে করি যে আরও নতুন-স্কুল উপায় (ডকার 1.9+) কেবলমাত্র ডেটা-পাত্রে নয় বরং নামযুক্ত ভলিউম ব্যবহার করা use


ধন্যবাদ, আপনি আমার বেশিরভাগ প্রশ্নের উত্তর দিয়েছিলেন, তবে বিভিন্ন শারীরিক ভলিউম স্তরতে ধারক ডেটা পরিচালনার বিষয়টি এখনও উত্তরহীন এবং এটিই সমালোচনামূলক ... মনে করুন এটি গিট রেপো ম্যানেজমেন্ট সমাধান এবং আমার ধারকের সেই অংশটি দরকার টায়ার 0 স্টোরেজে ডেটা (যা ডকফাইফায়লে সংজ্ঞাযুক্ত একটি ভলিউম) অন্য কোনও শারীরিক হোস্ট ভলিউমে অবস্থিত (যেমন অন্য একটি পার্টিশন, ফিজিকাল ডিস্ক বা যা কিছু)
ডিউকোফগেমিং

আমি বাছাই করে ভলিউম ড্রাইভারের উল্লেখ দিয়েছিলাম। এখনই, শারীরিক লোকাল স্টোরেজ ড্রাইভারের বাইরে ডেটা সঞ্চয় করার জন্য আপনাকে এমন একটি ব্যবহার করতে হবে যা আপনি যা করতে চাইছেন তা বিশেষভাবে করেছিল did আমার মাথার উপরের অংশে, গিথুব / রঞ্চার / কনভয় এবং গিথুব / ক্লাস্টার এইচকিউ / ফ্লোকার রয়েছে । কনভয়ের এই মুহুর্তে এনএফএস এবং গ্লাস্টারএফএসের সমর্থন রয়েছে যা আপনি যা করছেন তার কাছাকাছি শোনাচ্ছে। আমি এটি পরিষ্কার করার জন্য উত্তরটি পরিবর্তন করব।
অ্যান্ডি শিন 18

ডিভাইস ড্রাইভার ব্যবহার করে আমার প্রশ্নের উত্তর বলে মনে হচ্ছে, ধন্যবাদ! docs.docker.com/engine/userguide/storagedriver/…
ডিউকুফগেমিং

the volume won't accidentally disappear if you remove the data-only container। আপনি বিস্তারিত বলতে পারেন? ধন্যবাদ।
স্টিফেন

22

ডকার ১.৯ হিসাবে, ভলিউম এপিআই ( docker volume create --name mydata) দিয়ে নামযুক্ত ভলিউম তৈরি করা ডেটা ভলিউম ধারকটির চেয়ে বেশি পছন্দ করা হয়। ফেব্রুয়ারী ২০১ 2016 পর্যন্ত, ডকার ভলিউমের ডকুমেন্টেশনগুলি খুব খারাপভাবে পুরানো। ডকারের লোকেরা তাদের পরামর্শ দেয় যে ডেটা ভলিউম ধারকগুলি " আর প্রস্তাবিত প্যাটার্ন হিসাবে বিবেচনা করা হয় না ," " নামযুক্ত ভলিউমগুলি বেশিরভাগ (যদি না সমস্ত) ক্ষেত্রে ডেটা-কেবলমাত্র ভলিউমগুলি প্রতিস্থাপন করতে সক্ষম হয় ," এবং " কোনও কারণ আমি ব্যবহার করতে দেখতে পাচ্ছি না কেবলমাত্র ডেটা পাত্রে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.