Taula de continguts:

Construeix la imatge Docker per a Raspberry Pi: 7 passos
Construeix la imatge Docker per a Raspberry Pi: 7 passos

Vídeo: Construeix la imatge Docker per a Raspberry Pi: 7 passos

Vídeo: Construeix la imatge Docker per a Raspberry Pi: 7 passos
Vídeo: Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks 2024, De novembre
Anonim
Build Docker Image per a Raspberry Pi
Build Docker Image per a Raspberry Pi

Aquest instructable mostra com construir una imatge Docker per a Raspberry Pi.

Pas 1: per què Docker?

Podeu utilitzar Raspberry Pi (RPi) per fer moltes coses, petit servidor web, assistent d’IA, robòtica … etc.

Voleu provar molts projectes, però els punts dolorosos són:

Temps per construir

El RPi no està interessat en la potència de processament i la unitat SD / USB limita la velocitat d'E / S. Utilitzar el paquet apt install all dependency requereix una hora i la creació de la font requereix més hores. Especialment per a projectes relacionats amb la intel·ligència artificial, temps per esperar més que temps per provar-ho.

Conflicte de versions

Tothom prova molts projectes en un mateix RPi. Quan hàgiu provat un projecte i vulgueu canviar a un altre, és possible que trobeu algun error de compilació causat per un conflicte de versió de les biblioteques de dependències amb el projecte anterior. Algunes biblioteques deixen de desenvolupar-se fa uns anys i depenen d’algunes biblioteques molt antigues. En canvi, el projecte actiu depenia de les darreres biblioteques. Tots dos projectes no poden coexistir a la mateixa unitat SD / USB ?.

Còpia de seguretat de la imatge

Com que alguns projectes no poden coexistir, només heu de comprar més unitat SD / USB per mantenir dependents cada imatge del projecte. Si els diners no estan limitats ?. Però augmenta les dificultats de la gestió d’arxius / imatges, de vegades cal canviar SD / USB i arrencar moltes vegades per saber què voleu.

Difícil de compartir

Quan hàgiu creat el projecte i vulgueu compartir la font amb els vostres amics, és possible que els vostres amics recuperin el feed que ha fallat. Versió de distribució / biblioteques massa antiga o massa nova, amb paràmetres de construcció i alguns trucs. Necessiteu aprofitar el temps per resoldre altres problemes de construcció, però no suporteu el projecte en si.

Els punts de dolor anteriors són la meva experiència en aquests anys. Docker pot ajudar-ne la major part.

Docker comença a construir a partir de la selecció d’una imatge pare predefinida. Per exemple. debian: jessie-slim parteix d'una antiga distribució estable de pes lleuger de Debian; node: 10-buster-slim inici des de la distribució lleugera de Debian amb Node.js 10 instal·lat. La imatge preconstruïda pot estalviar molt de temps per fer flash, obtenir actualitzacions i instal·lar biblioteques dependents. Cada projecte pot començar des de diferents versions del sistema operatiu, versió d'execució i versió de les biblioteques. Quan hàgiu acabat de desenvolupar el vostre propi projecte, podeu empènyer la imatge de Docker a hub docker i compartir-la amb tothom. Podeu mantenir totes les dades del projecte al mateix SD / USB (les dades haurien de fer una còpia de seguretat de rutina a altres suports). Per estalviar emmagatzematge local, fins i tot podeu netejar la imatge de Docker quan no la feu servir, sempre que pugueu tornar a treure-la del concentrador de Docker.

Pas 2: Docker Overhead

Docker va afegir una capa de virtualització, la sobrecàrrega és una preocupació. No he provat massa sobre la sobrecàrrega de Docker. La majoria dels resultats de Google afirmen que els costos generals són molt baixos i he trobat aquest document sobre algunes investigacions relacionades:

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

Pas 3: instal·leu Docker

Simplement executeu:

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

Ref.:

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

docs.docker.com/get-started/

Pas 4: Construir la imatge Docker

Si us plau, trobeu la guia oficial sobre la imatge docker de l'edifici:

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

Tinc 2 projectes amb Docker, és possible que trobeu el fitxer Docker com a referència:

BanateCAD requereix temps d'execució Lua i algunes biblioteques Lua addicionals. Només Lua 5.1 pot ser compatible amb totes les biblioteques Lua necessàries, però és el producte del 2006. L'última distribució de Debian que pot generar l'èxit de Lua 5.1 és Jessie (La versió anterior a l'antiga estable estable de Debian). Així que vaig crear un entorn Lua 5.1 Docker Image per executar-lo

github.com/moononournation/BanateCAD/tree/…

OpenCV és un projecte en desenvolupament actiu, el codi font depèn de les darreres biblioteques i compilador. Per tant, és molt probable que es construeixi un error, que la signatura del mètode de les biblioteques, la versió del compilador, el conflicte de dependències … M'agradaria utilitzar opencv4nodejs per crear una aplicació senzilla i no requereixen les darreres funcions. Per tant, quan vaig trobar una manera d’obtenir l’èxit d’opencv4nodejs, m’agradaria congelar-lo a Docker Image i fer la codificació de la meva aplicació real

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

Pas 5: desenvolupament de la velocitat de construcció contra la mida de la imatge

Desenvolupament Build Speed Vs Mida de la imatge
Desenvolupament Build Speed Vs Mida de la imatge
Desenvolupament Build Speed Vs Mida de la imatge
Desenvolupament Build Speed Vs Mida de la imatge

És possible que el meu projecte face-aware-photo-osd tingui dues versions de Dockfile:

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

Mentre es desenvolupa, m'agrada dividir l'ordre RUN el més petit possible i organitzar el més probable que canviï l'ordre RUN al darrer pas. Per tant, per a cada canvi de desenvolupament per a la construcció, puc utilitzar la capa de construcció anterior tant com sigui possible i estalviar molta velocitat de construcció.

En canvi, combinaré totes les ordres RUN en una abans de la versió. una capa inferior pot reduir molt la mida de la imatge Docker. El meu projecte de foto-osd sensible a la cara, per exemple, pot reduir més de 100 MB de mida.

Pas 6: imatges de múltiples arcs

Imatges de múltiples arcs
Imatges de múltiples arcs

Com es va esmentar abans, RPi no és capaç de processar. Utilitzar la imatge Docker de compilació de RPi pot no ser una bona opció, especialment quan el vostre únic RPi està executant un altre projecte.

Utilitzar un ordinador x86 també us pot ajudar a crear la imatge Docker. Trobareu més detalls aquí:

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

2 ordres simples poden construir x86 i ARM Docker Image en paral·lel:

docker buildx create --use

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

Multi Arch pot crear imatges de múltiples plataformes amb la mateixa etiqueta d’imatge Docker, de manera que el vostre projecte es pot executar en diferents equips sense problemes. per exemple.

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

No importa si executeu l'ordre anterior a RPi o al vostre equip x86, podeu obtenir un entorn d'execució Lua.

Pas 7: Feliç RPi

Ara podeu desenvolupar i compartir el vostre projecte RPi més fàcilment.

Recomanat: