Tabla de contenido:

Crear una imagen de Docker para Raspberry Pi: 7 pasos
Crear una imagen de Docker para Raspberry Pi: 7 pasos

Video: Crear una imagen de Docker para Raspberry Pi: 7 pasos

Video: Crear una imagen de Docker para Raspberry Pi: 7 pasos
Video: INSTALANDO DOCKER en una RASPBERRY PI 2024, Noviembre
Anonim
Crear una imagen de Docker para Raspberry Pi
Crear una imagen de Docker para Raspberry Pi

Estos instructivos muestran cómo crear una imagen de Docker para Raspberry Pi.

Paso 1: ¿Por qué Docker?

Puede usar Raspberry Pi (RPi) para muchas cosas, un pequeño servidor web, un asistente de inteligencia artificial, robótica … etc.

Muchos proyectos que desea probar, pero los puntos débiles son:

Hora de construir

A RPi no le gusta la potencia de procesamiento y la unidad SD / USB limita la velocidad de E / S. Use apt install all dependency package requiere una hora y la creación de la fuente requiere más horas. Especialmente para proyectos relacionados con la IA, es hora de esperar más que de intentarlo.

Conflicto de versión

Todos prueban muchos proyectos en un RPi. Cuando haya probado un proyecto y le gustaría cambiar a otro, puede encontrar algún error de compilación causado por el conflicto de la versión de las bibliotecas de dependencia con el proyecto anterior. Algunas bibliotecas dejaron de desarrollarse hace unos años y dependen de algunas bibliotecas muy antiguas. Por el contrario, el proyecto activo dependía de las últimas bibliotecas. Ambos proyectos no pueden coexistir en la misma unidad SD / USB ?.

Copia de seguridad de imagen

Dado que algunos proyectos no pueden coexistir, simplemente comprar más unidades SD / USB para mantener la imagen de cada proyecto dependiente es una forma. ¿Si el dinero no es limitado ?. Pero aumenta las dificultades de la gestión de archivos / imágenes, a veces es necesario intercambiar SD / USB y arrancar muchas veces para averiguar lo que desea.

Difícil de compartir

Cuando creaste tu proyecto y te gustaría compartir la fuente con tus amigos, tus amigos pueden recibir la retroalimentación fallida de compilación. Versión de distribución / bibliotecas demasiado antigua o demasiado nueva, parámetros de construcción y algunos trucos. Necesita usar el tiempo para resolver problemas de construcción de otros, pero no para apoyar el proyecto en sí.

Los puntos de dolor anteriores son mi experiencia en estos pocos años. Docker puede ayudar en la mayor parte.

Docker comienza a compilar seleccionando una imagen principal prediseñada. P.ej. debian: jessie-slim comienza a partir de una antigua distribución estable de peso ligero de Debian; node: 10-buster-slim start a partir de la distribución ligera de Debian con Node.js 10 instalado. La imagen prediseñada puede ahorrar mucho tiempo para actualizar la imagen, actualizar e instalar bibliotecas dependientes. Cada proyecto puede comenzar desde una versión de sistema operativo, una versión en tiempo de ejecución y una versión de bibliotecas diferentes. Cuando haya terminado de desarrollar su propio proyecto, puede enviar la imagen de Docker a Docker Hub y compartirla con todos. Puede mantener todos los datos del proyecto en el mismo SD / USB (los datos deben realizarse una copia de seguridad de forma rutinaria en otros medios). Para ahorrar almacenamiento local, incluso puede limpiar la imagen de Docker cuando no la use, en cualquier momento que pueda volver a extraerla del concentrador de Docker.

Paso 2: Docker Overhead

Docker agregó una capa de virtualización, la sobrecarga es una preocupación. No he probado demasiado sobre la sobrecarga de Docker. La mayoría de los resultados buscados en Google afirman una sobrecarga muy baja y encontré este documento sobre algunas investigaciones relacionadas:

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

Paso 3: instala Docker

Simplemente ejecute:

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

Árbitro.:

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

docs.docker.com/get-started/

Paso 4: creación de la imagen de Docker

Encuentre la guía oficial sobre cómo crear una imagen de la ventana acoplable:

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

Tengo 2 proyectos usando Docker, puede encontrar el Dockerfile como referencia:

BanateCAD requiere tiempo de ejecución de Lua y algunas bibliotecas de Lua adicionales. Sólo Lua 5.1 puede ser compatible con todas las bibliotecas de Lua necesarias, pero es el producto de 2006. La última distribución de Debian que puede construir Lua 5.1 con éxito es Jessie (la versión anterior al antiguo estable de Debian). Así que construí una imagen de Docker de entorno Lua 5.1 para ejecutarla

github.com/moononournation/BanateCAD/tree/…

OpenCV es un proyecto en desarrollo activo, el código fuente depende de las últimas bibliotecas y compilador. Por lo tanto, es muy probable que la compilación falle, la firma del método de las bibliotecas, la versión del compilador, el conflicto de dependencia … Me gustaría usar opencv4nodejs para hacer una aplicación simple y no requiera las últimas funciones. Entonces, cuando encontré una manera de construir opencv4nodejs exitosamente, me gustaría congelarlo en una imagen de Docker y hacer la codificación de mi aplicación real

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

Paso 5: velocidad de creación de desarrollo frente al tamaño de la imagen

Desarrollo Velocidad de construcción versus tamaño de imagen
Desarrollo Velocidad de construcción versus tamaño de imagen
Desarrollo Velocidad de construcción versus tamaño de imagen
Desarrollo Velocidad de construcción versus tamaño de imagen

Puede encontrar que mi proyecto face -ware-photo-osd tiene 2 versiones de Dockfile:

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

Durante el desarrollo, me gusta dividir el comando EJECUTAR lo más pequeño posible y organizar lo más probable para cambiar el comando EJECUTAR al último paso. Entonces, para cada cambio de compilación para el desarrollo, puedo utilizar la capa compilada anterior tanto como sea posible y ahorrar mucha velocidad de compilación.

Por el contrario, combinaré todos los comandos RUN en uno antes del lanzamiento. una capa menor puede reducir mucho el tamaño de la imagen de Docker. Mi proyecto de rostro-consciente-foto-osd, como ejemplo, puede reducir más de 100 MB de tamaño.

Paso 6: Imágenes de arco múltiple

Imágenes de arco múltiple
Imágenes de arco múltiple

Como se mencionó anteriormente, a RPi no le gusta la potencia de procesamiento. Usar RPi para construir una imagen de Docker puede no ser una buena opción, especialmente cuando su único RPi está ejecutando otros proyectos.

El uso de una computadora x86 también puede ayudarlo a crear la imagen de Docker; encontrará más detalles aquí:

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

2 comandos simples pueden construir x86 y ARM Docker Image en paralelo:

docker buildx create --use

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

Multi Arch puede crear una imagen multiplataforma con la misma etiqueta de imagen de Docker, por lo que su proyecto puede ejecutarse en diferentes máquinas sin problemas. p.ej.

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

No importa si ejecuta el comando anterior en RPi o en su computadora x86, puede obtener un entorno de ejecución Lua.

Paso 7: ¡Feliz RPi

¡Ahora puede desarrollar y compartir su proyecto RPi más fácilmente!

Recomendado: