فهرست مطالب:
- مرحله 1: چرا داکر؟
- مرحله 2: Docker Overhead
- مرحله 3: Docker را نصب کنید
- مرحله 4: ساختن تصویر Docker
- مرحله 5: توسعه سرعت ساخت در مقابل اندازه تصویر
- مرحله 6: تصاویر چند طاق
- مرحله 7: RPi مبارک
تصویری: ساخت Docker Image برای Raspberry Pi: 7 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:52
این دستورالعمل ها نحوه ایجاد Docker Image برای Raspberry Pi را نشان می دهد.
مرحله 1: چرا داکر؟
شما می توانید از Raspberry Pi (RPi) برای انجام کارهای مختلف ، وب سرور کوچک ، دستیار هوش مصنوعی ، Robotics و غیره استفاده کنید.
بسیاری از پروژه ها را می خواهید امتحان کنید ، اما نقاط ضعف آنها عبارتند از:
زمان ساختن
RPi تمایلی به قدرت پردازشی ندارد و درایو SD/USB سرعت IO را محدود می کند. استفاده از بسته apt install all وابستگی به یک ساعت زمان نیاز دارد و ایجاد منبع به ساعات بیشتری نیاز دارد. به ویژه برای پروژه های مرتبط با هوش مصنوعی ، زمان انتظار بیشتر از زمان برای تلاش است.
درگیری نسخه
همه پروژه های زیادی را در یک RPi امتحان می کنند. وقتی پروژه ای را امتحان کرده اید و می خواهید به پروژه دیگری بروید ، ممکن است برخی از خرابی های ایجاد شده ناشی از تضاد نسخه کتابخانه های وابستگی با پروژه قبلی را پیدا کنید. برخی از کتابخانه ها چند سال پیش توسعه خود را متوقف کرده و به برخی از کتابخانه های قدیمی وابسته هستند. در مقابل ، پروژه فعال به آخرین کتابخانه ها بستگی دارد. آیا هر دو پروژه نمی توانند در یک درایو SD/USB همزمان وجود داشته باشند ؟.
پشتیبان گیری از تصویر
از آنجا که برخی از پروژه ها نمی توانند همزمان وجود داشته باشند ، به سادگی خرید درایو SD/USB بیشتر برای وابسته نگه داشتن هر تصویر پروژه یک راه است. اگر پول محدود نیست ؟. اما مشکلات مدیریت فایل/تصویر را افزایش می دهد ، گاهی اوقات شما نیاز به تعویض SD/USB دارید و بارها بوت می کنید تا بدانید که چه می خواهید.
به اشتراک گذاری سخت است
وقتی پروژه خود را ساختید و می خواهید منبع را با دوستان خود به اشتراک بگذارید ، دوستان شما ممکن است بازخورد خراب ساخت را پس بگیرند. نسخه توزیع/کتابخانه ها بسیار قدیمی یا بسیار جدید ، پارامترهای ساختاری و برخی ترفندها. شما باید از زمان برای حل مشکلات دیگران استفاده کنید اما از خود پروژه پشتیبانی نکنید.
نقاط درد فوق تجربه من در این چند سال است. داکر می تواند بیشتر آن را کمک کند.
Docker ساخت را با انتخاب تصویر از پیش ساخته والد شروع می کند. به عنوان مثال. debian: شروع jessie-slim از یک توزیع سبک وزن قدیمی پایدار Debian. گره: شروع 10 باریک و باریک از توزیع وزن سبک دبیان با نصب Node.js 10. تصویر از پیش ساخته شده می تواند زمان زیادی را برای فلش تصویر ، دریافت به روزرسانی و نصب کتابخانه های وابسته ذخیره کند. هر پروژه می تواند از نسخه سیستم عامل مختلف ، نسخه زمان اجرا و نسخه کتابخانه ها شروع شود. پس از اتمام توسعه پروژه خود ، می توانید تصویر Docker را به مرکز docker منتقل کرده و برای همه به اشتراک بگذارید. می توانید همه داده های پروژه را در یک SD/USB نگه دارید (داده ها باید به طور معمول از سایر رسانه ها پشتیبان تهیه کنند). برای صرفه جویی در ذخیره سازی محلی ، حتی می توانید در صورت عدم استفاده از تصویر Docker ، آن را پاک کنید ، در هر زمان که بخواهید دوباره از Docker hub خارج شوید.
مرحله 2: Docker Overhead
داکر یک لایه مجازی سازی اضافه کرد ، سربار نگران کننده است. من زیاد در مورد سربار Docker آزمایش نکرده ام. اکثر نتایج گوگل سربار بسیار کمی را ادعا می کنند و من این سند را در مورد برخی تحقیقات مرتبط پیدا کردم:
domino.research.ibm.com/library/cyberdig.n…
مرحله 3: Docker را نصب کنید
به سادگی اجرا کنید:
curl -sSL https://get.docker.com | sh
مرجع.:
www.raspberrypi.org/blog/docker-comes-to-…
docs.docker.com/get-started/
مرحله 4: ساختن تصویر Docker
لطفاً راهنمای رسمی در مورد ساختن تصویر docker را بیابید:
docs.docker.com/get-started/part2/
من 2 پروژه با استفاده از Docker دارم ، ممکن است Dockerfile را به عنوان مرجع پیدا کنید:
BanateCAD به زمان اجرای Lua و برخی از کتابخانه های Lua نیاز دارد. فقط Lua 5.1 می تواند با همه کتابخانه های Lua مورد نیاز سازگار باشد اما محصول 2006 است. آخرین توزیع Debian که می تواند موفقیت Lua 5.1 را ایجاد کند Jessie است (نسخه قبل از پایدار قدیمی Debian قدیمی). بنابراین من یک محیط Lua 5.1 Docker Image برای اجرای آن ساختم
github.com/moononournation/BanateCAD/tree/…
OpenCV یک پروژه فعال در حال توسعه است ، کد منبع به آخرین کتابخانه ها و کامپایلر بستگی دارد. بنابراین احتمال ساختن ناموفق ، امضای روش کتابخانه ها ، نسخه کامپایلر ، تعارض وابستگی بسیار زیاد است … من می خواهم از opencv4nodejs برای ساختن یک برنامه ساده و نیازی به آخرین ویژگی ها استفاده نکنم. بنابراین وقتی راهی برای ایجاد موفقیت در opencv4nodejs پیدا کردم ، می خواهم آن را در Docker Image ثابت کرده و برنامه نویسی برنامه واقعی خود را انجام دهم
github.com/moononournation/face-aware-phot…
مرحله 5: توسعه سرعت ساخت در مقابل اندازه تصویر
ممکن است متوجه شوید که پروژه face-aware-photo-osd من دارای 2 نسخه Dockfile است:
github.com/moononournation/face-aware-phot…
در حین توسعه ، من فرمان تقسیم RUN را تا آنجا که ممکن است دوست دارم و به احتمال زیاد دستور RUN را به آخرین مرحله تغییر می دهم. بنابراین برای هر ساختاری برای تغییر توسعه ، می توانم تا حد امکان از لایه ساخته شده قبلی استفاده کنم و سرعت ساخت زیادی را ذخیره کنم.
در مقابل ، من تمام دستورات RUN را قبل از انتشار در یک دستور ترکیب می کنم. لایه کمتر می تواند اندازه Docker Image را بسیار کاهش دهد. پروژه face-aware-photo-osd من به عنوان مثال می تواند بیش از 100 مگابایت حجم را کاهش دهد.
مرحله 6: تصاویر چند طاق
همانطور که قبلاً نیز گفته شد ، RPi تمایلی به قدرت پردازشی ندارد. استفاده از RPi build Docker image ممکن است انتخاب خوبی نباشد ، مخصوصاً وقتی تنها RPi شما پروژه های دیگری را اجرا می کند.
استفاده از رایانه x86 همچنین می تواند به شما در ساخت Docker Image کمک کند ، لطفاً جزئیات بیشتر را در اینجا بیابید:
www.docker.com/blog/multi-arch-images/
2 دستور ساده می تواند x86 و ARM Docker Image را به صورت موازی ایجاد کند:
docker buildx create --use
docker buildx build --platform linux/amd64، linux/arm -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: RPi مبارک
اکنون می توانید پروژه RPi خود را به راحتی توسعه داده و به اشتراک بگذارید!
توصیه شده:
Motion Triggered Image Image و Email: 6 مرحله
Motion Triggered Image Capture and Email: ما بر اساس پروژه های ESP32-CAM قبلی کار می کنیم و یک سیستم ضبط تصویر با حرکت ایجاد می کنیم که ایمیلی را با تصویر به عنوان پیوست ارسال می کند. این بیلد از برد ESP32-CAM به همراه ماژول سنسور PIR که بر اساس AM312 استفاده شده است ، استفاده می کند
نحوه ساخت هواپیمای بدون سرنشین با استفاده از Arduino UNO - ساخت کوادکوپتر با استفاده از میکروکنترلر: 8 مرحله (همراه با تصاویر)
نحوه ساخت هواپیمای بدون سرنشین با استفاده از Arduino UNO | ساخت کوادکوپتر با استفاده از میکروکنترلر: مقدمه دیدن کانال یوتیوب من یک پهپاد یک ابزار (محصول) بسیار گران قیمت برای خرید است. در این پست من قصد دارم در مورد اینکه چگونه آن را با قیمت ارزان تهیه کنم بحث کنم؟ و چگونه می توانید چنین چیزی را با قیمت ارزان تهیه کنید … خوب در هند همه مواد (موتورها ، ESC ها
ساخت آداپتور بلوتوث Pt.2 (ساخت بلندگوی سازگار): 16 مرحله
ساخت آداپتور بلوتوث Pt.2 (ساخت بلندگوی سازگار): در این قسمت آموزشی نحوه استفاده از آداپتور بلوتوث خود را برای سازگاری بلندگوی قدیمی با بلوتوث به شما نشان خواهم داد.*اگر اولین دستورالعمل من در زمینه & quot؛ ساختن را نخوانده اید؟ یک آداپتور بلوتوث & quot؛ پیشنهاد می کنم قبل از ادامه این کار را انجام دهید.C
ساخت ربات های کوچک: ساخت یک روبات میکروسومو مکعبی کوچک و کوچکتر: 5 مرحله (همراه با تصاویر)
ساخت ربات های کوچک: ساخت یک روبات میکرو سومو مکعبی کوچک و کوچکتر: در اینجا جزئیاتی در مورد ساخت ربات ها و مدارهای کوچک آورده شده است. این دستورالعمل همچنین برخی نکات و تکنیک های اساسی را که در ساخت ربات ها با هر اندازه مفید است ، پوشش می دهد. برای من ، یکی از چالش های بزرگ در زمینه الکترونیک این است که ببینیم چقدر کوچک است
نحوه ساخت جعبه بلندگوی گیتار یا ساخت دو دستگاه برای استریو: 17 مرحله (همراه با تصاویر)
نحوه ساخت جعبه بلندگوی گیتار یا ساختن دو دستگاه برای استریو: من می خواستم یک بلندگوی گیتار جدید با آمپول لوله ای که می سازم همراه شود. بلندگو در مغازه من بیرون می ماند ، بنابراین لازم نیست چیز خاصی باشد. روکش تولکس ممکن است خیلی راحت آسیب ببیند ، بنابراین من بعد از یک ماسه سبک ، قسمت خارجی را با رنگ سیاه اسپری کردم