হোস্ট ফাইল সিস্টেমে মাউন্ট ডকারের ধারক সামগ্রী


24

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

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

এটি করার কোনও যথাযথ উপায় আছে, বা এই ধরণের মাউন্টগুলিকে সমর্থন করার জন্য আমার কি ডকারকে প্যাচ করা দরকার?


এগুলি অন্য কোথাও বাঁধা কেন ভুল হবে?
মাইকেল হ্যাম্পটন

1
কারণ সঞ্চয় স্থানটি একটি বাস্তবায়ন বিশদ। দিন ডকার অন্য স্টোরেজ ড্রাইভার যুক্ত করে, অবস্থানটি সরানো হবে। আমার এই আধা-স্বয়ংক্রিয় তৈরি করা দরকার এবং সেই কারণে সর্বজনীন API গুলি ব্যবহার করা ভাল লাগবে।
dflemstr

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

কোনও ধারক সীমানা পেরিয়ে লিনাক্সকে নির্দেশ দেওয়ার কোনও উপায় নেই?
dflemstr

@dflemstr হ্যাঁ, --volume-from কিন্ডা এটি করে, এটি অন্য কনটেইনার বেস ইমেজ এবং ভলিউম থেকে ডিরেক্টরিটির একটি ইউনিয়ন মাউন্ট করার জন্য মনে হয়, তবে এই আচরণটি আফাইক নথিভুক্ত নয়
তারনে কলমেন

উত্তর:


10

একবার দেখুন docker export

আপনার পাত্রে ফাইলগুলি দ্রুত তালিকাবদ্ধ করতে:

docker export CONTAINER|tar -t

রপ্তানি করতে:

docker export CONTAINER>snapshot.tar
docker export CONTAINER|tar x PATH-IN-CONTAINER

অথবা একটি ফাইল তাকান:

docker export CONTAINER|tar x --to-stdout PATH-IN-CONTAINER
# e.g. 
docker export consul|tar x --to-stdout etc/profile

ডকার 1.8 সিপি সমর্থন করে :

https://docs.docker.com/reference/commandline/cp/

Usage:  docker cp [options] CONTAINER:PATH LOCALPATH|-
        docker cp [options] LOCALPATH|- CONTAINER:PATH

আপডেট: আপনি যখন এটি চালাবেন তখন আপনার ডকার মেশিনে এসশ করা উচিত।


2
আমার চিত্রগুলি মোটামুটি বড় (বহুশত MiB) তাই পৃথক ফাইল আনতে এটি করা খুব বেশি ওভারহেড। এটি প্রতিবার বহু শতাধিক মেগাবাইট ফাইল তৈরি করবে।
dflemstr

@dflemstr এর সাহায্যে লাইনটি ব্যবহার করুন tar x PATH-IN-CONTAINER, এটি কেবল আপনার প্রয়োজনীয় ফাইলগুলি বের করবে।
লকটক

... তবে পুরো tarআর্কাইভটি এখনও ডকার
ডেমনটিতে

@dflemstr আপনার সেটআপ কি তা নিশ্চিত নয় তবে উদাহরণস্বরূপ docker export ubuntu|tar -t|grep etc/networkআমার জন্য 3 সেকেন্ড সময় লাগে।
লকটক

আপনি সম্ভবত এটি ডকর ডিমন হিসাবে একই মেশিনে চালাচ্ছেন যাতে আপনার কোনও নেটওয়ার্ক ট্রান্সফার করার দরকার নেই এবং ubuntuচিত্রটি সত্যিই ছোট ...
dflemstr

3

আপনি নতুন চিত্রটিতে আপনার ধারকটির বর্তমান অবস্থা ধরে রাখতে ডকার কমিট ব্যবহার করতে পারেন এবং সামগ্রীগুলি পরিদর্শন করতে এই চিত্র থেকে একটি ইন্টারেক্টিভ ধারক শুরু করতে পারেন।

ডকুমেন্টেশন থেকে:

কোনও নতুন চিত্রে ধারকটির ফাইল পরিবর্তন বা সেটিংস প্রতিশ্রুতিবদ্ধ করতে এটি কার্যকর হতে পারে। এটি আপনাকে ইন্টারেক্টিভ শেল চালিয়ে একটি ধারক ডিবাগ করতে বা অন্য সার্ভারে একটি ওয়ার্কিং ডেটাসেট রফতানি করতে দেয়।

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


2

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

অন্যান্য পন্থা আছে। মূল পাতায় যা ছিল তার পরিবর্তে কী পরিবর্তন হয়েছে তা যদি আপনি দেখতে চান তবে ডকার ডিফটি সেই ধারকটিতে কী ফাইলগুলি পরিবর্তিত হয়েছে তা প্রদর্শন করবে।

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


1

সম্পাদনা: আমি নীচের সমাধানটি চেষ্টা করেছি এবং দুর্ভাগ্যক্রমে এটি অনুশীলনে আমার পক্ষে ভাল কাজ করে না। মাউন্ট করা ফাইল সিস্টেমটি সঠিকভাবে ধারকটির ফাইল সিস্টেমকে প্রতিফলিত করে না (এমনকি এটিও cache=no)। আমি নিশ্চিত নই যে এটি কোনও মৌলিক সমস্যা বা আমার কিছু ভুল হয়েছে।

আপনি ডকার ইমেজে এসএসডিডি ইনস্টল করতে পারেন এবং ডকার পাত্রে একটি এসএসএস docker execপরিষেবা ( /usr/sbin/sshd -D) চালাতে ব্যবহার করতে পারেন (নোট করুন যে ডকারের ধারকটির এসএসএইচ পোর্ট 22 উন্মুক্ত করা দরকার)।

তারপরে, docker cpআপনার সর্বজনীন ssh কীটি /root/.ssh/authorized_keysডকার ধারকটির ডিরেক্টরিতে অনুলিপি করতে ব্যবহার করুন ।

অবশেষে, ধারকটির docker inspectআইপি ঠিকানাটি সন্ধান করুন এবং ব্যবহার করে ধারকটির ফাইল সিস্টেমটি মাউন্ট করুন

sudo sshfs -o allow_other,default_permissions,IdentityFile=/path/to/identityfile  root@xxx.xx.x.x:/ /mnt/my_container

অনুশীলনে স্বাচ্ছন্দ্যে এই কাজটি করার জন্য আপনাকে একটি স্ক্রিপ্ট লিখতে হবে।

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