ডকফাইফিলে ভলিউমের উদ্দেশ্য কী


106

আমি ডকারের আয়তন সম্পর্কে আমার উপলব্ধি আরও গভীর করে দেখার চেষ্টা করছি এবং এর পার্থক্য / ব্যবহারের বিষয়গুলি খুঁজে বের করতে আমার খুব কষ্ট হচ্ছে:

  • docker volume createহুকুম
  • দ্য docker run -v /path:/host_path
  • VOLUMEমধ্যে এন্ট্রি Dockerfileফাইল

আপনি পতাকাটির VOLUMEসাথে প্রবেশটি একত্রিত করলে কী হয় তা আমি বিশেষত বুঝতে পারি না -v


1
সম্পর্কিত: stackoverflow.com/a/46992367/3160529
শুভম

উত্তর:


70

ভলিউম হ'ল একটি অবিরাম ডেটা /var/lib/docker/volumes/...

  • আপনি এটি কোনও ডকফায়াইলে ঘোষণা করতে পারেন, যার অর্থ প্রতিবার চিত্র থেকে একটি ধারক শুরু করার পরে, কোনও বিকল্প না থাকলেও ভলিউমটি তৈরি করা হবে ( খালি ) -v

  • আপনি রানটাইম এ এটি ঘোষণা করতে পারেন docker run -v [host-dir:]container-dir
    দুটি ( VOLUME+ docker run -v) একত্রিত করার অর্থ হ'ল আপনি কোনও ধারক দ্বারা চালিত হোস্ট ফোল্ডারের সামগ্রীটিকে আপনার ভলিউমে মাউন্ট করতে পারেন/var/lib/docker/volumes/...

  • ডকার ভলিউম তৈরি ডকফেরফাইল সংজ্ঞা না দিয়ে একটি চিত্র তৈরি করে একটি পাত্রে চালিত করে একটি ভলিউম তৈরি করে। এটি অন্যান্য পাত্রে দ্রুত কথিত ভলিউমটিকে মাউন্ট করার জন্য ব্যবহৃত হয়।

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

" ডকার - একটি ধারকটিতে সংযুক্ত না থাকা একটি ভলিউমটি কীভাবে অ্যাক্সেস করবেন? " দেখুন।
ডকার ভলিউম তৈরির সাথে, কোনও ধারকটিতে নামযুক্ত ভলিউমটি পুনরায় সংযুক্ত করা সহজ।

docker volume create --name aname
docker run -v aname:/apath --name acontainer
...
# modify data in /apath
...
docker rm acontainer

# let's mount aname volume again
docker run -v aname:/apath --name acontainer
ls /apath
# you find your data back!

2
আসুন আপনি একটি ব্যবহার বলতে Dockerfileসঙ্গে VOLUMEএবং -v /path:/host_path/পতাকা। বিষয়বস্তু VOLUMEদ্বারা ওভাররাইড করা হবে /host_path/?
রেডিয়াম 226

আপনাকে @ ভনসিকে ধন্যবাদ, আমি মনে করি আমি এটি পেয়েছি :) এবং আপনি যদি একটি docker volume create --name my_volumeদ্বারা অনুসরণ করেন তবে আপনি docker run --volume-from my_volumeকীভাবে জানবেন যে মাউন্টপয়েন্টটি কোথায় থাকবে?
রেডিয়াম 226

@ রডিয়াম 226 কোনও মাউন্ট পয়েন্ট নেই (যার অর্থ হোস্টের কাছ থেকে কিছুই খালি / var / lib / ডকার / ভলিউমের পাশে নেই)। : ভলিউম পথ my_volume মেটাডাটা হয় stackoverflow.com/a/31997267/6309
VonC

আমি বুঝতে পারি যে হোস্টের পাশের কোনও মাউন্টপয়েন্ট নেই। তবে চলমান কন্টেইনারটির সাথে docker run ...আমি কীভাবে my_volumeভলিউমে সঞ্চিত কোনও ফাইলে লিখতে পারি ? আমি জানি না ... পথ? আমার চলমান ধারকটির ভলিউমটি কারণ আমি কিছুই সংজ্ঞায়িত করেছি? আমি আশা করি আমি যথেষ্ট পরিষ্কার, কারণ আমি অবশ্যই আমার কণ্ঠস্বর সম্পর্কে নিশ্চিত নই: - /
রেডিয়াম 226

1
@ রেডিয়াম 226 docker volume create --name anameএকটি নামযুক্ত ভলিউম তৈরি করে : আপনি রানটাইমের সময় একটি ধারক পাথ নির্ধারণ করুন :: ধারকটির docker run -v aname:/apathএখন এটির সাথে একটি ভলিউম সংযুক্ত রয়েছে, তার / অ্যাপাথ ফোল্ডারে মাউন্ট করা হয়েছে। আমি এটি পরিষ্কার করার জন্য উত্তরটি আবার লিখেছি।
ভোনসি

11

VOLUMEআপনি volumes-fromরানটাইম প্যারামিটারের সাথে একত্রিত হয়ে গেলে নির্দেশিকা আকর্ষণীয় হয়ে ওঠে ।

নিম্নলিখিত ডকফেরাইল দেওয়া হয়েছে:

FROM busybox
VOLUME /myvolume

এর সাথে একটি চিত্র তৈরি করুন:

docker build -t my-bb .

এবং এটি দিয়ে একটি ধারক স্পিন করুন:

docker run --rm -it --name my-first-bb my-bb

প্রথমে লক্ষ্য করার বিষয়টি হল আপনার নামের এই চিত্রটিতে একটি ফোল্ডার থাকবে myvolume। তবে এটি বিশেষ আকর্ষণীয় নয় কারণ আমরা যখন ধারকটি প্রস্থান করি তখন ভলিউমটিও সরানো হবে।

এই ফোল্ডারে একটি খালি ফাইল তৈরি করুন, সুতরাং ধারকটিতে নিম্নলিখিতটি চালান:

cd myvolume
touch hello.txt

এখন একটি নতুন ধারক স্পিন করুন তবে একই ভলিউমটি এর সাথে ভাগ করুন my-first-bb:

docker run --rm -it --volumes-from my-first-bb --name my-second-bb my-bb

আপনি যে দেখতে হবে my-second-bbফাইল আছে hello.txtমধ্যে myvolumeফোল্ডার।

আপনি উভয় পাত্রে প্রস্থান করার পরে, আপনার ভলিউমটিও সরানো হবে।


ভলিউমগুলি মুছে ফেলা হবে কারণ তারা অজ্ঞাতনামা ভলিউম এবং আপনি ধারকগুলি --rmবিকল্পটি দিয়ে শুরু করেছিলেন । আমি মনে করি এটি সম্ভবত এটির কাজ করে। আপনার সাথে একটি ধারক শুরু না করে থাকেন তাহলে --rm, আপনি কি এখনও ধারক মুছে ফেলুন এবং তার পারবেন বেনামী ভলিউম সঙ্গে docker rm -v my-container
আয়মদেব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.