Talaan ng mga Nilalaman:

Bumuo ng Larawan ng Docker para sa Raspberry Pi: 7 Hakbang
Bumuo ng Larawan ng Docker para sa Raspberry Pi: 7 Hakbang

Video: Bumuo ng Larawan ng Docker para sa Raspberry Pi: 7 Hakbang

Video: Bumuo ng Larawan ng Docker para sa Raspberry Pi: 7 Hakbang
Video: Машинное обучение для разработчиков Java: переход на стек технологий ИИ. 2024, Nobyembre
Anonim
Bumuo ng Larawan ng Docker para sa Raspberry Pi
Bumuo ng Larawan ng Docker para sa Raspberry Pi

Ipinapakita ng mga tagubilin na ito kung paano bumuo ng isang Docker Image para sa Raspberry Pi.

Hakbang 1: Bakit Docker?

Maaari mong gamitin ang Raspberry Pi (RPi) na gumawa ng maraming bagay, maliliit na web server, AI assistant, Robotics… atbp.

Maraming mga proyekto ang nais mong subukan, ngunit ang mga puntos ng sakit ay:

Oras na Itatayo

Ang RPi ay hindi masigasig sa pagpoproseso ng kuryente, at nilimitahan ng SD / USB drive ang bilis ng IO. Gumamit ng apt na pag-install ng lahat ng pakete ng pagtitiwala ay nangangailangan ng isang oras at ang pagbuo ng mapagkukunan ay nangangailangan ng mas maraming oras. Lalo na para sa mga proyekto na nauugnay sa AI, oras upang maghintay nang higit pa sa oras upang subukan.

Salungatan sa Bersyon

Ang bawat isa ay sumubok ng maraming mga proyekto sa isang RPi. Kapag nasubukan mo ang isang proyekto at nais na lumipat sa isa pa, maaari kang makahanap ng isang pagkabigo sa pagbuo sanhi ng salungat na bersyon ng mga aklatan ng dependency sa nakaraang proyekto. Ang ilang mga aklatan ay huminto sa pagbuo ng ilang taon na ang nakakaraan at nakasalalay sa ilang mga napakatandang aklatan. Sa kaibahan, ang aktibong proyekto ay nakasalalay sa pinakabagong mga aklatan. Ang parehong proyekto ay hindi maaaring magkasama sa parehong SD / USB drive ?.

Pag-backup ng Larawan

Dahil ang ilang mga proyekto ay hindi maaaring magkasama, bumili lamang ng mas maraming SD / USB drive upang mapanatili ang bawat pag-asa sa imahe ng proyekto ay isang paraan. Kung ang pera ay hindi limitado ?. Ngunit pinapataas nito ang mga paghihirap ng pamamahala ng file / imahe, kung minsan ay kinakailangan mo ng pagpapalit ng SD / USB at mag-boot ng maraming beses upang malaman kung ano ang gusto mo.

Mahirap Ibahagi

Kapag itinayo mo ang iyong proyekto at nais na ibahagi ang mapagkukunan sa mga kaibigan, maaaring makuha ng iyong mga kaibigan ang nabuong nabigo na feed. Ang bersyon ng pamamahagi / aklatan ay masyadong luma o masyadong bago, mga parameter ng pagbuo at ilang mga trick. Kailangan mong ubusin ang oras upang malutas ang iba na bumuo ng mga problema ngunit hindi suportahan ang proyekto mismo.

Ang mga puntos sa sakit sa itaas ay ang aking karanasan sa ilang taon. Matutulungan ng Docker ang karamihan dito.

Magsimulang bumuo ang Docker mula sa pagpili ng isang paunang binuo na imaheng. Hal. debian: jessie-slim simula mula sa isang lumang matatag na pamamahagi ng magaan na timbang ng Debian; node: 10-buster-slim simula mula sa pamamahagi ng magaan na timbang ng Debian sa naka-install na Node.js 10. Ang naka-built na imahe ay maaaring makatipid ng maraming oras upang i-flash ang imahe, makakuha ng pag-update at pag-install ng mga nakasalalay na aklatan. Ang bawat proyekto ay maaaring magsimula mula sa iba't ibang bersyon ng OS, bersyon ng runtime at bersyon ng mga aklatan. Kapag natapos mong bumuo ng iyong sariling proyekto, maaari mong itulak ang imahe ng Docker sa docker hub at ibahagi sa lahat. Maaari mong panatilihin ang lahat ng data ng proyekto sa parehong SD / USB (ang data ay dapat na regular na pag-backup sa ibang media). Para sa pag-save ng lokal na imbakan, maaari mo ring linisin ang imahe ng Docker kapag hindi ginagamit, anumang oras maaari kang kumuha muli mula sa Docker hub.

Hakbang 2: Overck ng Docker

Nagdagdag si Docker ng isang virtualize layer, ang overhead ay isang alalahanin. Wala akong nasubukan nang labis tungkol sa overhead ng Docker. Karamihan sa resulta ng Googled na resulta ay nag-angkin ng napakababang overhead at nakita ko ang dokumentong ito tungkol sa ilang kaugnay na pananaliksik:

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

Hakbang 3: I-install ang Docker

Patakbuhin lamang:

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

Ref.:

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

docs.docker.com/get-started/

Hakbang 4: Pagbuo ng Imahe ng Docker

Mangyaring hanapin ang opisyal na gabay sa pagbuo ng imahe ng docker:

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

Mayroon akong 2 mga proyekto gamit ang Docker, maaari mong makita ang Dockerfile bilang isang sanggunian:

Nangangailangan ang BanateCAD ng Lua runtime at ilang pagdaragdag ng mga aklatan ng Lua. Ang Lua 5.1 lamang ang maaaring magkatugma sa lahat ng kinakailangang mga aklatan ng Lua ngunit ito ay produkto ng 2006. Ang pinakabagong pamamahagi ng Debian na maaaring bumuo sa tagumpay ng Lua 5.1 ay si Jessie (Ang bersyon bago ang kasalukuyang Debian old stable). Kaya't nagtayo ako ng isang Lua 5.1 na kapaligiran na Docker Image upang patakbuhin ito

github.com/moononournation/BanateCAD/tree/…

Ang OpenCV ay isang aktibong pagbubuo ng proyekto, ang source code ay nakasalalay sa pinakabagong mga aklatan at tagatala. Kaya't napakataas ng pagkakataong bumuo ng nabigo, pirma ng pamamaraan ng mga aklatan, bersyon ng tagatala, salungatan sa dependency … Nais kong gumamit ng opencv4nodejs upang makagawa ng isang simpleng app at hindi nangangailangan ng mga pinakabagong tampok. Kaya't kapag nakakita ako ng isang paraan upang mabuo ang tagumpay ng opencv4nodejs, nais kong i-freeze ito sa isang Docker Image at gawin ang aking aktwal na pag-coding ng application

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

Hakbang 5: Pagpapaunlad Bumuo ng Bilis Vs Laki ng Imahe

Pagbuo Bumuo ng Bilis Vs Sukat ng Imahe
Pagbuo Bumuo ng Bilis Vs Sukat ng Imahe
Pagbuo Bumuo ng Bilis Vs Sukat ng Imahe
Pagbuo Bumuo ng Bilis Vs Sukat ng Imahe

Maaari mong makita ang aking proyekto na may kamalayan sa larawan-osd na may 2 bersyon ng Dockfile:

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

Habang ang pag-unlad, gusto ko ang split RUN command na maliit hangga't maaari at ayusin ang pinaka-malamang na baguhin ang RUN command sa huling hakbang. Kaya para sa bawat pagbuo para sa pagbabago ng pag-unlad, maaari kong magamit ang nakaraang built layer hangga't maaari at makatipid ng bilis ng pagbuo.

Sa kaibahan, pagsamahin ko ang lahat ng mga RUN na utos sa isa bago ilabas. ang mas mababang layer ay maaaring mabawasan ang laki ng Docker Image. Ang aking proyekto na may kamalayan sa larawan-osd bilang halimbawa maaari nitong mabawasan ang higit sa 100 MB na laki.

Hakbang 6: Mga Larawan ng Multi Arch

Mga Larawan ng Multi Arch
Mga Larawan ng Multi Arch

Tulad ng nabanggit dati, ang RPi ay hindi isang masigasig sa pagpoproseso ng lakas. Gumamit ng RPi build na imahe ng Docker ay maaaring hindi isang mahusay na pagpipilian, lalo na kapag ang iyong tanging RPi ay nagpapatakbo ng isa pang mga proyekto.

Gumamit din ng x86 computer na makakatulong sa iyo na buuin ang Docker Image, mangyaring maghanap ng higit pang mga detalye dito:

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

Ang simpleng 2 utos ay maaaring bumuo ng x86 at ARM Docker Image na kahanay:

docker buildx create --use

docker buildx build --platform linux / amd64, linux / arm -t moononournation / debian-imagemagick-lua-meshlab: 1.0.1 --push.

Maaaring bumuo ang Multi Arch ng imahe ng maraming platform na may parehong tag ng imahe ng Docker, upang ang iyong proyekto ay maaaring tumakbo sa iba't ibang machine nang walang putol. hal.

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

Hindi mahalaga kung pinatakbo mo ang utos sa itaas sa RPi o iyong x86 computer, maaari kang makakuha ng isang kapaligiran sa runtime ng Lua.

Hakbang 7: Maligayang RPi

Maaari mo na ngayong paunlarin at ibahagi ang iyong proyektong RPi nang mas madali!

Inirerekumendang: