Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

Node-RED y los primeros pasos con Docker

Se puede usar un contenedor Docker para ejecutar un servidor node-RED en un dispositivo PLCnext. Aunque el otro método descrito aquí es un poco más rápido. El uso de contenedores OCI tiene algunas ventajas. Por ejemplo, cuando se usan repetidamente los mismos paquetes para una aplicación, puede ser útil crear una imagen estándar y simplemente descargarla desde Docker hub. Docker también se puede usar para iniciar y detener el servidor de nodo rojo cuando queramos.

Este blog explicará precisamente eso. Primero lo guiaré a través del proceso de instalación de Docker y revisaremos la instalación. Construiremos una imagen personalizada con paquetes de nuestro agrado preinstalados con un Dockerfile y crearemos un contenedor a partir de nuestra imagen recién creada. Finalmente, nos aseguraremos de que nuestro contenedor se inicie en el arranque del controlador y envíe nuestra imagen a Dockerhub.

Instalación del motor Balena

Mentí un poco cuando dije que los contenedores Docker se pueden usar para ejecutar un tiempo de ejecución de node-RED en un dispositivo PLCnext. Como verá, usamos el motor Balena como motor para ejecutar contenedores, más específicamente, usaremos contenedores OCI (Iniciativa de contenedor abierto). Luchar a través de la nomenclatura nos llevaría demasiado lejos para un Makersblog, pero en la sección de lecturas adicionales al final de este blog he agregado algunos enlaces para aquellos que estén interesados.

El procedimiento de instalación es bastante sencillo y se puede encontrar aquí como referencia completa, pero por razones prácticas, los comandos también se dan en la siguiente sección.
Asegúrese de haber iniciado sesión como usuario root, para crear una nueva contraseña de root, escriba el siguiente comando en el shell y escriba su contraseña de administrador seguida de dos veces el nuevo pase de root.

sudo passwd root

Inicie sesión como usuario root escribiendo su seguido de su contraseña recién creada.

Clona el repositorio de git y ve a la nueva carpeta

git clone https://github.com/PLCnext/Docker_GettingStarted.git
cd Docker_GettingStarted

Haga que el script de instalación sea ejecutable y ejecute dicho script.

chmod +x setup.sh
./setup.sh

Obtener acceso a Internet desde sus contenedores

A veces, durante la instalación, las tablas nft se configuran incorrectamente. Afortunadamente, esta es una solución fácil.
La guía de referencia completa se puede encontrar aquí, pero a continuación se proporciona una breve descripción del progreso.

En tu shell escribe

ifconfig

Aparecerá la configuración de sus interfaces de red. Uno de ellos llamado Balena, tome nota de la dirección Inet de esta interfaz.
Debería ser algo como esto:172.17.0.1 

Ingrese el siguiente comando en su shell y compare la dirección Inet recibida en el paso anterior con la segunda línea del script.
Las dos direcciones deben ser iguales, si es así puedes pasar a la siguiente sección.
De lo contrario, emita el siguiente comando en su shell y cambie la dirección en la segunda línea para que coincida con la recibida por ifconfig.

nano /etc/nftables/balena.nft

Detenga e inicie balena-engine-daemon para recargar las tablas nft.

/etc/init.d/balena stop
/etc/init.d/balena start

Mi primer contenedor

Para descargar su primer contenedor, use el siguiente comando, las banderas se explicarán más adelante, no se preocupe por ellas ahora. Ahora descargaremos un contenedor de nodo rojo sin paquetes personalizados. Si no necesita paquetes personalizados, puede detenerse aquí y buscar el puerto 1880 del controlador.

balena-engine run -d -p 1880:1880 --name nodered --restart always nodered/node-red

Centro acoplable

La imagen arm32v7/debian utilizada en la sección anterior se descargó de Docker Hub.
Docker Hub es esencialmente un lugar donde se recopilan imágenes de contenedores y se pueden descargar fácilmente.
Puedo recomendar la organización arm32v7, esta organización crea imágenes compatibles con la arquitectura de la AXC F 2152.

La organización node-red ha creado una imagen compatible con el AXC F 2152, usaremos esta imagen en la siguiente sección, pero primero me gustaría mencionar que si va a usar mucho los contenedores, debe crear una cuenta en Docker Hub y utilizar sus repositorios. Obtendrá repositorios públicos casi ilimitados y un repositorio privado cuando cree una cuenta gratuita. Me resistí a usar Docker Hub por un tiempo, pero me ha costado mucho tiempo.
En la última sección de este blog, aplanaré un poco la curva de aprendizaje del uso de Docker Hub mostrando cómo iniciar sesión, volver a etiquetar una imagen y enviar una imagen a Docker Hub.

Dockerfile

Un archivo acoplable es, en cierto sentido, la receta para una imagen acoplable. En este blog, usaremos un Dockerfile para crear nuestra propia imagen de nodo rojo, con los paquetes que necesitamos instalados.
La primera línea de un Dockerfile es casi siempre el comando FROM. Con este comando definimos una imagen base desde donde construiremos nuestra propia imagen.
Después de la declaración FROM, comenzamos a construir nuestra imagen. Hay muchos comandos posibles que se pueden usar en un archivo Docker, pero aquí usaremos solo EJECUTAR.
Se proporciona un enlace de referencia de Dockerfile en la sección de lecturas adicionales.

La instrucción RUN ejecutará el comando que sigue dentro del contenedor que estamos construyendo.
Entonces, para instalar un nuevo paquete, por ejemplo, el paquete SNMP, indicamos:EJECUTAR npm install node-red-node-snmp

Después de la teoría, construyamos un Dockerfile. Con suerte, todavía está en una sesión SSH (¡asegúrese de estar de vuelta en el AXC F 2152 y no en el contenido de Debian de hace dos secciones!).
Puede crear el Dockerfile con nano y copiar y pegar el contenido en el nuevo archivo. guardar (ctrl + s) y salir (ctrl + x).nano Dockerfile

FROM nodered/node-red:latest-minimal
RUN npm install node-red-node-snmp

¡Ahora es el momento de construir nuestra nueva imagen!

balena-engine build . --tag myimage

Cuando recibió el mensaje de que las imágenes se etiquetaron con éxito, ¡ha creado su primera imagen!
Para ver la imagen que acaba de crear, use el comando:balena-engine images

Ejecutando nuestra nueva imagen

¡Finalmente, estamos listos para ejecutar nuestra imagen y crear un contenedor a partir de ella!
Emita el siguiente comando en el shell para ejecutar el contenedor de forma interactiva.
Interactivamente significa que podemos ver en la terminal lo que sucede dentro del contenedor.
El opuesto está separado, marcado con la bandera -d

balena-engine run -it -p 1880:1880 --name nodered myimage

Para salir del contenedor y mantenerlo funcionando, use ctrl + p ctrl +q
Cuando busca la dirección IP del controlador seguida del puerto 1880, se muestra el entorno rojo del nodo y ¡vemos el paquete snmp instalado!

Inicio de la imagen en el arranque y una introducción a las banderas de ejecución de la ventana acoplable

No es práctico arrancar el contenedor manualmente cada vez que se reinicia el AXC F 2152. Afortunadamente, podemos decirle a Docker que lo inicie por nosotros, ¡y es fácil!
Simplemente use el comando que se detalla a continuación. Este es también el momento de obtener una mejor comprensión de las banderas acoplables utilizadas. Para empezar, una bandera es algo que damos después del comando y comienza con – o –.
Hasta ahora solo hemos visto -it, para ejecutar un contenedor de forma interactiva y -d para ejecutar un contenedor separado (en segundo plano).

La bandera -p asigna el puerto del contenedor al puerto del host. Primero se indica el número de puerto del host y luego el número de puerto del contenedor.
Podemos darle un nombre al contenedor con el indicador –name. Este nombre se mostrará cuando use balena-engine ps, para enumerar todos los contenedores activos o balena-engine ps -a para enumerar todos los contenedores.
Cuando no se usa el indicador –name, el demonio balena asignará un nombre aleatorio al contenedor.

Y por último, pero no menos importante, se puede asignar una política de reinicio a un contenedor con el indicador –restart.
Los ajustes posibles se pueden encontrar en el enlace de referencia que figura en las lecturas adicionales.
Por ahora, ¡reiniciar siempre funcionará! Nuestro comando será:

balena-engine run -it -p 1880:1880 --name nodered --restart always myimage

Enviando al concentrador Docker

Cuando no quieres usar tu imagen en diferentes controladores. Es una buena idea cargar su imagen en Docker Hub.
Partiendo de la premisa de que ya tiene una cuenta y creó un repositorio docker, continuaremos. Primero tendremos que iniciar sesión en nuestra cuenta. Esto se puede hacer escribiendo el inicio de sesión de balena-engine seguido de su nombre de usuario y contraseña. Ahora es posible descargar imágenes de repositorios privados y enviar su imagen a Docker Hub.

Para enviar su imagen a Docker Hub, es importante obtener el nombre correcto. Cuando he creado un repositorio myrep y mi cuenta de usuario es myaccount, el nombre de la imagen debe ser myaccount/myrep.
Cuando no lo nombró así al crear la imagen, debe volver a etiquetar la imagen utilizando la etiqueta balena-engine oldimagetag newimagetag. En nuestro caso sería:

balena-engine tag myimage myaccount/myrep  

Cuando no se defina nada más, obtendremos la etiqueta más reciente. Es posible en una etiqueta agregar un :y un nombre de etiqueta. Por ejemplo:

balena-engine tag myimage myaccount/myrep:alabel 

Lo único que queda es enviar nuestra imagen a Docker hub con el comando:

balena-engine push myaccount/myrep

Otras lecturas y referencias


https://github.com/PLCnext/Docker_GettingStarted/blob/master/getting-started/Part-01/README.md

https://www.docker.com/resources/what-container

https://docs.docker.com/engine/reference/builder/

https://hub.docker.com/

https://hub.docker.com/r/nodered/node-red


Tecnología Industrial

  1. Introducción a la impresión 3D de cerámica
  2. ¡Familiarizándose con los tintes básicos!
  3. ¡Familiarícese con los tintes y pigmentos industriales!
  4. Introducción a TJBot
  5. Introducción a RAK 831 Lora Gateway y RPi3
  6. Introducción a RAK831 LoRa Gateway y RPi3
  7. Liderando con persistencia y perseverancia
  8. Introducción a la IA en seguros:una guía introductoria
  9. Tutorial de Arduino 01:Primeros pasos
  10. Cómo comenzar con My.Cat.com
  11. Node-Red con sugerencias de Docker y mejores prácticas