Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

Node-RED op PLCnext deployen met Docker: Stap-voor-stap handleiding

Een Docker-container kan gebruikt worden om een Node-RED-server op een PLCnext-apparaat te draaien. Hoewel de andere methode die hier beschreven staat iets sneller is, biedt het gebruik van OCI-containers voordelen. Bijvoorbeeld bij herhaald gebruik van dezelfde pakketten voor een applicatie kan het handig zijn om een standaardimage te bouwen en deze van Docker Hub te downloaden. Docker kan ook gebruikt worden om de Node-RED-server te starten en te stoppen wanneer we dat willen.

Deze blog legt dit uit. Eerst begeleid ik je door het installatieproces van Docker en controleren we de installatie. Vervolgens bouwen we een custom image met pakketten naar keuze voorgeïnstalleerd met een Dockerfile en maken we een container van onze verse image. Tot slot zorgen we ervoor dat onze container bij opstart van de controller start en pushen we onze image naar Docker Hub.

Installatie van de Balena-engine

Ik heb een beetje gelogen toen ik zei dat Docker-containers gebruikt kunnen worden om een Node-RED-runtime op een PLCnext-apparaat te draaien. Zoals je zult zien, gebruiken we de Balena-engine als engine om containers te draaien, meer specifiek OCI (Open Container Initiative) containers. De nomenclatuur uitleggen zou ons te ver brengen voor een Makersblog, maar in de "Further reading"-sectie aan het einde van deze blog heb ik enkele links toegevoegd voor geïnteresseerden.

De installatieprocedure is redelijk eenvoudig en vind je hier voor volledige referentie, maar voor het gemak zijn de commando's ook in de volgende sectie gegeven.
Zorg dat je ingelogd bent als root-gebruiker. Om een nieuw root-wachtwoord aan te maken, typ het volgende commando in de shell en voer je admin-wachtwoord in, gevolgd tweemaal door het nieuwe root-wachtwoord.

sudo passwd root

Log in als root-gebruiker door su te typen, gevolgd door je zojuist aangemaakte wachtwoord.

Kloon de git-repository en ga naar de nieuwe map:

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

Maak het setup-script uitvoerbaar en voer het uit:

chmod +x setup.sh
./setup.sh

Internettoegang voor je containers

Soms worden de nft-tabellen tijdens de installatie verkeerd ingesteld. Gelukkig is dit een makkelijke fix.
De volledige referentiegids vind je hier, maar een korte beschrijving van het proces:

Typ in je shell:

ifconfig

De configuratie van je netwerkinterfaces verschijnt. Er is er een genaamd "Balena", noteer het Inet-adres van deze interface. Dit zou er ongeveer zo uit moeten zien: 172.17.0.1.

Voer het volgende commando in je shell in en vergelijk het Inet-adres uit de vorige stap met de tweede regel in het script. De twee adressen moeten hetzelfde zijn; zo ja, ga dan naar de volgende sectie. Zo nee, voer het volgende commando in en wijzig het adres op de tweede regel zodat het overeenkomt met het adres van ifconfig.

nano /etc/nftables/balena.nft

Stop en start de balena-engine-daemon om de nft-tabellen her te laden.

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

Mijn eerste container

Om je eerste container te downloaden, gebruik het volgende commando (de vlaggen worden later uitgelegd). Nu downloaden we een Node-RED-container zonder custom pakketten. Als je geen custom pakketten nodig hebt, kun je hier stoppen en surfen naar poort 1880 van de controller.

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

Docker Hub

De arm32v7/debian-image die in de vorige sectie gebruikt werd, is gedownload van Docker Hub. Docker Hub is essentieel een plaats waar container-images verzameld worden en gemakkelijk gedownload kunnen worden. Ik kan de organisatie arm32v7 aanbevelen; deze maakt images compatibel met de architectuur van de AXC F 2152. De node-red-organisatie heeft een image gemaakt die compatibel is met de AXC F 2152; we gebruiken deze in de volgende sectie. Maar eerst wil ik vermelden dat als je veel met containers werkt, je een account op Docker Hub moet aanmaken en de repositories gebruiken. Je krijgt bijna onbeperkte publieke repositories en één private repository met een gratis account. Ik heb er een tijdje tegen geweerd, maar het heeft me veel tijd gekost. In de laatste sectie van deze blog maak ik de leercurve van Docker Hub wat minder stijl door te laten zien hoe je inlogt, een image herlabelt en een image pusht naar Docker Hub.

Dockerfile

Een Dockerfile is in essentie het recept voor een Docker-image. In deze blog gebruiken we een Dockerfile om onze eigen Node-RED-image te maken, met de pakketten die we nodig hebben geïnstalleerd. De eerste regel van een Dockerfile is bijna altijd het FROM-commando. Hiermee definiëren we een basis-image waarvanaf we onze eigen image bouwen. Na de FROM-statement beginnen we met het bouwen van onze image. Er zijn veel mogelijke commando's voor een Dockerfile, maar hier gebruiken we alleen RUN. Een Dockerfile-referentie-link staat in de "Further readings"-sectie.

De RUN-statement voert het commando dat volgt uit binnen de container die we aan het bouwen zijn. Om een nieuw pakket te installeren, bijvoorbeeld het SNMP-pakket, schrijven we: RUN npm install node-red-node-snmp.

Na de theorie, laten we een Dockerfile bouwen. Hopelijk ben je nog in een SSH-sessie (zorg dat je weer op de AXC F 2152 bent en niet in de Debian-container van twee secties geleden!). Je kunt de Dockerfile maken met nano en de inhoud kopiëren/plakken in het nieuwe bestand. Opslaan (ctrl+s) en afsluiten (ctrl+x).

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

Nu is het tijd om onze nieuwe image te bouwen!

balena-engine build . --tag myimage

Wanneer je het bericht ontvangt dat de image succesvol getagd is, heb je je eerste image gebouwd! Om de image te zien die je net hebt gebouwd, gebruik het commando: balena-engine images.

Onze nieuwe image draaien

Nu zijn we klaar om onze image te draaien en een container ervan te maken! Voer het volgende commando in de shell uit om de container interactief te draaien. Interactief betekent dat we in de terminal zien wat er in de container gebeurt. Het tegenovergestelde is detached, gemarkeerd met de vlag -d.

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

Om de container te verlaten en hem draaiend te laten, gebruik ctrl+p ctrl+q. Wanneer je surft naar het IP-adres van de controller gevolgd door poort 1880, verschijnt de Node-RED-omgeving en zien we het SNMP-pakket geïnstalleerd!

De image bij opstart starten en een primer over docker run-vlaggen

Het is onpraktisch om de container handmatig te starten elke keer dat de AXC F 2152 herstart. Gelukkig kunnen we Docker vertellen om dit voor ons te doen, en dat is eenvoudig! Gebruik het onderstaande commando. Dit is ook de tijd om de docker run-vlaggen beter te begrijpen. Een vlag is iets wat we na het commando geven en begint met - of --. Tot nu toe hebben we alleen -it gezien (interactief draaien) en -d (detached/achtergrond).

  • De vlag -p mapt de poort van de container naar de poort van de host. Eerst het poortnummer van de host, dan het poortnummer van de container.
  • We kunnen de container een naam geven met de --name vlag. Deze naam wordt getoond bij balena-engine ps (alle actieve containers) of balena-engine ps -a (alle containers). Zonder --name wijst de balena-daemon een willekeurige naam toe.
  • Ten slotte kan een herstartbeleid aan een container worden toegewezen met de --restart vlag. De mogelijke instellingen vind je in de referentielink in "Further readings". Voor nu volstaat --restart always!

Ons commando wordt:

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

Pushen naar Docker Hub

Als je je image op verschillende controllers wilt gebruiken, is het een goed idee om je image naar Docker Hub te uploaden. Vanuit het uitgangspunt dat je al een account hebt en een Docker-repository hebt aangemaakt, gaan we verder. Eerst moeten we inloggen op ons account. Dit kan door balena-engine login te typen, gevolgd door je gebruikersnaam en wachtwoord. Nu is het mogelijk om images van private repositories te downloaden en je image naar Docker Hub te pushen.

Om je image naar Docker Hub te pushen, is het belangrijk de naam correct te krijgen. Als ik een repository myrep heb gemaakt en mijn gebruikersaccount myaccount is, moet de imagenaam myaccount/myrep zijn. Als je het niet zo noemde toen je de image bouwde, moet je de image herlabelen met balena-engine tag oldimagetag newimagetag. In ons geval zou dat zijn:

balena-engine tag myimage myaccount/myrep

Als niets meer gedefinieerd is, krijgt het het label latest. Je kunt een label toevoegen door : en een labelnaam toe te voegen. Bijvoorbeeld:

balena-engine tag myimage myaccount/myrep:alabel

Het enige wat overblijft is onze image naar Docker Hub pushen met het commando:

balena-engine push myaccount/myrep

Verder lezen en referenties

Industriële technologie

  1. Blijvende Succes: Lessen in Volharding van Abraham Lincoln en Onderhoudsleiderschap
  2. Cat® Machines Optimaliseren: De Ultieme My.Cat.com Gids
  3. Aan de slag met TJBot: Bouw, Configureer en Stem-bedien Je Eigen AI-robot
  4. Stap-voor-stap Handleiding om een RAK 831 LoRa-gateway op Raspberry Pi 3 te Deployen
  5. Bouw een LoRa Gateway met de RAK831 Module op Raspberry Pi 3 – Stap-voor-Stap Gids
  6. Arduino Beginner Tutorial 01: Start met Je Eerste Project
  7. Een Praktische Gids voor Ceramisch 3D-printen: Technieken, Materialen, en Ontwerptips
  8. AI in verzekeringen: Een praktische startergids voor real-world implementatie
  9. Node-RED in Docker beheersen: Expert-tips & best practices
  10. Basiskleurstoffen begrijpen: Gebruik, veiligheid en industriële toepassingen
  11. Industriële Kleurstoffen & Pigmenten: Uitgebreide Gids voor Toepassingen & Typen