একটি এলএক্সসি / এলএক্সডি কনটেইনারটিতে একটি ভাগ করা হোস্ট ডিরেক্টরি যুক্ত করা হচ্ছে


19

আমি উবুন্টু ১৪.০৪-তে এলএক্সসি / এলএক্সডি নিয়ে পরীক্ষা-নিরীক্ষা করছি এবং এটি সব দুর্দান্ত কাজ করছে। আমার হোস্ট মেশিন এবং একটি ধারক এর মধ্যে কীভাবে ভাগ করা ডিরেক্টরিগুলি কাজ করতে হয় সে সম্পর্কে আমাকে কেবল এটি বের করা দরকার যাতে আমি ভার্চুয়ালবক্সটি একবারে এবং সকলের জন্য খাঁজতে পারি।

আমি এই পৃষ্ঠাটি দেখেছি: https://wiki.gentoo.org/wiki/LXD

যা নির্দেশাবলী সরবরাহ করে তবে আমি ত্রুটিগুলি পেতে থাকি।

এই কাজটি করার জন্য কি কোনও সাধারণ, স্পষ্ট নির্দেশাবলী জানেন? যে কোনও সহায়তা অনেক প্রশংসিত।


2
আমি ব্যবহার করে একটি হোস্ট ডিরেক্টরিতে মাউন্ট পরিচালিত করেছি: lxc config device add confexample sharedtmp disk path=/tmp source=/tmp/shared। তবে ধারকটিতে থাকা ডিরেক্টরিটির জন্য ফাইলগুলির জন্য মালিক এবং গোষ্ঠীটি 'কেউ নয়' এবং 'নোগ্রুপ' সেট করা আছে এবং মাউন্টটি কেবল পঠনযোগ্য।
ব্যবহারকারী 47227

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

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

আমি জানি না যা সংস্করণ এই জোড়া হয়েছে (আমি 2.18 উপর আছি) কিন্তু যদি সম্ভব, এছাড়াও আপনি ব্যবহার করতে পারে lxc fileহোস্ট এবং ধারক ব্যবহার মধ্যে ফাইল স্থানান্তর করতে pushএবং pull
কোড_ড্রেড

উত্তর:


21

আপনি উল্লেখ করেছেন যে https://wiki.gentoo.org/wiki/LXD এর নির্দেশাবলী সঠিক তবে আরও কিছুটা ব্যাখ্যা দরকার হতে পারে।

হোস্টে আপনি প্রথমে ধারকটির ডেটা সঞ্চয় করা সেই ডিরেক্টরিটির মালিকানা পরীক্ষা করুন। দৌড়

sudo ls -l /var/lib/lxd/containers

এবং আপনি যে ধারকটির সাথে ডিরেক্টরিটি ভাগ করতে চান তার মালিকটিকে পরীক্ষা করুন। আমার ক্ষেত্রে uidএবং gidউভয়ই ছিল 100000

এরপরে, আপনি যে ডিরেক্টরিটি ভাগ করতে চান তার মালিকানা পরিবর্তন করতে এগুলি ব্যবহার করুন:

sudo chown 100000:100000 /tmp/share_on_host

আপনি আপনার মন্তব্যে যেভাবে নির্দেশ করেছেন সেভাবে ধারকটির সাথে ডিরেক্টরিটি ভাগ করুন:

lxc config device add mycontainer sharedtmp disk \
                  path=/tmp/share_on_guest source=/tmp/share_on_host

এখন, পাত্রে, আপনি দেখতে পাবেন যে ডিরেক্টরিটি /tmp/share_on_guest(আমি আপনার ডিরেক্টরিটি মাউন্ট করার পরামর্শ দেব না /tmpকারণ এটি সিস্টেম দ্বারা অন্যান্য স্টাফের জন্য ব্যবহৃত হয় এবং বিশেষ অনুমতি রয়েছে) মূলটির মালিকানাধীন। এখান থেকে আপনি chownধারকটিতে মালিকানাটি উপযুক্তটিতে uidএবং gidআপনার ব্যবহারকারীর জন্য ধারকটিতে পরিবর্তন করতে ব্যবহার করতে পারেন ।

পার্শ্ব নোট হিসাবে, ধারকটিতে মালিকানা পরিবর্তনের পরে উদাহরণস্বরূপ uid33 জন ব্যবহারকারী হিসাবে আপনি হোস্টে দেখতে পাবেন যে uidএখন সেখানে 100033 রয়েছে, যা মোটামুটি বোঝায়।


এটি কেবল আমার সেটআপ কিনা তা নিশ্চিত নয়, তবে এলএক্সডি ভি 3.0.3 এলটিএস (উবুন্টু 18.04 এলটিএস) এর সাথে আমি /var/lib/lxd/containersচিহ্নিত পয়েন্টের মধ্যে প্রতীকী লিঙ্কগুলি ছাড়া আর কিছুই পাইনি /var/lib/lxd/storage-pools/lxd/containers(এই ক্ষেত্রে শেষ lxdবিটটি আমার জেডএফএস স্টোরেজ পুলের নাম)। সেখানকার সমস্ত পাত্রে একই 165536 ইউআইডি / জিড রয়েছে বলে মনে হয় যখন চলছে এবং root:rootযখন বন্ধ থাকবে।
ডিওরেন

1
আমি বুঝতে পেরেছি এটি একটি পুরানো প্রশ্ন + উত্তর, তবে উবুন্টু 18.04-এ, আমাকে কোনও অনুমতি দিয়েই ঝামেলা পোহাতে হয়নি। lxc configএটির সাথে ফোল্ডারটি যুক্ত করুন এবং এটি একটি কবজির মতো কাজ করেছে!
অ্যাপাচি

4

এই প্রশ্নের একটি আপডেট উত্তর এখানে।

ধারক /var/wwwহিসাবে হোস্ট ফোল্ডার মাউন্ট করুন /var/test

lxc config device add mycontainer vartest disk source=/var/www path=/var/test

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

3

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

$ lxc config ## display help
...
lxc config device add [<remote>:]<container> <device> <type> [key=value...]
    Add a device to a container.
...

মনে রাখবেন যে <device>এটি আপনি নির্ধারিত কেবল একটি স্বেচ্ছাসেবী নাম, যা পরবর্তী ডিভাইস পরিচালনার জন্য আইডি হিসাবে ব্যবহৃত হবে।

উদাহরণস্বরূপ, ধারকটিতে হোস্ট ফোল্ডার "./host" "/ mnt / host" হিসাবে মাউন্ট করতে ...

lxc config device add mycontainer vartest disk source=$(pwd)/host path=/mnt/host

একটি সমস্যা রয়ে গেছে - আপনি যদি এই ফোল্ডারটি হোস্ট এবং ধারক উভয়ই দ্বারা লিখনযোগ্য হতে চান তবে মালিকানা এবং অনুমতিগুলি সেই অনুযায়ী কনফিগার করা দরকার। এটি LXD এর ডিফল্ট মোড দ্বারা জটিল যা ব্যবহারকারী এবং গোষ্ঠী idমানের জন্য সংখ্যার রেঞ্জগুলিকে ভার্চুয়ালাইজ করে । তবে একটি সহজ সমাধান রয়েছে : হোস্ট-সমতুল্য সুবিধাগুলি সহ চালানোর জন্য ধারকটি কনফিগার করে এই ভার্চুয়ালাইজেশনটিকে বাইপাস করুন ...

lxc config set <container> security.privileged true

এই পদ্ধতির সম্পূর্ণ হোস্ট-সুরক্ষা প্রভাবগুলি আমার কাছে এই মুহূর্তে অস্পষ্ট, তবে ভার্চুয়ালাইজেশন দ্বারা কিছুটা "অন্তর্ভুক্ত" বলে মনে হবে। ব্যবহারিক ঝুঁকি নির্ভর করে আপনি কীভাবে এবং কেন পাত্রে ব্যবহার করবেন on Https://insights.ubuntu.com/2017/06/15/custom-user-mappings-in-lxd-containers এ প্রযুক্তিগত নোটগুলি দেখুন

আরও নোট করুন যে আপনি যদি সাধারণভাবে একটি অ-রুট ব্যবহারকারী হিসাবে কনটেইনারটিতে পরিচালনা করেন তবে এই পদ্ধতিরটি সম্ভবত সবচেয়ে ভাল কাজ করে যেমন আপনি যদি সংযুক্ত হন ...

lxc exec zesty -- su --login ubuntu

মূল-অ-লগইন নিয়ে সমস্যা রয়েছে: envবিশেষত : এটি আলাদা http_proxy। একটি উদাহরণ কার্যসংক্রান্ত: sudo http_proxy=http://[fe80::1%eth0]:13128 apt-get update
নোবার

সম্পর্কিত http_proxy, আমি মনে করি সহজ সমাধান সম্ভবত IPV4 সক্ষম করা এখানে আলোচনা হিসাবে ।
নোবার

... দ্বারা অনুসরণ sudo dhclientপরিবর্তন বা - কন্টেইনারে manualকরার dhcpমধ্যে 50-cloud-init.cfg। এখানে নিস সংকেত সনাক্ত করুন: github.com/lxc/lxd/issues/1298
nobar

1
এটি একটি স্পষ্টত খারাপ ধারণা। সুবিধাভোগী ধারকগুলিতে স্যুইচ করার প্রস্তাব দিয়ে এলএক্সডি যে খুব অগ্রগতি নিয়ে এসেছিল তার মধ্যে একটিকে হস্তান্তর করে। LXC 1.x এছাড়াও অপ্রয়োজনীয় পাত্রে (এবং হ্যাঁ, এমনকি মূল হিসাবে) ব্যবহার করার সম্ভাবনাও সরবরাহ করেছিল, তবে বিশদগুলি সাজানোর জন্য এটি কিছুটা জটিল ছিল। এলএক্সডি সহ এটি এখন অতীতের বিষয়। এছাড়াও, হোস্ট-সাইড ইউআইডি প্রয়োজনীয় অ্যাক্সেসের অনুমতি দেওয়ার জন্য বা এখানে বর্ণিত পদ্ধতিটি ব্যবহার করার জন্য কোনও ফোল্ডারে এসিএল সেট করা সম্পর্কে এত জটিল কী ? হ্যাঁ ইউআইডি / জিআইডি ম্যাপিং একমাত্র উপায় নয়!
0xC0000022L

1

উপর ভিত্তি করে ph0t0nix চমৎকার উত্তর , আমি উত্থাপন আমার উবুন্টু 18.04 সার্ভারের জন্য নিম্নলিখিত ধাপে ধাপে দৃষ্টীকোণ:

  1. হোস্টে rootfs এর মালিকের ইউআইডি নির্ধারণ করুন:

    sudo ls -l /var/lib/lxd/storage-pools/lxd/containers/webserver/rootfs  
    id -u root    100000
  2. ধারক মধ্যে উবুন্টুর ইউআইডি নির্ধারণ করুন (যেমন ধারক ব্যবহারকারী):

    id -u ubuntu    1000
  3. হোস্টে ভাগ করা ফোল্ডার তৈরি করুন এবং এটি পাত্রে যুক্ত করুন:

    lxc config device add webserver mydevicename disk path=/home/share_on_guest source=/home/share_on_host
  4. ভাগ করা ফোল্ডারের হোস্ট UID- এ সামঞ্জস্য করুন (UID = UID হোস্ট + ইউআইডি অতিথি):

    sudo chown 101000:101000 /home/share_on_host
  5. অতিথির (ব্যবহারকারী উবুন্টু) এখন ভাগ করা ফোল্ডারে অ্যাক্সেস রয়েছে এবং ব্যবহার করে ভাগ করা ফোল্ডারে কনটেইনার অ্যাক্সেসের মধ্যে সামঞ্জস্য করতে পারেন chmod


0

কনটেইনারটিতে এবং হোস্টে ইউআইডি এবং জিআইডি-র মধ্যে ম্যাপিং পরিচালনা করতে LXD প্রোফাইল ব্যবহার করে আমার কাছে এখন এই সমস্যার একটি কার্যকরী, নিরাপদ সমাধান রয়েছে।

একটি খুব দরকারী সংক্ষিপ্তসার এখানে পাওয়া যেতে পারে:

https://gist.github.com/bloodearnest/ebf044476e70c4baee59c5000a10f4c8


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

1
আপনি যা বলেছেন তার সাথে আমি একমত হয়েছিলে @ স্টাগ্রাবার, কীভাবে সেট আপ করবেন তা আমার কোনও ধারণা নেই। কিছু লিঙ্ক সহায়ক হবে।
s3v3n

দয়া করে সুপারিশ করি না 0777ওরফে "দয়া-হ্যাক-মাই-সিস্টেম-এবং-ধ্বংস-আমার-ডেটা" অনুমতিগুলি কোন আপাত কারণে! এর প্রায় কোনও কারণ নেই কারণ এটি (গ্রুপ) মালিকানা পরিবর্তনের মতো আরও বুদ্ধিমান পরিবর্তন দিয়ে এড়ানো যেতে পারে। -1
ডেভিড ফোস্টার

আমি আপনার বক্তব্যটি গ্রহণ করি, তবে আমি কেবল এটি ব্যবহার করেছি যে কোনও একক ব্যবহারকারীর বিকাশ মেশিনে অস্থায়ীভাবে কাজ করার জন্য অন্য কোনও উপায়ের অভাবে এটি কাজ করবে। সেই থেকে আমি আবিষ্কার করেছি যে প্রোফাইলগুলি ব্যবহার করা এটি হ্যান্ডেল করার উপায়, উপরে আমার সম্পাদিত উত্তরটি দেখুন!
ব্যবহারকারী 47227

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