جدول المحتويات:

بناء صورة Docker لـ Raspberry Pi: 7 خطوات
بناء صورة Docker لـ Raspberry Pi: 7 خطوات

فيديو: بناء صورة Docker لـ Raspberry Pi: 7 خطوات

فيديو: بناء صورة Docker لـ Raspberry Pi: 7 خطوات
فيديو: Dockerfile >Docker Image > Docker Container | Beginners Hands-On | Step by Step 2024, شهر نوفمبر
Anonim
بناء صورة Docker لـ Raspberry Pi
بناء صورة Docker لـ Raspberry Pi

توضح هذه التعليمات كيفية إنشاء صورة Docker لـ Raspberry Pi.

الخطوة 1: لماذا Docker؟

يمكنك استخدام Raspberry Pi (RPi) للقيام بالعديد من الأشياء ، وخادم ويب صغير ، ومساعد AI ، و Robotics … إلخ.

العديد من المشاريع التي تريد تجربتها ، لكن نقاط الألم هي:

حان وقت البناء

لا يحرص RPi على طاقة المعالجة ، ويحد محرك أقراص SD / USB من سرعة الإدخال / الإخراج. يتطلب استخدام apt install all التبعيّة ساعة ويتطلب بناء المصدر ساعات أكثر. خاصة بالنسبة للمشاريع المتعلقة بالذكاء الاصطناعي ، حان الوقت للانتظار أكثر من الوقت للمحاولة.

تعارض الإصدار

الجميع يحاول العديد من المشاريع في RPi واحد. عندما تجرب مشروعًا وترغب في التبديل إلى مشروع آخر ، قد تجد بعض فشل الإنشاء بسبب تعارض إصدار مكتبات التبعية مع المشروع السابق. توقفت بعض المكتبات عن التطور منذ بضع سنوات وتعتمد على بعض المكتبات القديمة جدًا. في المقابل ، اعتمد المشروع النشط على أحدث المكتبات. لا يمكن أن يتواجد كلا المشروعين في نفس محرك أقراص SD / USB ؟.

النسخ الاحتياطي للصور

نظرًا لأن بعض المشاريع لا يمكن أن تتواجد معًا ، ما عليك سوى شراء المزيد من محرك أقراص SD / USB للحفاظ على كل صورة مشروع تعتمد على هذه الطريقة. إذا كان المال لا يقتصر ؟. ولكنه يزيد من صعوبات إدارة الملفات / الصور ، وأحيانًا تحتاج إلى تبديل SD / USB والتمهيد عدة مرات لمعرفة ما تريد.

من الصعب المشاركة

عندما أنشأت مشروعك وترغب في مشاركة المصدر مع الأصدقاء ، فقد يحصل أصدقاؤك على خلاصة الإصدار الفاشلة. إصدار التوزيع / المكتبات قديم جدًا أو جديد جدًا ، وبناء المعلمات وبعض الحيل. تحتاج إلى استغلال الوقت لحل مشاكل بناء الآخرين ولكن لا تدعم المشروع نفسه.

نقاط الألم المذكورة أعلاه هي تجربتي في هذه السنوات القليلة. يمكن أن يساعد Docker في معظمها.

يبدأ Docker في الإنشاء من تحديد صورة أصل تم إنشاؤها مسبقًا. على سبيل المثال Debian: تبدأ jessie-slim من توزيع Debian القديم المستقر الخفيف الوزن ؛ العقدة: 10-buster-slim تبدأ من توزيع Debian للوزن الخفيف مع تثبيت Node.js 10. يمكن أن توفر الصورة التي تم إنشاؤها مسبقًا الكثير من الوقت في وميض الصورة ، والحصول على تحديث وتثبيت مكتبات معتمدة. يمكن أن يبدأ كل مشروع من إصدار مختلف لنظام التشغيل وإصدار وقت التشغيل وإصدار المكتبات. عند الانتهاء من تطوير مشروعك الخاص ، يمكنك دفع صورة Docker إلى Docker hub ومشاركتها مع الجميع. يمكنك الاحتفاظ بجميع بيانات المشروع على نفس بطاقة SD / USB (يجب نسخ احتياطي روتيني للبيانات إلى وسائط أخرى). لحفظ التخزين المحلي ، يمكنك حتى تنظيف صورة Docker عند عدم استخدامها ، في أي وقت يمكنك السحب من Docker hub مرة أخرى.

الخطوة 2: Docker Overhead

أضاف Docker طبقة افتراضية واحدة ، يمثل الحمل مصدر قلق. لم أختبر الكثير حول Docker. تدعي معظم النتائج التي تم بحثها في Google أن النفقات العامة منخفضة للغاية ووجدت هذا المستند حول بعض الأبحاث ذات الصلة:

domino.research.ibm.com/library/cyberdig.n…

الخطوة الثالثة: تثبيت Docker

ببساطة قم بتشغيل:

curl -sSL https://get.docker.com | ش

المرجع:

www.raspberrypi.org/blog/docker-comes-to-…

docs.docker.com/get-started/

الخطوة 4: بناء صورة عامل ميناء

يرجى الاطلاع على الدليل الرسمي لبناء صورة عامل ميناء:

docs.docker.com/get-started/part2/

لدي مشروعان باستخدام Docker ، قد تجد Dockerfile كمرجع:

يتطلب BanateCAD وقت تشغيل Lua وبعض مكتبات Lua الإضافية. يمكن أن يتوافق Lua 5.1 فقط مع جميع مكتبات Lua المطلوبة ولكنه نتاج عام 2006. أحدث توزيعة دبيان التي يمكنها بناء نجاح Lua 5.1 هي Jessie (الإصدار الذي يسبق مستقر دبيان القديم الحالي). لذلك قمت ببناء صورة Docker لبيئة Lua 5.1 لتشغيلها

github.com/moononournation/BanateCAD/tree/…

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

github.com/moononournation/face-aware-phot…

الخطوة 5: التطوير ، بناء السرعة مقابل حجم الصورة

تطوير بناء السرعة مقابل حجم الصورة
تطوير بناء السرعة مقابل حجم الصورة
تطوير بناء السرعة مقابل حجم الصورة
تطوير بناء السرعة مقابل حجم الصورة

ربما وجدت أن مشروع OSD الخاص بي يحتوي على نسختين من Dockfile:

github.com/moononournation/face-aware-phot…

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

في المقابل ، سأجمع جميع أوامر RUN في واحد قبل الإصدار. يمكن أن تقلل الطبقة الأقل حجم صورة Docker بشكل كبير. مشروع OSD الخاص بي بصور التعرف على الوجه كمثال يمكن أن يقلل حجمه بأكثر من 100 ميجابايت.

الخطوة 6: صور متعددة القوس

صور متعددة القوس
صور متعددة القوس

كما ذكرنا من قبل ، RPi ليس حريصًا على قوة المعالجة. قد لا يكون استخدام صورة RPi build Docker خيارًا جيدًا ، خاصةً عندما يقوم RPi الوحيد بتشغيل مشاريع أخرى.

يمكن أن يساعدك استخدام جهاز كمبيوتر x86 أيضًا في إنشاء صورة Docker ، يرجى العثور على مزيد من التفاصيل هنا:

www.docker.com/blog/multi-arch-images/

يمكن للأمرين البسيطين إنشاء صورة x86 و ARM Docker بالتوازي:

إنشاء عامل البناء - use

docker buildx build - النظام الأساسي لينكس / amd64 ، لينكس / الذراع -t moononournation / debian-imagemagick-lua-meshlab: 1.0.1 --push.

يمكن لـ Multi Arch إنشاء صورة متعددة المنصات باستخدام نفس علامة صورة Docker ، بحيث يمكن تشغيل مشروعك في جهاز مختلف بسلاسة. على سبيل المثال

docker run -it moononournation / debian-imagemagick-lua-meshlab: 1.0.1

بغض النظر عن قيامك بتشغيل الأمر أعلاه على RPi أو كمبيوتر x86 الخاص بك ، يمكنك الحصول على بيئة تشغيل Lua.

الخطوة 7: Happy RPi

يمكنك الآن تطوير ومشاركة مشروع RPi الخاص بك بسهولة أكبر!

موصى به: