আমি কীভাবে একটি এলএক্সসি ধারক এবং হোস্টের মধ্যে একটি ডিরেক্টরি ভাগ করব?


15

আমি কীভাবে হোস্ট সিস্টেম (উবুন্টু 14.04) এবং একটি উবুন্টু এলএক্সসি ধারক এর মধ্যে একটি ফোল্ডার ভাগ করতে পারি?

আমি হোস্টটিতে ফোল্ডারটি মাউন্ট করার চেষ্টা করেছি:

sudo mount --bind /media/data/share /media/data/container/name/rootfs/share

তবে আমি কোনও ফাইল দেখতে পাচ্ছি না।

একই জন্য:

sudo ln -s /media/data/share /media/data/container/name/rootfs/share

ভাগ ফোল্ডারের জন্য আমার কি অনুমতিগুলি পরিবর্তন করতে হবে?

উত্তর:


13

এলএক্সসি ডকুমেন্টেশন অনুসারে আপনি এটি কোনও সুবিধাভোগী ধারকটির মাধ্যমে করতে পারেন:

lxc launch ubuntu priv -c security.privileged=true
lxc config device add priv homedir disk source=/home/$USER path=/home/ubuntu

উল্লেখ্য, এটি LXD নথি, LXC নয়। আপনি যদি LXD ইনস্টল না করে থাকেন তবে lxc কমান্ড কাজ করবে না।
স্যাম বুল

@ স্যামবুল ভাল, এটি এলএক্সসি / এলএক্সডি টিম দ্বারা স্ব-ক্ষতিযুক্ত। এলএক্সসি লিবলএক্সসি (অন্তর্নিহিত গ্রন্থাগার) বা lxdএই উত্তরে ব্যবহৃত এলএক্সডি ক্লায়েন্টকে (নামযুক্ত ) উল্লেখ করতে বা এলএক্সসি (সফ্টওয়্যার এবং lxc-*নামযুক্ত সরঞ্জামগুলির সাথে "পুরাতন" টুলসেট) বা প্রকল্পে (যেখানে এলএক্সসি ব্যবহার করা যেতে পারে) লিনাক্স ধারকগুলির জন্য সংক্ষিপ্ত)। আমি ইউনিক্স.এসই মেটাতে এই প্রশ্নটি করার কারণ ।
0xC0000022L

12

আমি ওপেনসুএস উইকিতে একটি নিবন্ধ পেয়েছি: https://en.opensuse.org/User:Tsu2/LXC_mount_shared_directory

আমি পদক্ষেপগুলি অনুসরণ করেছিলাম এবং এটি এখন কাজ করে।

হোস্ট ডিরেক্টরি তৈরি করুন:

mkdir /media/data/share && chmod 7777 /media/data/share

Lxc ধারক মধ্যে ডিরেক্টরি তৈরি করুন:

mkdir /share

হোস্টে lxc কনফিগারেশন ফাইল সম্পাদনা করুন:

nano /var/lib/lxc/containername/config
lxc.mount.entry = /media/data/share share none ro,bind 0.0

মাউন্ট এন্ট্রিটিকে কেবল পঠন হিসাবে সংজ্ঞায়িত করার পিছনে কোনও কারণ আছে? ভাগ করা ফাইল সিস্টেমে ডেটা ফেরত লেখার জন্য কোনও ধারক এড়ানোর জন্য এটি কি ভাল সুরক্ষা অনুশীলন ?.
jgomo3

1
আমার জন্য কাজ করেছেন। লক্ষ্য করুন আপেক্ষিক পাথ জন্য ব্যবহৃত shareমধ্যে lxc.mount.entryগুরুত্বপূর্ণ।
এইচআরজে

1
আপনার 'মাউন্ট পয়েন্ট' তৈরি করার দরকার নেই, যদি আপনি যোগ করেন তবে 'বাইন্ড' পরে 'dir' তৈরি করুন। আমি 'আরও' অংশটিও সরিয়ে ফেলেছি এবং মনে হচ্ছে এটি ঠিকঠাক কাজ করছে।
স্যাম বুল

4

নীচে আমি আমার হোস্ট ডিরেক্টরিটির একটি ধারকটিতে মাউন্ট করতে যা করেছি। এটি যতটা শোনার চেয়ে কৌশলযুক্ত কারণ আমরা তা অর্জন করতে চাই

  • ধারকটির ভিতরে আমাদের ডিরেক্টরিতে লিখতে সক্ষম হওয়া উচিত।
  • ধারকতার বাইরে আমাদের ধারকটির ভিতরে তৈরি ফাইল এবং ডিরেক্টরিতে লিখতে সক্ষম হওয়া উচিত।

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

মনে করুন আমি ধারকটিতে /home/breakds/projectsঠিক একই জায়গায় যাচ্ছি । বাইরের ডিরেক্টরিটি ব্যবহারকারীর মালিকানাধীন breakds, যার ইউআইডি এবং গিড 1000

তারপরে আমি debianধারকটিতে একটি ব্যবহারকারী তৈরি করেছি , যার ইউআইডি এবং গিডটি 1000একই সাথে হয়েছে (কারণ এটি প্রথম নন-রুট ব্যবহারকারী)। তারপরে আমি হোস্টের দ্বারা একটি (lxc) প্রোফাই তৈরি করব

lxc profile edit breakds

এবং নীচে প্রোফাইলের সামগ্রী রয়েছে (আমি বিশ্বাস করি এটি ইয়ামাল ফর্ম্যাটে রয়েছে):

name: breakds
config:
    raw.lxc: |
        lxc.id_map =
        lxc.id_map = u 0 165536 999
        lxc.id_map = g 0 165536 999
        lxc.id_map = u 1000 1000 1
        lxc.id_map = g 1000 1000 1
        lxc.id_map = u 1001 166537 64535
        lxc.id_map = g 1001 166537 64535
    user.vendor-data: |
        packages:
            - bash
description: allow home dir mounting for breakds
devices:
eth0:
    name: eth0
    nictype: bridged
    parent: lxdbr0
    type: nic
projects:
    path: /home/breakds/projects
    source: /home/debian/projects
    type: disk

তারপরে, স্থায়ীভাবে এই ধারকটিতে এই প্রোফাইলটি প্রয়োগ করুন:

$ lxc profile apply <my container> breakds

এই কৌতুক করতে হবে।

দ্রষ্টব্য : দয়া করে নোট করুন যে এই প্রোফাইলে স্যুইচ করার আগে, নিশ্চিত হয়ে নিন যে সমস্ত ডিরেক্টরি বা ফাইলগুলি যার মালিক / গ্রুপ ডেবিয়ান সেগুলি মুছে ফেলা উচিত (এবং সম্ভবত স্যুইচের পরে পুনরায় তৈরি করা)। এটি কারণ uid এবং গিড ম্যাপিংয়ের পরে, তাদের মালিকানা অবৈধ হয়ে যাবে। আমি মূলত ভেবেছিলাম যেহেতু আমি মাত্র 1000 থেকে 1000 ম্যাপিং করছি সবকিছু ঠিক করা উচিত, তবে আমি মনে করি যে আমি এখানে কিছু মিস করেছি এবং হ্যাক ছাড়াই কেউ কীভাবে এটি সমাধান করতে পারে সে সম্পর্কে কেউ পরামর্শ দিতে পারলে এটি দুর্দান্ত হবে।


তবে আপনি সর্বদা chownহোস্ট থেকে পারেন ।
iBug

1

আপনি LXC কনফিগারেশন ফাইলটি সরাসরি সম্পাদনা করে LXD ছাড়াই এটি করতে পারেন:

# Container specific configuration
lxc.idmap = u 0 165536 1000
lxc.idmap = g 0 165536 1000
lxc.idmap = u 1000 1000 1
lxc.idmap = g 1000 1000 1
lxc.idmap = u 1001 166536 64535
lxc.idmap = g 1001 166536 64535

আপনাকে এটিও নিশ্চিত করতে হবে যে ধারকটির ব্যবহারকারীর অ্যাকাউন্টে / etc / subuid এবং / etc / subgid সম্পাদনা করে হোস্টে 1000 / uid / gid মানচিত্রের অনুমতি দেওয়া হয়েছে:

containeruser:165536:65536
containeruser:1000:1

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