Node-RED en aan de slag met Docker
Een Docker-container kan worden gebruikt om een node-RED-server op een PLCnext-apparaat te laten draaien. Hoewel de andere hier beschreven methode iets sneller is. Het gebruik van OCI-containers heeft enkele voordelen. Als u bijvoorbeeld herhaaldelijk dezelfde pakketten voor een toepassing gebruikt, kan het handig zijn om een standaardafbeelding te maken en deze gewoon te downloaden van Docker-hub. Docker kan ook worden gebruikt om de node-red server te starten en te stoppen wanneer we dat willen.
In deze blog wordt dat precies uitgelegd. Eerst zal ik je door het installatieproces van Docker leiden en zullen we de installatie controleren. We bouwen een aangepaste afbeelding met pakketten naar onze smaak die vooraf zijn geïnstalleerd met een Dockerfile en maken een container van onze vers gemaakte afbeelding. Ten slotte zullen we ervoor zorgen dat onze container start bij het opstarten van de controller en onze afbeelding naar Dockerhub pushen.
Installatie van de Balena – motor
Ik heb een beetje gelogen toen ik zei dat Docker-containers kunnen worden gebruikt om een node-RED-runtime op een PLCnext-apparaat uit te voeren. Zoals je zult zien gebruiken we de Balena-engine als motor om containers te laten draaien, meer specifiek gebruiken we OCI (Open Container Initiative) containers. Worstelen door de nomenclatuur zou ons veel te ver brengen voor een Makersblog, maar in de verdere leessectie aan het einde van deze blog heb ik enkele links toegevoegd voor degenen die geïnteresseerd zijn.
De installatieprocedure is vrij eenvoudig en kan hier worden gevonden voor volledige referentie, maar om praktische redenen worden de commando's ook gegeven in de volgende sectie.
Zorg ervoor dat je bent ingelogd als rootgebruiker, om een nieuw rootwachtwoord aan te maken typ je de volgende opdracht in de shell en typ je je beheerderswachtwoord gevolgd door twee keer de nieuwe rootpas.
sudo passwd root
Log in als rootgebruiker door su te typen gevolgd door uw nieuw 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 script uit.
chmod +x setup.sh
./setup.sh
Internettoegang krijgen vanaf uw containers
Soms worden tijdens de installatie de nft-tabellen verkeerd ingesteld. Gelukkig is dit een makkelijke oplossing.
De volledige referentiegids is hier te vinden, maar hieronder vindt u een korte beschrijving van de voortgang.
In uw shell-type
ifconfig
De configuratie van uw netwerkinterfaces verschijnt. Een van hen heet Balena, noteer het Inet-adres van deze interface.
Het zou zoiets als dit moeten zijn:172.17.0.1
Voer het volgende commando in je shell in en vergelijk het Inet-adres dat je in de vorige stap hebt ontvangen met de tweede regel in het script.
De twee adressen moeten hetzelfde zijn, zo ja, ga dan naar de volgende sectie.
Als dat niet het geval is, cast dan het volgende commando in je shell en verander het adres op de tweede regel zodat het overeenkomt met het adres dat is ontvangen door ifconfig.
nano /etc/nftables/balena.nft
Stop en start de balena-engine-daemon om de nft-tabellen opnieuw te laden.
/etc/init.d/balena stop
/etc/init.d/balena start
Mijn eerste container
Gebruik de volgende opdracht om uw eerste container te downloaden, de vlaggen worden later uitgelegd, maak u er nu geen zorgen over. Nu zullen we een knooppunt-rode container downloaden zonder aangepaste pakketten. Als u geen aangepaste pakketten nodig heeft, kunt u hier stoppen en naar poort 1880 van de controller bladeren.
balena-engine run -d -p 1880:1880 --name nodered --restart always nodered/node-red
Docker-hub
De arm32v7/debian-afbeelding die in de vorige sectie werd gebruikt, is gedownload van Docker Hub.
Docker Hub is in wezen een plaats waar containerafbeeldingen worden verzameld en die eenvoudig kunnen worden gedownload.
Ik kan de organisatie arm32v7 aanbevelen, deze organisatie maakt afbeeldingen die compatibel zijn met de architectuur van de AXC F 2152.
De node-red-organisatie heeft een afbeelding gemaakt die compatibel is met de AXC F 2152, we zullen deze afbeelding in de volgende sectie gebruiken, maar eerst wil ik vermelden dat als je veel containers gebruikt, je een account moet maken op Docker Hub en zijn opslagplaatsen gebruiken. Je krijgt bijna onbeperkte openbare repositories en één privérepository wanneer je een gratis account aanmaakt. Ik heb een tijdje tegengehouden om Docker Hub te gebruiken, maar het heeft me veel tijd gekost.
In het laatste deel van deze blog zal ik de leercurve van het gebruik van Docker Hub een beetje afvlakken door te laten zien hoe je inlogt, een afbeelding opnieuw tagt en een afbeelding naar Docker Hub pusht.
Dockerbestand
Een docker-bestand is in zekere zin het recept voor een docker-image. In deze blog gebruiken we een Dockerfile om onze eigen knooppuntrode afbeelding te maken, met de pakketten die we nodig hebben geïnstalleerd.
De eerste regel van een Dockerfile is bijna altijd het FROM-commando. Met deze opdracht definiëren we een basisafbeelding van waaruit we onze eigen afbeelding zullen bouwen.
Na de FROM-instructie beginnen we ons imago op te bouwen. Er zijn veel mogelijke opdrachten die in een Dockerfile kunnen worden gebruikt, maar hier gebruiken we alleen RUN.
Een Dockerfile-referentielink is te vinden in de sectie met verdere lezingen.
De RUN-instructie voert de opdracht uit die volgt in de container die we aan het bouwen zijn.
Dus om een nieuw pakket te installeren, bijvoorbeeld het SNMP-pakket, vermelden we:RUN npm install node-red-node-snmp
Laten we na de theorie een Dockerfile bouwen. Hopelijk zit je nog steeds in een SSH-sessie (zorg ervoor dat je terug bent op de AXC F 2152 en niet in de debian-container van twee secties geleden!).
U kunt het Docker-bestand met nano maken en de inhoud kopiëren en in het nieuwe bestand plakken. opslaan (ctrl + s) en afsluiten (ctrl + x).nano Docker-bestand
FROM nodered/node-red:latest-minimal
RUN npm install node-red-node-snmp
Nu is het tijd om ons nieuwe imago op te bouwen!
balena-engine build . --tag myimage
Toen je het bericht ontving dat de afbeeldingen succesvol waren getagd, heb je je eerste afbeelding gemaakt!
Om de afbeelding te zien die je zojuist hebt gemaakt, gebruik je het commando:balena-engine images
Onze nieuwe afbeelding draaien
Eindelijk zijn we klaar om onze afbeelding uit te voeren en er een container van te maken!
Cast de volgende opdracht in de shell om de container interactief uit te voeren.
Interactief betekent dat we in de terminal kunnen zien wat er in de container gebeurt.
Het tegenovergestelde is vrijstaand, gemarkeerd met de vlag -d
balena-engine run -it -p 1880:1880 --name nodered myimage
Gebruik ctrl + p ctrl +q . om de container te verlaten en aan de gang te houden
Wanneer je naar het IP-adres van de controller bladert, gevolgd door poort 1880, wordt de rode omgeving van het knooppunt weergegeven en zien we het snmp-pakket geïnstalleerd!
De afbeelding starten bij het opstarten en een inleiding op docker-run-vlaggen
Het is onpraktisch om de container elke keer dat de AXC F 2152 opnieuw wordt opgestart handmatig op te starten. Gelukkig kunnen we Docker vertellen om het voor ons te starten, en het is gemakkelijk om!
Gebruik gewoon de onderstaande opdracht. Dit is ook het moment om een beter begrip te krijgen van de gebruikte docker-vlaggen. Om te beginnen is een vlag iets dat we na het commando geven en begint met – of –.
Tot nu toe hebben we alleen -it gezien, om een container interactief uit te voeren en -d om een container losgekoppeld (op de achtergrond) uit te voeren.
De vlag -p wijst de poort van de container toe aan de poort van de host. Eerst wordt het poortnummer van de host vermeld en vervolgens het poortnummer van de container.
We kunnen de container een naam geven met de vlag –name. Deze naam wordt getoond wanneer u balena-engine ps gebruikt om alle actieve containers te tonen of balena-engine ps -a om alle containers weer te geven.
Als er geen vlag –name wordt gebruikt, zal de balena-daemon een willekeurige naam aan de container toewijzen.
En last but not least kan een herstartbeleid worden toegewezen aan een container met de vlag –restart.
De mogelijke instellingen zijn te vinden in de referentielink die wordt vermeld in de verdere metingen.
Voor nu - opnieuw opstarten zal altijd het lukken! Ons commando zal zijn:
balena-engine run -it -p 1880:1880 --name nodered --restart always myimage
Duwen naar Docker-hub
Wanneer je je afbeelding niet op verschillende controllers wilt gebruiken. Het is een goed idee om uw afbeelding te uploaden naar Docker Hub.
Ervan uitgaande dat je al een account hebt en een docker-repository hebt gemaakt, gaan we verder. Eerst moeten we inloggen op ons account. Dit kunt u doen door balena-engine login in te typen gevolgd door uw gebruikersnaam en wachtwoord. Het is nu mogelijk om afbeeldingen van privé-repositories te downloaden en uw afbeelding naar de Docker-hub te pushen.
Om uw afbeelding naar de Docker-hub te pushen, is het belangrijk om de naam goed te krijgen. Als ik een repository myrep heb gemaakt en mijn gebruikersaccount is myaccount, dan moet de naam van de afbeelding myaccount/myrep zijn.
Als je het niet zo hebt genoemd bij het maken van de afbeelding, moet je de afbeelding opnieuw taggen door de balena-engine tag oldimagetag newimagetag te gebruiken. In ons geval zou dit zijn:
balena-engine tag myimage myaccount/myrep
Als er niets meer is gedefinieerd, krijgt u het label als laatste. Het is mogelijk om bij een label een :en een labelnaam toe te voegen. Bijvoorbeeld:
balena-engine tag myimage myaccount/myrep:alabel
Het enige dat overblijft, is onze afbeelding naar de Docker-hub duwen met het commando:
balena-engine push myaccount/myrep
Verdere metingen en referenties
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
Industriële technologie
- Aan de slag met keramisch 3D-printen
- Maak kennis met basiskleurstoffen!
- Vertrouwd raken met industriële kleurstoffen en pigmenten!
- Aan de slag met TJBot
- Aan de slag met de RAK 831 Lora Gateway en RPi3
- Aan de slag met de RAK831 LoRa Gateway en RPi3
- Leidinggevend met volharding en doorzettingsvermogen
- Aan de slag met AI in verzekeringen:een inleidende gids
- Arduino-zelfstudie 01:Aan de slag
- Aan de slag met My.Cat.com
- Node-Red met docker-tips en best practices