תוכן עניינים:

בנה תמונת Docker ל- Raspberry Pi: 7 שלבים
בנה תמונת Docker ל- Raspberry Pi: 7 שלבים

וִידֵאוֹ: בנה תמונת Docker ל- Raspberry Pi: 7 שלבים

וִידֵאוֹ: בנה תמונת Docker ל- Raspberry Pi: 7 שלבים
וִידֵאוֹ: הרפתקאות בבש - נמר - PiHole (חוסם פרסום) - נטדאטה 2024, נוֹבֶמבֶּר
Anonim
בנה תמונת Docker עבור Raspberry Pi
בנה תמונת Docker עבור Raspberry Pi

מדריכים אלה מראים כיצד לבנות תמונת Docker עבור Raspberry Pi.

שלב 1: למה Docker?

אתה יכול להשתמש ב- Raspberry Pi (RPi) לעשות הרבה דברים, שרת אינטרנט זעיר, עוזר AI, רובוטיקה … וכו '.

פרויקטים רבים שאתה רוצה לנסות, אך נקודות הכאב הן:

זמן לבנות

RPi לא להוט על כוח עיבוד, וכונן ה- SD/USB הגביל את מהירות ה- IO. השתמש בהתקנת apt להתקין את כל חבילת התלות דורש שעה ובניית המקור דורשת יותר שעות. במיוחד לפרויקטים הקשורים ל- AI, הזמן לחכות יותר מהזמן כדי לנסות.

סכסוך גירסאות

כולם מנסים פרויקטים רבים ב- RPi אחד. כאשר ניסית פרויקט וברצונך לעבור לפרויקט אחר, ייתכן שתגלה כישלון בנייה הנגרם כתוצאה מהעימות בין גירסאות ספריות התלות לפרויקט הקודם. חלק מהספריות מפסיקות להתפתח לפני מספר שנים ותלויות בכמה ספריות ישנות מאוד. לעומת זאת, פרויקט פעיל היה תלוי בספריות האחרונות. שני הפרויקטים אינם יכולים להתקיים במקביל באותו כונן SD/USB ?.

גיבוי תמונות

מכיוון שפרוייקטים מסוימים אינם יכולים להתקיים במקביל, פשוט קנה יותר כונן SD/USB כדי לשמור על תמונת כל פרוייקט היא דרך. אם הכסף אינו מוגבל?. אבל זה מגביר את הקשיים בניהול קבצים/תמונות, לפעמים אתה צריך להחליף SD/USB ולאתחל הרבה פעמים כדי לברר מה אתה רוצה.

קשה לשתף

כאשר בנית את הפרויקט שלך וברצונך לשתף את המקור לחברים, החברים שלך עשויים לקבל את הפיד הכושל בחזרה. גרסת הפצה/ספריות ישנה מדי או חדשה מדי, בניית פרמטרים וכמה טריקים. אתה צריך לנצל את הזמן כדי לפתור אחרים לבנות בעיות אך לא לתמוך בפרויקט עצמו.

נקודות הכאב לעיל הן הניסיון שלי בשנים האחרונות. Docker יכול לעזור ברובו.

Docker מתחיל לבנות מבחירת תמונת אב מובנית מראש. לְמָשָׁל. debian: jessie-slim ההתחלה מהפצה ישנה ויציבה של דביאן במשקל קל; צומת: 10-buster-slim-start החלוקה הקלה של Debian עם מותקן Node.js 10. התמונה הבונה מראש יכולה לחסוך זמן רב להבזק תמונה, לקבל עדכון ולהתקין ספריות תלויות. כל פרוייקט יכול להתחיל מגירסת מערכת הפעלה, גירסת זמן ריצה וגרסת ספריות. לאחר שתסיים לפתח פרויקט משלך, תוכל לדחוף את תמונת ה- Docker לרכזת העגינה ולשתף את כולם. אתה יכול לשמור את כל נתוני הפרויקט באותו SD/USB (הנתונים צריכים לגבות באופן שגרתי למדיה אחרת). לשמירת אחסון מקומי, תוכל אפילו לנקות את תמונת ה- Docker כאשר לא משתמשים בה, בכל עת שתוכל למשוך שוב מרכזת Docker.

שלב 2: תקורה של Docker

Docker הוסיף שכבה וירטואלית אחת, התקורה היא דאגה. לא בדקתי יותר מדי על תקורה של Docker. רוב התוצאות בגוגל טוענות לתקורה נמוכה מאוד ומצאתי מסמך זה על כמה מחקרים קשורים:

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

שלב 3: התקן את Docker

פשוט רץ:

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

הפניה:

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

docs.docker.com/get-started/

שלב 4: בניית תמונת Docker

אנא מצא את המדריך הרשמי בנושא תמונת עגינה:

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

יש לי 2 פרויקטים המשתמשים ב- Docker, ייתכן שתמצא את ה- Dockerfile כהפניה:

BanateCAD דורש זמן ריצה של Lua וכמה ספריות Lua נוספות. רק Lua 5.1 יכול להתאים לכל ספריות Lua הנדרשות, אך הוא תוצר של 2006. ההפצה האחרונה של דביאן שיכולה לבנות הצלחה של Lua 5.1 היא ג'סי (הגרסה לפני האורווה הישנה של דביאן הנוכחית). אז בניתי תמונת Docker סביבת Lua 5.1 כדי להריץ אותה

github.com/moononournation/BanateCAD/tree/…

OpenCV הוא פרויקט המתפתח באופן פעיל, קוד המקור תלוי בספריות ובמהדר. אז יש סיכוי גבוה מאוד לבנות חתימה כושלת של ספריות, גרסת מהדר, התנגשות תלות … הייתי רוצה להשתמש ב- opencv4nodejs כדי ליצור אפליקציה פשוטה ואינני נדרשת לתכונות העדכניות ביותר. אז כשמצאתי דרך לבנות הצלחה של opencv4nodejs, הייתי רוצה להקפיא אותה לתמונת Docker ולעשות את קידוד היישומים שלי בפועל

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

שלב 5: פיתוח בניית מהירות לעומת גודל התמונה

פיתוח מהירות בנייה לעומת גודל התמונה
פיתוח מהירות בנייה לעומת גודל התמונה
פיתוח מהירות בנייה לעומת גודל התמונה
פיתוח מהירות בנייה לעומת גודל התמונה

יתכן שתמצא שלי לפרויקט המודע-פנים-צילום- osd יש 2 גרסאות של Dockfile:

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

בזמן הפיתוח, אני אוהב את הפקודה RUN לפצל כמה שיותר קטן ומסדר את הסיכוי הגבוה ביותר לשנות את הפקודה RUN לשלב האחרון. אז עבור כל בנייה לשינוי פיתוח, אני יכול לנצל את השכבה הבנויה הקודמת ככל האפשר ולחסוך מהירות בנייה רבה.

לעומת זאת, אשלב את כל פקודות ה- RUN באחת לפני השחרור. שכבה פחותה יכולה להקטין במידה רבה את גודל תמונת Docker. הפרויקט שלי המודע-צילום- osd כדוגמה הוא יכול לצמצם יותר מ -100 מגה בייט.

שלב 6: תמונות מרובות קשת

תמונות מרובות קשת
תמונות מרובות קשת

כפי שצוין קודם לכן, RPi אינו מעוניין בכוח עיבוד. ייתכן שתמונת Docker build של RPi לא תהיה בחירה טובה, במיוחד כאשר ה- RPi היחיד שלך מפעיל פרויקטים נוספים.

שימוש במחשב x86 יכול גם לעזור לך לבנות את תמונת הדוקר, אנא מצא פרטים נוספים כאן:

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

פקודות 2 פשוטות יכולות לבנות את תמונת x86 ו- ARM Docker במקביל:

docker buildx ליצור -שימוש

docker buildx build-פלטפורמת 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 שלך ביתר קלות!

מוּמלָץ: