কেন ডকার-মেশিন পুনরায় চালু করতে ডেটা সাফ করে?


9

আমি ওএসএক্সে ডকার টুলবক্স ব্যবহার করছি।

অবিচলিত ডেটা সংরক্ষণ করার জন্য আমি একটি ডেটা ভলিউম ধারক তৈরি করেছি: https://docs.docker.com/userguide/dockervolume/#creating-and-mounting-a-data-volume-container

আমি পরীক্ষা করেছিলাম যে এই ডেটাটি সত্যই বুট 2 ডকার ভিএম (ডকার-মেশিন দ্বারা নির্মিত) এ সংরক্ষণ করা হয়েছে এবং ধারকটিতে নয়, যাতে এটি অবিরত থাকে। তবে "ডকার-মেশিন পুনঃসূচনা" ভিএম-তে এই কাস্টম ডেটা সাফ করে।

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

এটি কি প্রত্যাশিত এবং যদি তাই হয় তবে অবিরাম ডেটা সংরক্ষণের সঠিক পথে কোনও অফিসিয়াল ডকুমেন্টেশন রয়েছে?


সম্পাদনা: ব্যর্থ সেনেরিওর উদাহরণ যুক্ত করা

$ docker-machine ssh alt
docker@alt:~$ docker run -v /data:/var/lib/mysql --name mydata busybox sh -c "echo 'hello' > /var/lib/mysql/hello"
docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello"
hello
docker@alt:~$ exit
$ docker-machine restart alt
Starting VM...
$ docker-machine ssh alt
docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello"
cat: can't open '/var/lib/mysql/hello': No such file or directory

উত্তর:


8

এটি অবশ্যই কাজ করা উচিত:

$ docker-machine ssh default
docker@default:~$ docker run -v /data --name mydata busybox true
docker@default:~$ docker run --volumes-from mydata busybox sh -c "echo hello >/data/hello"
docker@default:~$ docker run --volumes-from mydata busybox cat /data/hello
hello
docker@default:~$ exit
$ docker-machine restart default
Starting VM...
$ docker-machine ssh default
docker@default:~$ docker run --volumes-from mydata busybox cat /data/hello
hello

আপনার সমস্যার পুনরুত্পাদন করার পদক্ষেপগুলিতে আপনি আরও বিস্তারিত বলতে পারেন?

বুট 2 ডকারের কেবল একটি পঠনযোগ্য ফাইল সিস্টেম রয়েছে (কেবল পুনরায় বুটে মুছা হবে) বাদে:

  1. ধারক এবং তাদের ডেটা (ভলিউম) - এটি আপনি পড়েন this /var/lib/docker
  2. ডকার ইমেজ
  3. ডকার কনফিগারেশন (উদাহরণস্বরূপ /var/lib/boot2docker/profileযেখানে ডেমনের পতাকাগুলি টুইট করা যায়)

হাই, আমি আপনার প্রতিক্রিয়ার জন্য একটি সম্পাদনার পরামর্শ দিয়েছি। আপনার কি দ্বিতীয় তৃতীয় এবং চতুর্থ রান কমান্ডগুলিতে ব্যস্তবক্স চিত্রটি নির্দিষ্ট করার অর্থ ছিল? এমনটি না করে ডকার "sh" এবং "বিড়াল" নামক চিত্রগুলি ডাউনলোড করার চেষ্টা করে যা আমার সন্দেহ হয় যে আপনি কী চান তা নয়। আমি উপরে একটি ব্যর্থ উদাহরণ যুক্ত করব।
গেরি

আপনার সাহায্যের জন্য ধন্যবাদ। আপনি এবং @ এমসি 0 উভয়ই এটির সাথে সহায়তা করেছিলেন তাই আমি আপনাকে টিক এবং তাকে অনুদান দিয়েছি (পাশাপাশি উভয়ের জন্য একটি +1)। আমি আশা করি আপনি এই মেলা বিবেচনা করবেন।
গেরি

1
হ্যাঁ, ভুল টাইপ করা হয়েছে। টাইপোর জন্য দুঃখিত।
নাথানক্লেয়ার

কোন ক্ষমা চাইতে হবে না। আমি ভুল বুঝেছি না তা নিশ্চিত করার জন্য আমি কেবল ডাবল চেকিং করছি। এটি দিয়ে আপনার সমস্ত সহায়তার জন্য চিয়ার্স।
গেরি

6

আমি বুট 2 ডকার ব্যবহার করি না, তবে / ডেটা পুনরায় বুটে মুছে ফেলা হলে, আপনার ভলিউমটি সেখানে সংরক্ষণ করা হয় ( docker run -v /data:/var/lib/mysql), তাই এটি হারিয়ে যাবে।

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

সম্ভবত আপনি -v /var/lib/mysqlবরং আপনার ডেটা ধারক তৈরি করা উচিত -v /data:/var/lib/mysql


-V পতাকা ব্যবহার করে একটি ভলিউম তৈরি করা এবং তারপরে অন্য ধারকগুলিতে --volume-from ব্যবহার করে সেই ধারকটি থেকে ভলিউম ব্যবহার করা ডকুমেন্টেশন হ'ল যা ডকুমেন্টেশন দেখায় ঠিক তেমনটিই ডকুমেন্টস.ডোকার. com / userguide / dockervolume/… আমি আশা করি যদি -v / অবস্থান জানে যে এটি / var / lib / ডকার / ভলিউমের সাথে সম্পর্কিত হওয়া উচিত এবং তারপরে একটি কোলন যুক্ত করলে তা পরিবর্তন করা উচিত নয়। খুব কমপক্ষে এটি অনর্থক। -v / var / lib / mysql! = -v / var / lib / mysql: / var / lib / mysql এটিও মনে হয় যে মাইএসকিএল
গেরি

আপনার সাহায্যের জন্য ধন্যবাদ। আপনি এবং @ নাথানক্লেয়ার উভয়ই এটির সাথে সহায়তা করেছিলেন তাই আমি আপনাকে অনুগ্রহটি দিয়েছি (এটির জন্য এটি আরও মূল্যবান) এবং আমি নাথানক্লেয়ারকে টিক দিয়েছি (পাশাপাশি উভয়ের জন্য একটি +1)। আমি আশা করি আপনি এটি ন্যায্য মনে করেন।
গেরি

@ গেরি অবশ্যই একটি ভলিউম তৈরি করবেন এবং তারপরে --volume-from এর মাধ্যমে ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। আপনার পাত্রে ইফেমেরাল / ডেটা মাউন্ট করা ঠিক নয়।
mc0e

হ্যাঁ ঝামেলা আমি জানি না / আমি পুনরায় আরম্ভ না করা অবধি ডেটা ক্ষণিকের ছিল।
গেরি

0

নোট করুন যে আমি ম্যাক বিটার জন্য ডকার ব্যবহার করছি যা এক্সহাইভ ভিএম ব্যবহার করছে।

/ Var / lib / boot2docker এর সামগ্রীগুলি মেশিন পুনঃসূচনাগুলির মধ্যে অবিচলিত থাকবে। সুতরাং আপনি যদি চান যে কিছু ফাইল আপনার ভিএম এ উপলব্ধ থাকে তবে সেগুলি এই ডিরেক্টরিতে রেখে দিন।

যদি আপনি চান যে ডকার পাত্রে চালানোর জন্য এগুলি অন্য কোনও জায়গায় অ্যাক্সেসযোগ্য হয় তবে আপনি নিম্নলিখিতগুলি / var / lib / boot2docker / প্রোফাইলে যুক্ত করতে পারেন:

mkdir -p /desired/path
ln -s /var/lib/boot2docker/your.file /desire/path/your.file

যদি আপনি সিস্টেমের ফাইলগুলিতে অন্য কনফিগারেশন যুক্ত করতে চান যা আপনার হোস্ট ফাইলে অতিরিক্ত মান হিসাবে ভিএম পুনরায় আর্টের মধ্যে স্থায়ী থাকে তবে আপনি নীচের মতো একটি কমান্ড যুক্ত করতে পারেন / var / lib / boot2docker / প্রোফাইল:

echo '127.0.0.1 your.domain.com' >> /etc/hosts

আশা করি এটা সাহায্য করবে

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