كيف يمكنني تشغيل نظام تشغيل كامل في حاوية عامل ميناء, دون تحديد أمر?

أنا أتابع كوريوس دوكر الوثائق ويذكر بدء الحاويات بأوامر مثل:

docker run someImageName /bin/somebinary

أين someImageName هي صورة. عندما/بن / سومبيناري مخارج ، فإن الصورة لن تكون قيد التشغيل.

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

هذا يبدو وكأنه الشيء الأكثر شيوعا أي شخص يريد من أي وقت مضى للقيام مع عامل الميناء، ولكن في محاولة لتشغيل صورة دون أمر يعود:

2014/02/05 14:49:19 Error: create: No command specified

كيف يمكنني بدء حاوية عامل ميناء وتشغيل نظام تشغيل كامل ، بدلا من تحديد أمر?

كما هو موثق هنا ، يمكنك ببساطة تشغيل /sbin/init كما الأمر تماما مثل أي تمهيد يونكس أخرى من مستخدم واحد إلى وضع متعدد المستخدمين.

https://stackoverflow.com/questions/19332662/start-full-container-in-docker

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

وأود أن أقول بيت القصيد من عامل الميناء هو جعل حاويات التطبيق سهلة ، بحيث يكون لديك فقط لتكوين التطبيق ، وليس نظام التشغيل كله.

عامل الميناء هو نظام لإدارة ونشر التطبيق حاويات ، لا نظام التشغيل حاويات. يبدو كما لو كنت الخلط بين تشغيل حاوية عامل الميناء مع تمهيد نظام التشغيل.

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

إذا كنت تبحث فقط عن كيفية تحديد افتراضي CMD و ENTRYPOINT للحاويات الخاصة بك ، يمكنك القيام بذلك في وقت البناء باستخدام دوكيرفيل.

لتشغيل نظام تشغيل كامل في حاوية ، قم بإنشاء ملف الإرساء التالي:

FROM fedora:25CMD /sbin/init

ثم بناء وبدء الحاوية وإدخال قذيفة داخله لاستكشاف الخدمات التي تعمل داخله:

docker build -t os .docker run -d --privileged --name os osdocker exec -it os bash

خدمات كاملة داخل الحاوية. جميلة.

docker pull ubuntu

مجرد تشغيل من نفس الصورة عدة مرات حسب الحاجة. سيتم إنشاء حاويات جديدة ويمكن بعد ذلك أن تبدأ وتوقف كل واحد حفظ التكوين الخاص بها. لراحتك سيكون من الأفضل أن تعطي كل من الحاويات الخاصة بك اسما مع "name اسم".

واو:

docker run --name MyContainer1 <ubuntu image>docker run --name MyContainer2 <ubuntu image>docker run --name MyContainer3 <ubuntu image>

هذا كل شيء.

$ docker psCONTAINER ID        IMAGE            CREATED          STATUS               NAMESa7e789711e62        67759a80360c   12 hours ago     Up 2 minutes         MyContainer187ae9c5c3f84        67759a80360c   12 hours ago     Up About a minute    MyContainer2c1524520d864        67759a80360c   12 hours ago     Up About a minute    MyContainer3

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

docker start MyContainer1

للحصول على الحاوية وتفعل ما تريد القيام به:

docker exec -it MyContainer1 bash

هذه نسخة مكررة من هذا السؤال lxc - Start full container in Docker? - Stack Overflow

@فريدثيماجيكوندردوغ ليس تماما ، على الرغم من أن الجواب هو نفسه.