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

Despliega Node-RED en PLCnext con Docker: Guía paso a paso

Un contenedor Docker puede usarse 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 viene con algunas ventajas. Por ejemplo, cuando se usan repetidamente los mismos paquetes para una aplicación, puede ser útil construir una imagen estándar y simplemente descargarla de Docker Hub. Docker también puede usarse para iniciar y detener el servidor node-red cuando queramos.

Este blog explicará justamente eso. Primero te guiaré a través del proceso de instalación de Docker y comprobaremos la instalación. Construiremos una imagen personalizada con paquetes preinstalados a nuestro gusto con un Dockerfile y crearemos un contenedor desde nuestra imagen recién creada. Finalmente nos aseguraremos de que nuestro contenedor se inicie al arrancar el controlador y subiremos nuestra imagen a Docker Hub.

Instalación del motor Balena Engine

Mentí un poco cuando dije que los contenedores Docker pueden usarse para ejecutar un runtime node-RED en un dispositivo PLCnext. Como verás usamos el motor Balena como motor para ejecutar contenedores, más específicamente usaremos contenedores OCI (Open Container Initiative). Luchar con la nomenclatura nos llevaría demasiado lejos para un Makers Blog, pero en la sección de lecturas adicionales al final de este blog he añadido algunos enlaces para los interesados.

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

sudo passwd root

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

Clona el repositorio git y ve a la nueva carpeta

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

Haz el script de configuración ejecutable y ejecuta dicho script.

chmod +x setup.sh
./setup.sh

Obtener acceso a internet desde tus contenedores

A veces durante la instalación las tablas nft se configuran mal. Por suerte esto es una solución fácil.
La guía de referencia completa se puede encontrar aquí pero una breve descripción del progreso se da a continuación.

En tu shell escribe

ifconfig

Aparece la configuración de tus interfaces de red. Una de ellas se llama Balena, toma nota de la dirección Inet de esta interfaz.
Debería ser algo así: 172.17.0.1

Introduce el siguiente comando en tu shell y compara la dirección Inet recibida en el paso anterior con la segunda línea en el script.
Las dos direcciones deberían ser las mismas, si es así puedes ir a la siguiente sección.
Si no, ejecuta el siguiente comando en tu shell y cambia la dirección en la segunda línea para que coincida con la recibida por ifconfig.

nano /etc/nftables/balena.nft

Detén e inicia el demonio balena-engine para recargar las tablas nft.

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

Mi primer contenedor

Para descargar tu primer contenedor usa el siguiente comando, las banderas se explicarán más tarde, no te preocupes por ellas ahora. Ahora descargaremos un contenedor node-red sin paquetes personalizados. Si no necesitas paquetes personalizados puedes parar aquí y navegar al puerto 1880 del controlador.

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

Docker Hub

La imagen arm32v7/debian usada en la sección anterior se descargó de Docker Hub.
Docker Hub es esencialmente un lugar donde las imágenes de contenedores se reúnen y pueden descargarse fácilmente.
Puedo recomendar la organización arm32v7, esta organización crea imágenes compatibles con la arquitectura del 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 vas a usar contenedores mucho deberías crear una cuenta en Docker Hub y usar sus repositorios. Obtendrás repositorios públicos casi ilimitados y uno privado al crear una cuenta gratuita. Me resistí a usar Docker Hub un tiempo, pero me ha costado mucho tiempo.
En la última sección de este blog aplanaré un poco la curva de aprendizaje de usar Docker Hub mostrando cómo hacer login, re-etiquetar una imagen y subir una imagen a Docker Hub.

Dockerfile

Un Dockerfile es, en cierto sentido, la receta para una imagen Docker. En este blog usaremos un Dockerfile para crear nuestra propia imagen node-red, con los paquetes que necesitamos instalados.
La primera línea de un Dockerfile casi siempre es el comando FROM. Con este comando definimos una imagen base desde donde construiremos nuestra propia imagen.
Después de la instrucción FROM, empezamos a construir nuestra imagen. Hay muchos comandos posibles que se pueden usar en un Dockerfile pero aquí solo usaremos RUN.
Una referencia de Dockerfile se proporciona en la sección de lecturas adicionales.
La instrucción RUN ejecutará el comando que sigue dentro del contenedor que estamos construyendo.
Así que para instalar un nuevo paquete, por ejemplo el paquete SNMP, declaramos: RUN npm install node-red-node-snmp

Después de la teoría, ¡construyamos un Dockerfile! Espero que aún estés en una sesión SSH (¡asegúrate de estar de vuelta en el AXC F 2152 y no en el contenedor debian de hace dos secciones!).
Puedes crear el Dockerfile con nano y copiando y pegando el contenido en el nuevo archivo. guardar (ctrl+s) y salir (ctrl+x).

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

¡Ahora es hora de construir nuestra nueva imagen!

balena-engine build . --tag myimage

Cuando recibas el mensaje de que la imagen se etiquetó correctamente, ¡has construido tu primera imagen!
Para ver la imagen que acabas de construir usa el comando: balena-engine images

Ejecutar nuestra nueva imagen

Finalmente, ¡estamos listos para ejecutar nuestra imagen y crear un contenedor a partir de ella!
Ejecuta el siguiente comando en el shell para ejecutar el contenedor de forma interactiva.
Interactivamente significa que podemos ver en el terminal lo que está pasando dentro del contenedor.
Lo opuesto es detached (desacoplado), marcado con la bandera -d

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

Para salir del contenedor y mantenerlo en ejecución usa ctrl + p ctrl + q
Cuando navegas a la dirección IP del controlador seguida del puerto 1880 el entorno node red se muestra y vemos el paquete snmp instalado.

Iniciar la imagen al arrancar y repaso de banderas docker run

Es impráctico arrancar el contenedor manualmente cada vez que el AXC F 2152 se reinicia. Afortunadamente podemos decirle a Docker que lo inicie por nosotros, ¡y es fácil!
Solo usa el comando listado a continuación. Este también es el momento para entender mejor las banderas docker run usadas. Para empezar, una bandera es algo que damos después del comando y empieza con - o --.
Hasta ahora solo hemos visto -it, para ejecutar un contenedor interactivamente y -d para ejecutar un contenedor desacoplado (en segundo plano).
La bandera -p mapea el puerto del contenedor al puerto del host. Primero se indica el número de puerto del host luego el número de puerto del contenedor.
Podemos dar un nombre al contenedor con la bandera --name. Este nombre se mostrará cuando uses balena-engine ps, para listar todos los contenedores activos o balena-engine ps -a para listar todos los contenedores.
Cuando no se usa la bandera --name el demonio balena asignará un nombre aleatorio al contenedor.
Y por último pero no menos importante, una política de reinicio puede asignarse a un contenedor con la bandera --restart.
Los ajustes posibles se pueden encontrar en el enlace de referencia listado en lecturas adicionales.
Por ahora --restart always hará el truco. Nuestro comando será:

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

Subir a Docker Hub

Cuando quieras usar tu imagen en diferentes controladores. Es una buena idea subir tu imagen a Docker Hub.Bajo la premisa de que ya tienes una cuenta y creaste un repositorio Docker continuaremos. Primero necesitaremos hacer login en nuestra cuenta. Esto se puede hacer escribiendo balena-engine login seguido de tu nombre de usuario y contraseña. Ahora es posible descargar imágenes de repositorios privados y subir tu imagen a Docker Hub.
Para subir tu imagen a Docker Hub es importante tener el nombre correcto. Cuando he creado un repositorio myrep y mi cuenta de usuario es myaccount el nombre de la imagen debería ser myaccount/myrep.
Cuando no la nombraste así al construir la imagen, tienes que re-etiquetar la imagen usando balena-engine tag oldimagetag newimagetag. En nuestro caso sería:

balena-engine tag myimage myaccount/myrep

Cuando no se define nada más obtendrá la etiqueta latest. Es posible añadir una etiqueta añadiendo : y un nombre de etiqueta. Por ejemplo:

balena-engine tag myimage myaccount/myrep:alabel

Lo único que queda es subir nuestra imagen a Docker Hub con el comando:

balena-engine push myaccount/myrep

Lecturas adicionales y referencias

Tecnología Industrial

  1. Éxito duradero: lecciones de persistencia de Abraham Lincoln y el liderazgo en mantenimiento
  2. Optimice su Maquinaria Cat®: Guía Definitiva de My.Cat.com
  3. Primeros Pasos con TJBot: Construye, Configura y Controla por Voz tu Robot IA
  4. Guía Paso a Paso para Desplegar una Pasarela LoRa RAK 831 en Raspberry Pi 3
  5. Construye una puerta de enlace LoRa con el módulo RAK831 en Raspberry Pi 3 – Guía paso a paso
  6. Tutorial Arduino para Principiantes 01: Inicia tu Primer Proyecto
  7. Guía práctica de impresión 3D cerámica: Técnicas, materiales y consejos de diseño
  8. IA en seguros: Guía práctica para implementación real
  9. Domina Node-RED en Docker: Consejos expertos y mejores prácticas
  10. Entendiendo los tintes básicos: Usos, seguridad y aplicaciones industriales
  11. Colorantes y Pigmentos Industriales: Guía Completa de Aplicaciones y Tipos