تشغيل سيستيمد داخل حاوية عامل الميناء (قوس لينكس)

أحاول أن أرى ما إذا كان يمكنني تشغيل سيستمد داخل حاوية عامل الميناء (الذي يشغل قوس لينكس في الحاوية).

أبدأ عامل الميناء مع جميع القدرات ، وربط جبل في مجموعات:

docker run -it --rm --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro ..

ومع ذلك ، إذا حاولت تشغيل ثنائي سيستمد:

Trying to run as user instance, but the system has not been booted with systemd.

في محاولة لمعرفة كيفية إينيت الأشياء بشكل صحيح ليبدأ سيستمد.

هنا بلدي سيد بيس: د تشغيل سيستيمد داخل حاوية عامل الميناء مع أوبونتو: دي حصلت أوبونتو العمل مع سيستيمد داخل عامل الميناء

جيثب الريبو لبلدي عامل الميناء-سيستيمد الحاويات

$ docker run -it --cap-add SYS_ADMIN -v /sys/fs/cgroup:/sys/fs/cgroup:ro dockerimages/docker-systemd

الناتج:

systemd 218 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN)Detected virtualization 'docker'.Detected architecture 'x86-64'.Welcome to Ubuntu Vivid Vervet (development branch)!Set hostname to <502ec40509a5>.[  OK  ] Created slice Root Slice.[  OK  ] Created slice System Slice.         Starting Emergency Shell...[  OK  ] Started Emergency Shell.Startup finished in 5ms.Welcome to emergency mode! After logging in, type "journalctl -xb" to viewsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D totry again to boot into default mode.root@502ec40509a5:~# exit

تحديث 2021

تم تقديم الكثير من التصحيحات إلى مشاريع مختلفة مثل اتفاقيات إعادة الشراء في المنبع من قبل عامل الميناء REDHAT.To كن أكثر وضوحا بلدي فريند ديفيد والش @ ريدهات أيضا نشر الكثير عن ذلك.https://developers.redhat.com/blog/author/rhatdan/.

يتطلب تشغيل النظام بدون امتيازات إضافية

/run كما تمفس./sys/fs/cgroup قراءة/فقط./sys/fs/cgroup/systemd قراءة / كتابة./etc/machine-id يحتاج إلى احتواء أونيك ماشينيدSIGRTMIN+3 كما ستوبسينال كما سيغتيرم لن تعمل/var/log/journal إذا لم يكن موجودا فإنه سيتم الكتابة إلى الذاكرة

docker run -d \     --tmpfs /tmp \    --tmpfs /run \    -v /sys/fs/cgroup:/sys/fs/cgroup:ro \    --stop-signal SIGRTMIN+3 \    httpd /sbin/init

ملاحظة: يمكن إسقاط علامة التوقف عند احتواء ملف الإرساء الخاص بك STOPSIGNAL SIGRTMIN+3

انظر المشاركة الكاملة. https://developers.redhat.com/blog/2016/09/13/running-systemd-in-a-non-privileged-container/

ملاحظة: اليوم مع بودمان هذا سيكون أكثر بساطة قراءة حول هذا الموضوع هنا:https://developers.redhat.com/blog/2019/04/24/how-to-run-systemd-in-a-container/

لتشغيل سيستيمد في حاوية عامل الميناء، و المضيف يجب أيضا تشغيل النظام سيستيمد. هذا يعني أنك لا يمكن استخدام أوبونتو & لتر; 16.04 كمضيف.

حاليا سيستيمد لا يعمل بشكل صحيح داخل حاوية عامل الميناء ، وذلك بسبب مجموعة كاملة من الأسباب ، أي عدم وجود الامتيازات الصحيحة. يمكنك أن تقرأ على ذلك في مجموعة متنوعة من القضايا جيثب على مشروع عامل الميناء مثل تشغيل سيستيمد داخل قفص الاتهام قوس الحاويات معلقة أو سيغفولتس والقضايا ذات الصلة فيما يتعلق بتهيئة/عملية الرصد. (أود ربط المزيد من المشكلات هنا ، لكن لا يمكنني ذلك لأنني على ما يبدو ليس لدي سمعة كافية).

كما ترى ، هذا موضوع يتم العمل عليه حاليا وتم دمج بعض التصحيحات بالفعل لتحسين السلوك ، حتى نتمكن من توقع أن يعمل هذا قريبا جدا.

يبدو أن بعض المطورين تمكنوا بالفعل من تشغيله على أنظمة فيدورا ، كما وثقوا في مدونتهم.

اعتبارا من عام 2018 ، يعمل هذا الآن بالنسبة لي: docker run -it -e container=docker اسم صورتك /sbin/init

هذا لن تعطيك قذيفة ، ومع ذلك ، لذلك سوف تحتاج إلى تمكين أولا بعض خدمة سيستيمد (على سبيل المثال سشد) داخل الصورة إذا لم يتم ذلك بالفعل ، للقيام بأي شيء مفيد.

وجدت هذا السؤال أثناء محاولة القيام بذلك في دبيان: 8 الحاوية الرسمية.لأي شخص آخر يحاول القيام بذلك على حاوية دبيان الرسمية:8 (دبيان:جيسي) ، @إجابة فرانك من دسبيد تعمل مع تعديل طفيف كما هو موضح في وظيفة محور بوابة أقدم:

docker run -d \    -v /sys/fs/cgroup:/sys/fs/cgroup:ro \    --cap-add SYS_ADMIN \    debian:jessie  /sbin/initdocker exec -it <your-new-container-name-or-ID> bash

ثم من في الحاوية:

systemctl show-environment

هذا يعمل بشكل مثالي بالنسبة لي وبما أن هذه ليست سوى بيئة تطوير ، فإن قضية الأمن لا تهمني.

ملاحظة: الأمر/سبين / الحرف الأول يحصل / سبين / الحرف الأول لتكون عملية 1 ، وهو جزء أساسي من جعل هذا العمل.

كنت قادرا على العمل إلى الوراء من هذا: https://registry.hub.docker.com/u/codekoala/arch/

عامل الميناء 1.1 يجعل هذا أسهل كما يتم توفير مجموعات (رو) بالفعل في حاويات - ما زلت بحاجة حاليا الوصول الخاص بحيث يمكن إنشاء يتصاعد بريفاتيتمب ، ولكن على خلاف ذلك ، طالما قمت بتحديد سمد لتشغيل كما سيستيمد ثنائي - يعمل بشكل جيد.

يمكنك تشغيل سيستيمد داخل حاوية عامل الميناء. نظام التشغيل المضيف لا يهم ، على الرغم من أنك سوف تحتاج إلى تحميل حجم المضيف /سيس/فس/كغروب. حصلت عليه للعمل بعد هذا الدليل: http://developerblog.redhat.com/2014/05/05/running-systemd-within-docker-container/

هل يمكن أن تفسر لماذا تحتاج سيستم دي?

صفحة الرجل ‘سيستمد’ سيكون مكانا جيدا للبدء. جوجل أيضا ينتج العديد من المقالات حول تشغيل سيستم دي تحت عامل الميناء.