Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

Node-RED et démarrage avec Docker

Un conteneur Docker peut être utilisé pour exécuter un serveur node-RED sur un équipement PLCnext. Bien que l'autre méthode décrite ici soit un peu plus rapide. L'utilisation de conteneurs OCI présente certains avantages. Par exemple, lorsque vous utilisez à plusieurs reprises les mêmes packages pour une application, il peut être utile de créer une image standard et de la télécharger simplement à partir du hub Docker. Docker peut également être utilisé pour démarrer et arrêter le serveur node-red quand nous le voulons.

Ce blog vous expliquera exactement cela. Je vais d'abord vous guider à travers le processus d'installation de Docker et nous vérifierons l'installation. Nous allons créer une image personnalisée avec des packages à notre goût préinstallés avec un Dockerfile et créer un conteneur à partir de notre image fraîchement créée. Enfin, nous nous assurerons que notre conteneur démarrera au démarrage du contrôleur et poussera notre image vers Dockerhub.

Installation du Balena – moteur

J'ai un peu menti quand j'ai dit que les conteneurs Docker pouvaient être utilisés pour exécuter un environnement d'exécution node-RED sur un appareil PLCnext. Comme vous le verrez, nous utilisons le moteur Balena comme moteur pour exécuter des conteneurs, plus précisément nous utiliserons des conteneurs OCI (Open Container Initiative). La lutte à travers la nomenclature nous amènerait bien trop loin pour un Makersblog, mais dans la section de lecture complémentaire à la fin de ce blog, j'ai ajouté quelques liens pour ceux qui sont intéressés.

La procédure d'installation est assez simple et peut être trouvée ici pour une référence complète, mais pour des raisons pratiques, les commandes sont également données dans la section suivante.
Assurez-vous que vous êtes connecté en tant qu'utilisateur root, pour créer un nouveau mot de passe root, tapez la commande suivante dans le shell et tapez votre mot de passe administrateur suivi de deux fois le nouveau mot de passe root.

sudo passwd root

Connectez-vous en tant qu'utilisateur root en tapant su suivi de votre mot de passe nouvellement créé.

Clonez le dépôt git et accédez au nouveau dossier

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

Rendez le script d'installation exécutable et exécutez-le.

chmod +x setup.sh
./setup.sh

Obtenir un accès Internet à partir de vos conteneurs

Parfois, lors de l'installation, les tables nft sont mal configurées. Heureusement, c'est une solution facile.
Le guide de référence complet peut être trouvé ici, mais une brève description des progrès est donnée ci-dessous.

Dans votre type de shell

ifconfig

La configuration de vos interfaces réseau apparaît. L'un d'eux nommé Balena, notez l'adresse Inet de cette interface.
Cela devrait ressembler à ceci :172.17.0.1 

Entrez la commande suivante dans votre shell et comparez l'adresse Inet reçue à l'étape précédente avec la deuxième ligne du script.
Les deux adresses doivent être identiques, si c'est le cas, vous pouvez passer à la section suivante.
Si ce n'est pas le cas, lancez la commande suivante dans votre shell et modifiez l'adresse sur la deuxième ligne pour qu'elle corresponde à celle reçue par ifconfig.

nano /etc/nftables/balena.nft

Arrêtez et démarrez le démon balena-engine-daemon pour recharger les tables nft.

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

Mon premier conteneur

Pour télécharger votre premier conteneur, utilisez la commande suivante, les drapeaux seront expliqués plus tard, ne vous en souciez pas maintenant. Nous allons maintenant télécharger un conteneur de nœud rouge sans packages de costumes. Si vous n'avez pas besoin de forfaits costumés, vous pouvez vous arrêter ici et naviguer jusqu'au port 1880 du contrôleur.

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

Centre Docker

L'image arm32v7/debian utilisée dans la section précédente a été téléchargée depuis Docker Hub.
Docker Hub est essentiellement un endroit où les images de conteneurs sont rassemblées et peuvent être facilement téléchargées.
Je peux recommander l'organisation arm32v7, cette organisation crée des images compatibles avec l'architecture de l'AXC F 2152.

L'organisation node-red a créé une image compatible avec l'AXC F 2152, nous utiliserons cette image dans la section suivante mais j'aimerais d'abord mentionner que si vous utilisez beaucoup de conteneurs, vous devez créer un compte sur Docker Hub et utiliser ses dépôts. Vous obtiendrez des référentiels publics presque illimités et un référentiel privé lorsque vous créez un compte gratuit. J'ai résisté à utiliser Docker Hub pendant un certain temps, mais cela m'a coûté beaucoup de temps.
Dans la dernière section de ce blog, je vais aplatir un peu la courbe d'apprentissage de l'utilisation de Docker Hub en montrant comment se connecter, re-tagger une image et pousser une image vers Docker Hub.

Fichier Docker

Un fichier docker est en quelque sorte la recette d'une image docker. Dans ce blog, nous utiliserons un Dockerfile pour créer notre propre image node-red, avec les packages dont nous avons besoin installés.
La première ligne d'un Dockerfile est presque toujours la commande FROM. Avec cette commande, nous définissons une image de base à partir de laquelle nous allons construire notre propre image.
Après l'instruction FROM, nous commençons à construire notre image. Il y a beaucoup de commandes possibles qui peuvent être utilisées dans un Dockerfile mais ici nous n'utiliserons que RUN.
Un lien de référence Dockerfile est fourni dans la section des lectures complémentaires.

L'instruction RUN exécutera la commande qui suit à l'intérieur du conteneur que nous construisons.
Ainsi pour installer un nouveau package, par exemple le package SNMP nous disons :RUN npm install node-red-node-snmp

Après la théorie, construisons un Dockerfile. J'espère que vous êtes toujours dans une session SSH (assurez-vous que vous êtes de retour sur l'AXC F 2152 et non dans le contenu debian d'il y a deux sections !).
Vous pouvez créer le Dockerfile avec nano et copier coller le contenu dans le nouveau fichier. enregistrer (ctrl + s) et quitter (ctrl + x).nano Dockerfile

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

Il est maintenant temps de construire notre nouvelle image !

balena-engine build . --tag myimage

Lorsque vous avez reçu le message indiquant que les images ont été étiquetées avec succès, vous avez créé votre première image !
Pour voir l'image que vous venez de créer, utilisez la commande :images balena-engine

Exécution de notre nouvelle image

Enfin, nous sommes prêts à exécuter notre image et à en créer un conteneur !
Diffusez la commande suivante dans le shell pour exécuter le conteneur de manière interactive.
Interactif signifie que nous pouvons voir dans le terminal ce qui se passe à l'intérieur du conteneur.
Le contraire est détaché, marqué du drapeau -d

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

Pour quitter le conteneur et continuer à fonctionner, utilisez ctrl + p ctrl + q
Lorsque vous accédez à l'adresse IP du contrôleur suivie du port 1880, l'environnement du nœud rouge s'affiche et nous voyons le package snmp installé !

Démarrage de l'image au démarrage et introduction aux drapeaux d'exécution de docker

Il n'est pas pratique de démarrer le conteneur manuellement à chaque redémarrage de l'AXC F 2152. Heureusement, nous pouvons dire à Docker de le démarrer pour nous, et c'est facile !
Utilisez simplement la commande ci-dessous. C'est aussi le moment de mieux comprendre les flags docker utilisés. Pour commencer, un drapeau est quelque chose que nous donnons après la commande et qui commence par – ou –.
Jusqu'à présent, nous n'avons vu que -it, pour exécuter un conteneur de manière interactive et -d pour exécuter un conteneur détaché (en arrière-plan).

L'indicateur -p mappe le port du conteneur sur le port de l'hôte. Le numéro de port de l'hôte est d'abord indiqué, puis le numéro de port du conteneur.
Nous pouvons donner un nom au conteneur avec le drapeau –name. Ce nom sera affiché lorsque vous utiliserez balena-engine ps pour répertorier tous les conteneurs actifs ou balena-engine ps -a pour répertorier tous les conteneurs.
Lorsqu'aucun indicateur -name n'est utilisé, le démon balena attribue un nom aléatoire au conteneur.

Enfin, une stratégie de redémarrage peut être attribuée à un conteneur avec l'indicateur –restart.
Les réglages possibles peuvent être trouvés dans le lien de référence répertorié dans les lectures complémentaires.
Pour l'instant, le redémarrage fera toujours l'affaire ! Notre commande sera :

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

Pousser vers le hub Docker

Lorsque vous ne souhaitez pas utiliser votre image sur différents contrôleurs. C'est une bonne idée de télécharger votre image sur Docker Hub.
En partant du principe que vous avez déjà un compte et que vous avez créé un référentiel Docker, nous continuerons. Nous devrons d'abord nous connecter à notre compte. Cela peut être fait en tapant identifiant balena-engine suivi de votre nom d'utilisateur et de votre mot de passe. Il est désormais possible de télécharger des images à partir de référentiels privés et de pousser votre image vers le hub Docker.

Pour pousser votre image vers le hub Docker, il est important d'avoir le bon nom. Lorsque j'ai créé un référentiel myrep et que mon compte utilisateur est myaccount, le nom de l'image doit être myaccount/myrep.
Lorsque vous ne l'avez pas nommé comme ça lors de la construction de l'image, vous devez re-tagger l'image en utilisant la balise balena-engine oldimagetag newimagetag. Dans notre cas, ce serait :

balena-engine tag myimage myaccount/myrep  

Lorsque rien de plus n'est défini, il obtient bien l'étiquette au plus tard. Il est possible d'ajouter à une étiquette un :et un nom d'étiquette. Par exemple :

balena-engine tag myimage myaccount/myrep:alabel 

La seule chose qui reste est de pousser notre image vers le hub Docker avec la commande :

balena-engine push myaccount/myrep

Autres lectures et références


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


Technologie industrielle

  1. Initiation à l'impression 3D céramique
  2. Se familiariser avec les teintures de base !
  3. Se familiariser avec les teintures et pigments industriels !
  4. Premiers pas avec TJBot
  5. Premiers pas avec le RAK 831 Lora Gateway et RPi3
  6. Premiers pas avec la passerelle LoRa RAK831 et RPi3
  7. Diriger avec persévérance et persévérance
  8. Premiers pas avec l'IA dans l'assurance :un guide d'introduction
  9. Tutoriel Arduino 01 :Prise en main