groot@galaxy:/var/discourse$ sudo ./launcher run app whoami
إذا كان الموقع قيد التشغيل، فإن الأمر أعلاه لن يدخل إلى الموقع ويبدأ bash لتنفيذ أمر whoami، بل سيقوم بتشغيل حاوية جديدة مبنية على آخر صورة تم إعدادها (bootstrapped) ثم تنفيذ الأمر.
بمعنى آخر، إذا أردت استخدام launcher للتعرف على موقع حي يعمل داخل حاوية، فيجب أن تستخدم launcher enter بدلاً من launcher run.
نعم، أعتقد أن العديد من مسؤولي أنظمة Discourse يستخدمون:
./launcher enter <container_name>
… للدخول إلى الحاوية النشطة والتحقق من حالتها (أو تنفيذ مهام) داخلها.
ومع ذلك، تذكر أنه يمكنك فعل “ما يبدو أنك ترغب في فعله” مباشرة باستخدام Docker (وبسهولة). لا توجد حاجة لاستخدام سكريبت وسيط للحصول على هذه المعلومات داخل حاوية نشطة:
# docker exec -it app whoami
root
قد تجد هذه الرابطة مفيدة فيما يتعلق ببنية أمر docker exec:
كانت تلك إجابة رائعة، وأنا ممتن جدًا لها لأنها منحتني نظرة ثاقفة حول كيفية تفكير مسؤولي أنظمة Docker الآخرين فيما هو مهم، وكيفية الحصول على معلومات ذلك بسرعة. ومع ذلك، فإن أوامر Docker هي صديق قديم لي، وما أردته حقًا كان مجرد إجابة بنعم أو لا على
هل فهمت هذا بشكل صحيح؟ هل لا يستخدم launcher run حاوية قيد التشغيل حاليًا؟
قضيت بضع ساعات في يوم آخر في تحليل أثر bash لأمر launcher run وكنت أرغب في التأكد من صحة تحليلي. لم أتوقع أبدًا أن يبدأ launcher run حاوية جديدة تمامًا فقط لتشغيل أمر واحد مثل whoami. والأكثر رعبًا هو أنه إذا اعتقد شخص ما أن الأمر سيعمل ضد الحاوية قيد التشغيل حاليًا ويعطيه ملاحظات حول الحاوية التي تشغل الموقع المباشر، فبدلاً من ذلك سيعيد معلومات حول حاوية مختلفة.
أتفق تمامًا مع أن الطريقة التي تستخدمها مع أوامر Docker هي الطريقة التي كنت سأفعلها بها، لكنني أتفق أيضًا أنه ما لم تكن تعرف الفرق بين $ و #، فيجب أن تبتعد جدًا عن أوامر Docker وتضع ثقتك في launcher.
الآن بعد أن عرفت أنك تحب استخدام الأسئلة مع سؤال مساعد كذريعة للإشادة بالأشياء التي تجدها رائعة، سأحاول إضافة هذه الأسئلة سرًا بين الحين والآخر.
نعم، أنا أستخدم docker run أيضًا (ومع ذلك، لا أستخدم launcher run)؛ لكنني لم أجد سببًا حقيقيًا لتشغيل docker run وإضافة أمر shell بعد أمر run، لأنه كما ورد في ردي، أنا دائمًا أستخدم docker exec.
آسف لأنك وجدت ردي حول سبب استخدامي لـ docker exec مجرد “ذريعة للتحدث عن أشياء”. أؤكد لك أنني مشغول حقًا بالعديد من المشاريع ولا أحتاج إلى ذرائع للتحدث عن أشياء، وكنت أحاول فقط مساعدتك أنت في إنجاز مهمتك لأنني لا أستخدم launcher run لتشغيل أوامر shell في حاوية Discourse، بل أستخدم docker exec فقط كما ورد في ردي؛ محاولًا مساعدتك.
حظًا موفقًا في مهام إدارة أنظمة Discourse المستقبلية!
السبب في أنني أسأل تحديدًا عن launcher run هو أنني أقوم بإنشاء دليل إجراءات قياسية (SOP) لبعض مسؤولي Discourse الآخرين بينما نستكشف إمكانية الاستضافة الذاتية، وقد احتجت إلى فهم كل أمر من أوامر launcher بالتفصيل لتوثيقه. حاليًا، تذكر ملاحظات الإجراءات القياسية أن استخدام launcher run سيؤدي إلى إنشاء حاوية جديدة، لذا تحذر من استخدام launcher run.
أعتقد أنك محق في أن ./launcher run يقوم بتشغيل حاوية جديدة وتنفيذ الأمر فيها. إذا كنت تريد تنفيذ الأمر في الحاوية الحالية، فيجب عليك القيام بذلك باستخدام docker كما تمت مناقشته.
لو لم يكن ./launcher يتصرف بهذه الطريقة، لما كان بإمكانه العمل في حال عدم وجود حاوية موجودة مسبقًا.