In de industriële automatisering draait steeds meer applicatielogica op Linux: databases, webservers, dashboards, edge-applicaties. Maar wie die applicaties op meerdere machines, servers of PLC’s uitrolt, kent het probleem: wat op de ene machine werkt, weigert op de andere.
Een engineer hoort zijn tijd te besteden aan robuuste functionaliteit, niet aan het najagen van verschillen tussen omgevingen. Een consistente uitrolomgeving is daarom geen doel op zich. Het is het fundament voor systemen die betrouwbaar, schaalbaar en snel te onderhouden zijn.
Waarom applicaties per machine anders werken
Wanneer een applicatie op meerdere machines moet draaien, ontstaan er subtiele verschillen:
- een andere versie van een library;
- een ontbrekende dependency;
- een net iets andere OS-configuratie.
Wat lokaal perfect werkt, crasht op de testserver of bij de klant op locatie. Het gevolg: engineers verliezen tijd aan het reproduceren en debuggen van omgevingsproblemen in plaats van aan de applicatie zelf.
In feite draait het om de scheiding tussen de applicatie en de omgeving waarin die draait. Terwijl grote softwarebedrijven dit probleem al jaren oplossen met containerization, maakt deze aanpak nu ook een opmars in de industriële automatisering vooral nu steeds meer PLC-platformen Linux gaan ondersteunen. Docker is de tool die deze consistentie mogelijk maakt.
Zo werkt Docker
Docker is een Linux-platform waarmee je applicaties op een consistente en configureerbare manier uitrolt. Lanceer je een applicatie, dan weet je zeker dat die exact zo draait als bij je collega, op de testserver of in productie. Hoe werkt dit in de praktijk?
- Eén kernel, geïsoleerde omgevingen: Containers zijn geen losse virtuele machines met elk hun eigen applicatie. Zie het als één Windows-installatie die naar verschillende C:/-schijven kan wijzen: elke instantie krijgt zijn eigen omgeving, terwijl de kernel één en dezelfde blijft.
- Image bouwen: In een lege Docker image installeer je precies één applicatie een database, webserver of front-end met systeemvariabelen die je pas instelt bij het lanceren, zoals welke poort intern en extern open moet staan.
- Image delen en starten: Zodra de image klaar is, deel je die met anderen. Zij weten gegarandeerd dat dit afgebakende stukje systeem werkt. Met de Docker-runtime zeg je: “draai deze image als container, met deze systeemvariabelen,” en Docker zet er een geïsoleerde context voor op.
- Netwerken: Docker maakt automatisch een eigen netwerk aan, zodat containers onderling kunnen communiceren via API’s die beschikbaar zijn op hun poorten binnen dat subnet.
- Compose voor herhaalbaarheid: Met docker-compose leg je in een Composefile meerdere containers, netwerken en opslaglocaties vast: een complete, herhaalbare applicatiestack. Valt je server ooit uit, dan ben je met die Composefile(s) binnen mum van tijd weer up-and-running.
Waarom dit voor de IOT’er het verschil maakt
Steeds meer PLC-platformen ondersteunen Linux, met Docker als runtime voor gecontaineriseerde applicaties. Wat vandaag nog nieuw klinkt, wordt morgen praktijk op de vloer. Wie nu de basis van Docker begrijpt, hoeft straks niet te wachten tot containerization zijn intrede doet in de PLC-wereld die kennis heeft hij dan al.
Van “het werkt bij mij” naar “het werkt overal”
“Het werkt op mijn computer” hoeft geen verwijt te zijn, maar kan een belofte worden. Docker maakt van omgevingsverschillen een opgelost probleem: één image, overal dezelfde uitkomst. Voor engineers die steeds vaker met gedistribueerde en gecontaineriseerde systemen te maken krijgen, is dit geen overbodige luxe maar een fundamentele vaardigheid.
Meer lezen over moderne industriële software?