فهرست مطالب:

ساخت Docker Image برای Raspberry Pi: 7 مرحله
ساخت Docker Image برای Raspberry Pi: 7 مرحله

تصویری: ساخت Docker Image برای Raspberry Pi: 7 مرحله

تصویری: ساخت Docker Image برای Raspberry Pi: 7 مرحله
تصویری: Complete Guide to Install Pi Node(Docker + Router Ports for Windows 10 Pro) 2024, نوامبر
Anonim
ساخت Docker Image برای Raspberry Pi
ساخت Docker Image برای Raspberry Pi

این دستورالعمل ها نحوه ایجاد 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 خود را به راحتی توسعه داده و به اشتراک بگذارید!

توصیه شده: