কীভাবে অনিবদ্ধ এলএক্সসি পাত্রে স্বয়ং-শুরু করবেন?


9

উবুন্টু ১৪.০৪-তে আমি একটি অনিবদ্ধ পাত্রে তৈরি করেছি যা আমি নিজেই শুরু করতে এবং থামাতে পারি।

তবে আমি এটি সিস্টেমের সাথে শুরু করে থামাতে চাই।

আমি ধারকটির কনফিগারেশনে নিম্নলিখিতটি যুক্ত করেছি: lxc.start.auto = 1 lxc.start.delay = 5

তবে, সিস্টেমের স্ক্রিপ্টগুলি অপ্রয়োজনীয় পাত্রে বাছাই করে নি বলে মনে হচ্ছে।

নেই একটি থ্রেড linuxcontainers.org এই সাথে সম্পর্কিত, কিন্তু সমাধান অবধি সীমিত হবে বলে মনে হয় rootব্যবহারকারী।

কোনও অ-রুট ব্যবহারকারী (রুট ব্যবহারকারীর সম্মতিতে) এর জন্য এটি করার কোনও পরিষ্কার উপায় আছে কি?

উত্তর:


3

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

মঞ্জুরিপ্রাপ্ত যদি আপনি সিস্টেমযুক্ত না ব্যবহার করেন তবে এই সমাধানটি সাহায্য করবে না। সেক্ষেত্রে আমি আপনাকে পরামর্শ দিচ্ছি যে আপনার থ্রিম সিস্টেমে অপ্রত্যাশিত ব্যবহারকারীদের বুটে সার্ভিস চালানোর অনুমতি দেওয়ার কোনও উপায় আছে এবং এটি একটি বিন্দু হিসাবে ব্যবহার করুন।

অপ্রতিযুক্ত এলএক্সসি পাত্রে স্বস্টার্ট করতে সিস্টেমড ব্যবহারকারী মোড ব্যবহার করা হচ্ছে

আমি ধরে নিচ্ছি আপনার কাছে অপ্রতিযুক্ত এলএক্সসি কনটেইনারগুলি সঠিকভাবে কাজ করছে এবং যেটি ধারকটির lxc-autostartব্যবহারকারীর কাজ হিসাবে চলছে running যদি তা হয় তবে নিম্নলিখিতগুলি করুন:

  1. ~/.config/systemd/user/lxc-autostart.serviceব্যবহারকারীদের কাছে এলএক্সসি পাত্রে থাকা ফাইলের ফাইলটি তৈরি করুন :
[Unit]
Description="Lxc-autostart for lxc user"

[Service]
Type=oneshot
ExecStart=/usr/bin/lxc-autostart
ExecStop=/usr/bin/lxc-autostart -s
RemainAfterExit=1

[Install]
WantedBy=default.target
  1. তারপরে সেই ব্যবহারকারী রান করুন:
systemctl --user enable lxc-autostart

(দ্রষ্টব্য, --userবিকল্পটি সিস্টেমেস্টিটলকে আপনি এটি ব্যবহারকারীর মোডে ব্যবহার করছেন। বলছি ct সাধারণত আমি সিস্টেমটেল, স্টার্ট, স্ট্যাটিক, সক্ষম ইত্যাদি) - ব্যবহারকারীর সাথে কাজ করি)

  1. তারপরে নিম্নলিখিতটি চালান, যেখানে $userব্যবহারকারীর নাম যেখানে এলএক্সসি পাত্রে রয়েছে:
sudo loginctl enable-linger $user

$userবুট করার সময় সিস্টেমে একটি সিস্টেমযুক্ত ব্যবহারকারী উদাহরণ শুরু করা আবশ্যক । অন্যথায় এটি $userলগ ইন করার মুহুর্তে কেবল একটি শুরু হবে ।

আরও তথ্যের জন্য আমি আর্চলিনাক্স উইকি সিস্টেমড / টাইমার পৃষ্ঠা এবং সিস্টেমড ম্যান পৃষ্ঠাগুলির সুপারিশ করব

ব্যবহারকারীর সিস্টেমেড উদাহরণটি রুট হিসাবে অ্যাক্সেস করা

আপনি ব্যবহারকারীর সিস্টেমড সার্ভিসটিকে মূল হিসাবে শুরু / থামাতে / শুরু করতে পারেন, তবে এটি আপনাকে XDG_RUNTIME_DIRপরিবেশের পরিবর্তনশীল সেট করতে হবে । ধরে নিন $user যে সেই ব্যবহারকারীর উদাহরণে আপনি অ্যাক্সেস করতে চান এবং $uidএটি উদ্বিগ্ন, তারপরে আপনি উপরে বর্ণিত lxc-autostart.service শুরু করবেন:

sudo -u $user XDG_RUNTIME_DIR=/run/user/$uid systemctl --user start lxc-autostart

এমনকি systemd-runlxc না ভাঙার উপায়ে ব্যবহারকারীর হিসাবে স্বেচ্ছাসেবক কমান্ডগুলি চালাতে ব্যবহার করতে পারেন । আমি ব্যাকআপের আগে / পরে আমার পাত্রে থামাতে / শুরু করতে নিম্নলিখিত কমান্ডগুলি ব্যবহার করছি, যেখানে $nameব্যাকআপ করা হচ্ছে এমন lxc ধারকটির নাম কোথায় :

sudo -u $user XDG_RUNTIME_DIR=/run/user/$uid systemd-run --user --wait lxc-stop -n $name
sudo -u $user XDG_RUNTIME_DIR=/run/user/$uid systemd-run --user --scope lxc-start -n $name

(মনে রাখবেন যে --waitকন্টেইনারটি থামানো না হওয়া পর্যন্ত সিস্টেম-চালিত ব্যতীত অবরুদ্ধ হয় না))


7

আমি চালাতে উবুন্টুর ক্রোনটিতে হ্যান্ডি@reboot ওরফে ব্যবহার করার পরামর্শ দেব ।lxc-autostart

ব্যবহারকারী যেমন অনিবদ্ধ পাত্রে মালিক হিসাবে চালান crontab -eএবং নিম্নলিখিত লাইনটি যুক্ত করুন:

@reboot lxc-autostart


এই দুর্দান্ত লাগছে। তবে শাটডাউন (ক্রোন হয়ে) কমান্ড চালানোর কোনও উপায় বলে মনে হচ্ছে না। কোন ধারনা?
এইচআরজে

শাটডাউনে কোনও কাজ চালানোর কোনও সহজ উপায় সম্পর্কে আমি অবগত নই। মূল হিসাবে, আপনার সম্ভবত প্রতিটি ব্যবহারকারীর মালিকানাধীন কনটেইনারগুলিকে শাটডাউন পাত্রে একটি আপস্টার্ট কাজ যুক্ত করতে হবে। আপনি /etc/init/lxc.confপয়েন্টার জন্য তাকান পারে । এটি সুবিশাল পাত্রে শুরু হওয়া প্রথম কাজ contain এটি অনুলিপি করা কন্টেইনারগুলি অনুলিপি করার জন্য এটি অনুলিপি করা এবং এটি পরিবর্তন করা খুব কঠিন হওয়া উচিত না।
এনকোড

1
এটি আমার কাছে ঘটেছিল যেহেতু ধারকটির প্রতিটি প্রক্রিয়া হোস্টের থেকে দৃশ্যমান, কনটেইনারটি সম্ভবত এটি বন্ধ করার জন্য বিশেষ কিছু প্রয়োজন হয় না, প্রতিটি প্রক্রিয়াটি হোস্টের কাছ থেকে TERM সংকেত গ্রহণ করা উচিত। সম্ভাবনা হ'ল আপনার শাটডাউনে বিশেষ কিছু করার দরকার নেই। আপনি যদি শাটডাউনে কিছু স্ক্রিপ্ট বা এই জাতীয় জিনিস চালাতে চান তবে এটি আলাদা, তবে বেশিরভাগ প্রক্রিয়াটিতে সাধারণত শাটডাউন করার সুযোগ থাকা উচিত।
30:30

Crontab পদ্ধতির কাজ করে? উবুন্টু ১৪.০৪-তে, আমি "সিগম্যানার_মোভ_পিড_সিসঙ্কের কাছে কল ব্যর্থ হয়েছে: অবৈধ অনুরোধ" ত্রুটি ঘটে যা প্যাম হিসাবে, libpam-systemd ব্যবহারকারীর পরিবর্তন প্রক্রিয়াতে জড়িত নয়। আপনি দেখতে পাচ্ছেন /proc/self/cgroupযে এর /user/0.user/1.sessionপরিবর্তে সিকোয়েন্স রয়েছে/user/1000.user/1.session
ড্যানিয়েল অ্যাল্ডার

3

অপ্রতিযুক্ত এলএক্সসি কনটেইনারগুলি স্ব-চালু করার জবাবের জন্য যদি কেউ এই প্রশ্নোত্তরে অবিচ্ছিন্ন হয়ে পড়ে তবে আমি অবশ্যই এখানে অনেকগুলি পরীক্ষা করে দেখছি), এখানে একটি সমাধান রয়েছে যা ভালভাবে কাজ করে এবং যা আমি আমার সার্ভারে এটি কাজ করার জন্য অনুসরণ করেছি:

http://blog.Livebloodnetworks.com/?p=2118 নিকোলাস জে ইনগ্রাসেলিনো দ্বারা।

সংক্ষেপে, এটি দুটি স্ক্রিপ্ট তৈরি করা জড়িত, এবং তারা প্রতিটি অ্যাকাউন্টে লগ ইন না করে প্রতিটি তালিকাভুক্ত ব্যবহারকারীর অনিবদ্ধ পাত্রে শুরু করার জন্য LXC কে অনুমতি দেওয়ার জন্য শুরুতে একসাথে কাজ করে; অন্য কথায়, সমস্ত সিগ্রুপ ম্যাজিক অক্ষত ব্যবহারকারী হিসাবে কমান্ডটি কার্যকর করা। এসও সেরা অনুশীলনের সাথে তাল মিলিয়ে আমি এখানে এর হাড়গুলি উদ্ধৃত করব তবে এটি তার মূল নিবন্ধটি পড়ার পক্ষে উপযুক্ত।

আমাদের ব্যবহারকারীর অ্যাকাউন্টটিকে সেতুটি ব্যবহার করার অনুমতি দিন ...

echo "$USER veth lxcbr0 1024" | sudo tee -a /etc/lxc/lxc-usernet

আপস্টার্ট স্ক্রিপ্ট তৈরি /etc/init/lxc-unprivileged.confকরুন ... যোগ করা…

description "LXC Unprivileged Containers"
author "Mike Bernson <mike@mlb.org>"

start on started lxc

script
    USERS="[user]"

    for u in $USERS; do
        cgm create all lxc$u
        cgm chown all lxc$u $(id -u $u) $(id -g $u)
        lxc-autostart -L -P /home/$u/.local/share/lxc | while read line;
        do
            set -- $line
            /usr/local/bin/startunprivlxc lxc$u $u $1
            sleep $2
        done
    done
end script

আপনার ব্যবহারকারীর অ্যাকাউন্টের সাথে [ব্যবহারকারীর] প্রতিস্থাপন নিশ্চিত করুন।

ধারক শুরুর স্ক্রিপ্ট তৈরি /usr/local/bin/startunprivlxc করুন ... যোগ করার জন্য…

#!/bin/sh

cgm movepid all $1 $$
sudo -iH -u $2 -- lxc-start -n $3 -d

... এবং এটি কার্যকর করা ...

sudo chmod +x /usr/local/bin/startunprivlxc

আমি কেবল এটিই জোর দিয়ে বলতে চাই যে এটি নিরাপদে, সঠিকভাবে কাজ করছে বলে মনে হচ্ছে এবং অন্য ব্যবহারকারীর অ্যাকাউন্টে এসএসএইচ-এর মূলের প্রয়োজন নেই।

এখানে আরও সম্পর্কিত বিষয় রয়েছে (সম্পর্কিত গোটাসগুলিতে স্পর্শ করা): https://gist.github.com/julianlam/4e2bd91d8dedee21ca6f যা এটি কেন এইভাবে তা বোঝার জন্য দরকারী।



0

দুঃখিত: খুব শীঘ্রই উত্তর দেওয়া হয়েছে। Lxc-ls "আউটস্টার্ট" "" হ্যাঁ "হিসাবে দেখানো সত্ত্বেও এটি কাজ করে না।

এখানে আরও অনেক দরকারী তথ্য সহ একটি লিঙ্ক রয়েছে এবং সম্ভবত কেউ এটি ব্যবহার করতে পারে: http://www.geeklee.co.uk/unprivileged-privileged-containers-ubuntu-14-04-lxc/

আমি এই পৃষ্ঠায় অবতরণ করেছি কারণ আমার একই সমস্যা ছিল। এই থ্রেডটি পড়ার পরে, আমি বুঝতে পেরেছি যে lxc-create সাধারণত "/ var / lib / lxc /" ডিরেক্টরিতে লিখতে পারে না যদি এটি sudo দিয়ে চালানো হয় না।

আমি আশেপাশে দেখেছি এবং "un / .local / share / lxc" তে আমার অপ্রচলিত ধারকটির জন্য rootfs সনাক্ত করেছি এবং সেই ডিরেক্টরিতে কনফিগারেশনে প্রশ্নের দুটি লাইন রেখেছি।

আমি যে টেম্পলেটটি ব্যবহার করেছি সেটির দিকে তাকালাম, ক্লুটির জন্য "lxc-download", তবে আমি মনে করি যে "এলএক্সসি-ডাউনলোড" শুরু করা হলে সেই পথটি পাস হয়েছিল। বুট চলাকালীন সিস্টেমটি কীভাবে অপ্রয়োজনীয় ধারকগুলির সন্ধান করে তা আমি তাকাতে পারি নি।


0

আমি উন্নত বিচ্ছিন্নতার জন্য প্রতিটি অনিচ্ছাকৃত কনটেইনারকে একই নামী ব্যবহারকারীর সাথে চালাচ্ছি এবং আমি এটি এইভাবে করি:

#!/bin/bash

LXC_CONTAINERS="container1 container2"

for LXC_CONTAINER in $LXC_CONTAINERS; do
 su - $LXC_CONTAINER -c "lxc-start -n $LXC_CONTAINER --logfile /home/$LXC_CONTAINER/.local/share/lxc/lxc-$LXC_CONTAINER.log --logpriority DEBUG"
done

-1

ধরে নিচ্ছি (যা জিনিসগুলি স্ক্রু করার সমস্ত উপায়ের জননী), আপনি এমন ব্যবহারকারী হিসাবে লগ ইন করছেন যা অনিবদ্ধ এলএক্সসি ধারকটির "মালিকানাধীন", তারপরে নীচের কমান্ডটি আপনার সন্ধান করছে তা সম্বোধন করা উচিত ...

$ echo "lxc-start -n LXC-CONTAINER-NAME -d" >> .bashrc

আপনি যখন ব্যাশের মাধ্যমে লগ ইন করবেন এটি কেবল উপরের কমান্ডটি চালাবে। এটি এটি ধরেও নিচ্ছে যে ব্যাশ লগইন শেল। দয়া করে নামটি প্রতিস্থাপন করুন: LXC-CONTAINER-NAMEআপনি যে LXC ধারকটি শুরু করতে চান তার নাম সহ।


-1

আমি একটি ভিন্ন পদ্ধতির ব্যবহার করেছি এবং এটি কাজ করছে

1- ধারক কনফিগারেশনের ফাইলটিতে নিম্নলিখিত এন্ট্রি যুক্ত করুন

স্বতঃআপনার কনফিগ শুরু করুন

lxc.start.auto = 1 lxc.start.delay = 5

2º একই সার্ভারে ধারক ব্যবহারকারী এবং নিজের মধ্যে একটি বিশ্বাসের সম্পর্ক তৈরি করুন

userlxc @ GEST-4: sh sh ssh-keygen -t rsa পাবলিক / প্রাইভেট আরএসএ কী জুড়ি তৈরি করছে। কীটি সংরক্ষণ করার জন্য ফাইলটি প্রবেশ করান (/home/userlxc/.ssh/id_rsa): পাসফ্রেজ লিখুন (কোনও পাসফ্রেজের জন্য খালি নয়): আবার একই পাসফ্রেজ লিখুন: আপনার পরিচয়টি / home/userlxc/.ssh/id_rsa এ সংরক্ষণ করা হয়েছে। আপনার সর্বজনীন কী / home/userlxc/.ssh/id_rsa.pub এ সংরক্ষণ করা হয়েছে। মূল ফিঙ্গারপ্রিন্টটি হ'ল: c9: b4: e1: f3: bf: a3: 25: সিসি: f8: বিসি: হতে: বি 6: 80: 39: 59: 98 ইউজারল্যাক্স @ জিইএসটি-এমেন্সিয়া -4 কীটির র্যান্ডোমার্ট চিত্রটি হ'ল: + - [আরএসএ 2048] ---- + | | | | | ও | | * + | | ইএস | | = * | | = ও =। | | । + +। + +। | | oO = oo | + + ----------------- + +

userlxc @ GEST-4: $ $ বিড়াল .ssh / id_rsa.pub >>। এসএসএইচ / অনুমোদিত_কিজ ব্যবহারকারীলএক্সসি @ জিইএসটি -4: s s এলএস-এলআরটি। এসএসএইচ / অনুমোদিত_কি -আরডব্লিউ-আর-- 1 ইউজারএলএক্সসি ইউজারএলএক্সসি 404 নভেম্বর 19 17:23। এসএসএইচ / অনুমোদিত_কিগুলি

Ssh সংযোগটি পরীক্ষা করে দেখুন, আপনাকে পাসওয়ার্ড ব্যবহারকারীলএক্সসি @ জিইএসটি -4 ছাড়াই এটি ব্যবহার করতে সক্ষম হতে হবে: sh sh ssh userlxc @ লোকালহোস্ট "lxc-ls --fancy"

নাম রাষ্ট্র আইপিভি 4 আইপিভি 6 অটোস্টার্ট

এক্সটেলএক্সসিএনটি01 স্থগিত - - হ্যাঁ
ইউবিউসার 1404 ইউএসসিআরসিটিটি 01-পরীক্ষা স্থগিত - - কোনও
ইউবুসার1404 ইউএসএলএলএক্সসিএনটি01 স্থগিত - না

3- ধারক মালিকের একটি ক্রন্টব এন্ট্রি তৈরি করুন

@reboot ssh ইউজারএলএক্সসি @ লোকালহোস্ট "এলএক্সসি-অটোস্টার্ট"

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