يتعلق الأمر بمشكلة فنية إلى حد ما في استخدام حاويات عامل الإرساء التي تتفاعل مع الكمبيوتر المضيف لعامل الإرساء، والتي تتعلق عمومًا باستخدام نظام الملفات المضيف داخل الحاوية.
يحدث هذا بشكل خاص في سياق البحث القابل للتكرار.
لقد قمت بتطوير أداة مساعدة مفتوحة المصدر تساعد في معالجة هذه المشكلة.
حالة الاستخدام الأولي والرئيسي لحاوية الإرساء: تطبيق مستقل يتفاعل فقط مع النظام المضيف مع بعض منافذ الشبكة.
فكر في تطبيق ويب: تحتوي حاوية الإرساء عادةً على خادم ويب وتطبيق ويب، يعمل على سبيل المثال على المنفذ 80 (داخل الحاوية). يتم بعد ذلك تشغيل الحاوية على المضيف، عن طريق ربط المنفذ الداخلي للحاوية 80 بمنفذ مضيف (على سبيل المثال 8000).
ثم يكون التفاعل الوحيد بين التطبيق الموجود في الحاوية والنظام المضيف عبر منفذ الشبكة المرتبط هذا.
تختلف الحاويات كبيئات التنفيذ تمامًا:
ولكن، من أجل استخدام بيئات التنفيذ هذه، يجب أن تتمتع هذه الحاويات بإمكانية الوصول إلى النظام المضيف، وخاصة إلى نظام ملفات المستخدم المضيف.
لنفترض أنك قمت بوضع حاوية IDE، على سبيل المثال. رستوديو.
تم تثبيت Rstudio الخاص بك وتشغيله داخل حاوية عامل الإرساء، ولكنه يحتاج إلى قراءة الملفات وتحريرها في مجلد المشروع الخاص بك.
لذلك يمكنك ربط مجلد المشروع الخاص بك (في نظام الملفات المضيف) باستخدام خيار docker run --volume.
ومن ثم يمكن الوصول إلى ملفاتك من داخل حاوية عامل الإرساء.
1001، ولنفترض أن المستخدم الذي يمتلك عملية Rsudio في الحاوية هو إما 0 (الجذر)، أو 1002.
إذا كان مستخدم الحاوية هوالجذر، فلن يواجه مشكلة في قراءة ملفاتك.
ولكن بمجرد قيامك بتحرير بعض الملفات الموجودة، وإنشاء ملفات جديدة (على سبيل المثال، pdf، html)، ستنتمي هذه الملفات إلى الجذر
أيضًا على نظام الملفات المضيف!.
وهذا يعني أن المستخدم المضيف المحلي الخاص بك لن يتمكن من استخدامها أو حذفها، لأنها تنتمي إلى الجذر.
1002، فقد لا يتمكن Rstudio من قراءة ملفاتك أو تحريرها أو إنتاج ملفات جديدة.
حتى لو كان ذلك ممكنًا، من خلال ضبط بعض الأذونات المتساهلة للغاية، فقد لا يتمكن المستخدم المضيف المحلي من استخدامها.
حل مشكلة مالك الملف الجزء 1: خيار docker run --user
1001)، لا يمكننا التهيئة المسبقة
معرف المستخدم لمستخدم حاوية عامل الإرساء.
يوفر
docker run الآن خيار --user الذي يمكّن من إنشاء مستخدم زائف مع بعض معرف المستخدم المقدم
في وقت التشغيل. على سبيل المثال، سيقوم docker run --user 1001 ... بإنشاء حاوية عامل إرساء تعمل بالعمليات
ينتمي إلى مستخدم بمعرف المستخدم
1001.
إليك بعض المراوغات حول هذا المستخدم الذي تم إنشاؤه ديناميكيًا:
ما نوده حقًا، هو التكوين المسبق لمستخدم حاوية عامل الإرساء، والقدرة على تغيير
معرف المستخدم الخاص به ديناميكيًا في وقت التشغيل...
لإصلاح مشكلة معرف المستخدم التي أثرتها للتو. دعنا نرى كيفية استخدامه: قمت بتعيينه باعتباره عامل الإرساء ENTRYPOINT، مع تحديد المستخدم الذي يجب استخدامه وتعديل
معرف المستخدم الخاص به ديناميكيًا:
نقطة الدخول ["/usr/local/bin/docker_userid_fixer"،"user1"]
ENTRYPOINT ["/usr/local/bin/docker_userid_fixer","user1"]
المستخدم
إما أن يتطابق معرف المستخدم
إذا لم تكن بحاجة إلى إصلاح معرف مستخدم الحاوية الخاصة بك، فما عليك سوى استخدام عامل الإرساء بالطريقة المعتادة (بدون خيار --user)
ولكن الأمر يتلخص في:
جوهر التنفيذ هو
لـ docker_userid_fixer القابل للتنفيذ في الحاوية.
نحتاج إلى أذونات الجذر لتغيير معرف المستخدم، وهذا الإعداد يمكّن هذا التنفيذ المميز فقط لـ
برنامج docker_userid_fixer، وذلك لفترة قصيرة جدًا.
بمجرد تعديل معرف المستخدم إذا لزم الأمر، سيقوم docker_userid_fixer بتبديل العملية الرئيسية
إذا كنت مهتمًا بهذه المواضيع (عامل الإرساء، البحث القابل للتكرار، تطوير حزمة R، الخوارزمية، تحسين الأداء، التوازي...) فلا تتردد في الاتصال بي لمناقشة فرص العمل والأعمال.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3