সিস্টেমড ডকার পাত্রে উত্তরাধিকারগত পরিবেশের পরিবর্তনশীল


9

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

আমি যখন ডকারের মধ্যে থেকে /sbin/initকমান্ড লাইনটি শুরু করি ( কমান্ড লাইন হিসাবে), ডকার সিস্টেমডে ভেরিয়েবলগুলি প্রকাশ করে তবে শিশু পরিষেবাদিতে প্রকাশ করে না । যদি আমি systemd.setenv=...সেমিডলাইনে যোগ করি তবে ভেরিয়েবলগুলি পাস হয়ে যায়। আমি একটি পরিষ্কার সমাধান সন্ধান করছি।

এর /sbin/initদ্বারা শুরু করা অ্যাপ্লিকেশনগুলিতে পাস করা পরিবেশের ভেরিয়েবলগুলি কীভাবে প্রকাশ করব ?

% docker run -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged -ti \
             -e VAR1=1 motiejus/systemd_fedora20 \
             init systemd.setenv=VAR2=2
...
Welcome to Fedora 20 (Heisenbug)!
...
[  OK  ] Reached target Multi-User System.
[root@740690365eb0 ~]# env | grep VAR
VAR2=2

আমি VAR1=1আমার কমান্ড চালানোর সময় দেখতে আশা করি।

অন্য কথায়, সিস্টেমড পাস ভেরিয়েবলগুলি শিশুদের এটির শুরু হতে পারে?

ডকফাইফিলের জন্য, গিথুব সংগ্রহশালা দেখুন

উত্তর:


9

জিজ্ঞাসিত প্রশ্নের উত্তর দেওয়ার জন্য (এটি অন্য কোথাও উত্তর দেওয়া হয় বলে মনে হয় না)

"আমি কীভাবে এনভায়রনমেন্ট ভেরিয়েবলগুলি / sbin / init এর দ্বারা প্রবর্তিত অ্যাপ্লিকেশনগুলিতে প্রেরণ করব?"

কিছুটা জ্বালাময়ী ব্যাশ এবং লিনাক্স / প্রোক ফাইল সিস্টেমের একটি অত্যন্ত কার্যকর ফাংশন প্রয়োজন:

# Import our environment variables from systemd
for e in $(tr "\000" "\n" < /proc/1/environ); do
        eval "export $e"
done

এটি পড়ছে / proc / 1 / vর্ষা, যা পরিবেশ পিআইডি 1 কে দেওয়া হয়েছে, তবে নাল দ্বারা সীমানাযুক্ত। এটি 'টিআর' ব্যবহার করে নখগুলি নতুন লাইনের সাথে প্রতিস্থাপন করতে পারে এবং তারপরে সেই রেখাগুলির উপরে পুনরাবৃত্তি করে এবং প্রেন্টেন্ড করা 'এক্সপোর্ট' দিয়ে তাদের দেখায়, যাতে তারা শিশু প্রক্রিয়াগুলিতে দৃশ্যমান হয় are

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


3
আমি বলতে চাই 'আমার এই বৈশিষ্ট্যটির প্রয়োজন নেই, আমার পরিবেশের পরিবর্তনশীল দরকার'
ড্যানিয়েল ডাই

2

এই বিবরণ অনুযায়ী, একটি সিস্টেমযুক্ত ব্যবহারকারী উদাহরণ পরিবেশের ভেরিয়েবলের উত্তরাধিকারী হয় না:

https://wiki.archlinux.org/index.php/Systemd/User#Environment_variables

অনশোট সিস্টেমড পরিষেবাটি ব্যবহারের জন্য এখানে একটি পরামর্শ রয়েছে যা "চূড়ান্ত" পরিষেবাটির জন্য একটি এনভায়রনমেন্ট ফাইল কনফিগার করে।

/programming/25396167/how-do-i-get-etcd-values-into-my-systemd-service-on-coreos


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