স্বর্ম মোড নিজেই ভলিউমের সাথে আলাদা কিছু করে না, এটি নোডে আপনি সরবরাহ করেন এমন কোনও ভলিউম মাউন্ট কমান্ড চালায় যেখানে ধারকটি চলছে। যদি আপনার ভলিউম মাউন্টটি সেই নোডের স্থানীয় হয় তবে আপনার ডেটা সেই নোডে স্থানীয়ভাবে সংরক্ষণ করা হবে। নোডগুলির মধ্যে স্বয়ংক্রিয়ভাবে ডেটা স্থানান্তর করতে কার্যকারিতাটিতে কোনও অন্তর্নির্মিত নেই।
গ্লাস্টারএফএসের মতো কয়েকটি সফ্টওয়্যার ভিত্তিক বিতরণ স্টোরেজ সমাধান রয়েছে, এবং ডকারের ইনফিনিট নামে একটি রয়েছে যা এখনও জিএ নয় এবং এর বিকাশটি ইইতে কুবেরনেটস সংহতকরণের পিছনে আসন নিয়েছে।
সাধারণ ফলাফলটি হ'ল হয় আপনার অ্যাপ্লিকেশনটির মধ্যে স্টোরেজটির প্রতিলিপি পরিচালনা করতে হবে (যেমন ইত্যাদি এবং অন্যান্য ভেলা ভিত্তিক অ্যালগরিদম) অথবা আপনি একটি বাহ্যিক স্টোরেজ সিস্টেমে আপনার মাউন্টগুলি সম্পাদন করবেন (আশা করি এটির নিজস্ব এইচএ সহ)। একটি বাহ্যিক স্টোরেজ সিস্টেম মাউন্ট করার দুটি বিকল্প রয়েছে, ব্লক বা ফাইল ভিত্তিক। ব্লক ভিত্তিক স্টোরেজ (উদাঃ EBS) সাধারণত উচ্চতর পারফরম্যান্সের সাথে আসে তবে কেবল একটি নোডে মাউন্ট করা সীমাবদ্ধ। এর জন্য, আপনার ডকারকে সেই ব্লক স্টোরেজটিতে অ্যাক্সেস দেওয়ার জন্য আপনার সাধারণত একটি তৃতীয় পক্ষের ভলিউম প্লাগইন ড্রাইভারের প্রয়োজন হবে। ফাইল ভিত্তিক স্টোরেজ (যেমন ইএফএস) এর কর্মক্ষমতা কম থাকে তবে এটি আরও বহনযোগ্য এবং একসাথে একাধিক নোডে মাউন্ট করা যায় যা একটি প্রতিলিপিযুক্ত পরিষেবার জন্য দরকারী।
সর্বাধিক প্রচলিত ফাইল ভিত্তিক নেটওয়ার্ক স্টোরেজ হ'ল এনএফএস (এটি ইএফএস দ্বারা ব্যবহৃত একই প্রোটোকল)। এবং আপনি এটি কোনও তৃতীয় পক্ষের প্লাগইন ড্রাইভার ছাড়া মাউন্ট করতে পারেন। দুর্ভাগ্যক্রমে নামের "স্থানীয়" ভলিউম প্লাগইন ড্রাইভার যা আপনাকে ডক জাহাজের সাহায্যে চালকের বিকল্পগুলির সাহায্যে মাউন্ট কমান্ডের যে কোনও মান পাস করার বিকল্প দেয় এবং কোনও বিকল্প ছাড়াই এটি ডকার ডিরেক্টরি / var / lib / ভলিউম সংরক্ষণের জন্য ডিফল্ট হয় it ডকার / খণ্ড বিকল্পগুলির সাহায্যে আপনি এটিকে এনএফএস প্যারামিটারগুলি পাস করতে পারেন এবং এটি এনএফএস হোস্টনেম (একটি ডিএনএস লুকআপও করতে পারে যা সাধারণত এনএফএসের সাথে আপনার নেই)। স্থানীয় ভলিউম ড্রাইভার ব্যবহার করে একটি এনএফএস ফাইল সিস্টেম মাউন্ট করার বিভিন্ন উপায়ের উদাহরণ এখানে রয়েছে:
# create a reusable volume
$ docker volume create --driver local \
--opt type=nfs \
--opt o=nfsvers=4,addr=192.168.1.1,rw \
--opt device=:/path/to/dir \
foo
# or from the docker run command
$ docker run -it --rm \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=192.168.1.1\",volume-opt=device=:/host/path \
foo
# or to create a service
$ docker service create \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=192.168.1.1\",volume-opt=device=:/host/path \
foo
# inside a docker-compose file
...
volumes:
nfs-data:
driver: local
driver_opts:
type: nfs
o: nfsvers=4,addr=192.168.1.1,rw
device: ":/path/to/dir"
...
আপনি যদি শেষের দিকে রচনা ফাইলের উদাহরণটি ব্যবহার করেন তবে মনে রাখবেন যে একটি ভলিউমের পরিবর্তন (যেমন সার্ভারের পাথ বা ঠিকানা আপডেট করা) যতক্ষণ না বিদ্যমান রয়েছে ততক্ষণ বিদ্যমান নামযুক্ত ভলিউমে প্রতিফলিত হবে না। আপনার ভলিউমটির নতুন নামকরণ করতে হবে, বা এটি মুছতে হবে, যাতে নতুন মান সহ ঝাঁকুনিটিকে পুনরায় তৈরি করতে দেয়।
অন্যান্য সাধারণ সমস্যা যা আমি বেশিরভাগ এনএফএসের ব্যবহারে দেখতে পাচ্ছি তা হ'ল সার্ভারে "রুট স্কোয়াশ" সক্ষম করা। কনটেইনারগুলি ভলিউমে ফাইল লেখার রুট প্রয়াস হিসাবে চালিত হলে অনুমতি সংক্রান্ত সমস্যার ফলস্বরূপ। আপনার অনুরূপ ইউআইডি / জিআইডি অনুমতি সংক্রান্ত সমস্যা রয়েছে যেখানে কনটেইনার ইউআইডি / জিআইডি হ'ল ভলিউমে লেখার জন্য অনুমতি প্রয়োজন, যার জন্য ডিরেক্টরিটির মালিকানা এবং এনএফএস সার্ভারে অ্যাডজাস্ট করার অনুমতি প্রয়োজন হতে পারে।