CODESYS Virtual Control SL mit Docker Compose betreiben
Alle Produkte von CODESYS Virtual Control SL können neben dem CODESYS Deploy Tool auch mit Docker Compose betrieben werden. Das Deploy Tool erstellt dabei eine Compose-Konfiguration, die Sie anschließend direkt mit Docker Compose oder grafischen Werkzeugen wie Portainer verwenden können.
Compose-Datei aus dem Deploy Tool exportieren
Ab Version 4.23.0.0 kann das CODESYS Deploy Tool konfigurierte virtuelle Runtimes direkt als Compose-Datei exportieren.
Wählen Sie hierzu in der Registerkarte Operation in der Sektion vPLC den Befehl Exportieren → Exportieren zu Compose. Damit werden alle Instanzen mit ihrer Konfiguration exportiert. Die erzeugte compose.yaml kann anschließend direkt mit Docker Compose verwendet werden.
Hinweis
Das Deploy Tool kann nicht alle Einstellungen in das Compose-Format übertragen, insbesondere nicht die Einträge im Bereich Generische Kommandos. Diese Einstellungen stehen als Kommentar in der exportierten Datei. Ergänzen Sie sie bei Bedarf manuell.
Netzwerkadapter mit nicmapper exklusiv zuordnen
Der nicmapper ist ein Plug-in für Docker, das einen direkten, exklusiven Zugriff auf einen Netzwerkadapter in einem Docker-Container bereitstellt.
Alle Dateien zum nicmapper sind im Package CODESYS Virtual Control SL enthalten. Sie finden den Quellcode, die Installationsdateien und das Beispiel compose.yaml im Installationsverzeichnis von CODESYS Development System unter CODESYS Virtual Control for Linux SL\Delivery\nicmapper.
Hinweis
Die nachfolgend beschriebene Zuordnung der Netzwerkschnittstellen über den nicmapper wird derzeit nur für Docker Compose unterstützt. Bei Podman Compose sind gegebenenfalls manuelle Anpassungen erforderlich.
Beim Betrieb über das CODESYS Deploy Tool oder die VirtualControlAPI werden Netzwerkadapter per Namespacing exklusiv einer Runtime zugeordnet. Dadurch erhält der Container direkten und möglichst echtzeitfähigen Zugriff auf den Netzwerkadapter.
Docker Compose bietet hierfür keine native Unterstützung. Um ein vergleichbares Verhalten auch beim Einsatz von Compose zu ermöglichen, wird das Docker-Plug-in nicmapper bereitgestellt.
nicmapper installieren
Für die Installation von nicmapper müssen auf dem Linux-System folgende Voraussetzungen erfüllt sein:
Docker ist installiert
Docker Compose ist installiert
Die Open-Source-Programmiersprache Go ist installiert
Die Befehle
ipundnsentersind verfügbarSie haben Root-Berechtigungen
Kopieren Sie das Verzeichnis
nicmapperaus dem Installationsverzeichnis von CODESYS Development System auf das Linux-System.Wechseln Sie auf dem Linux-System in das Verzeichnis
nicmapper.Wenn die Datei
build.shim Windows-Format vorliegt, konvertieren Sie die Datei ins UNIX-Format.dos2unix build.shMachen Sie die Datei ausführbar.
chmod +x build.shFühren Sie das Skript aus.
sudo ./build.sh
Mit dem Skript werden das Plug-in sowie optional ein Hintergrunddienst installiert, der Docker-Container überwacht und Netzwerkschnittstellen automatisch zuordnet.
Detaillierte Informationen zur Installation, Deinstallation und Fehlerdiagnose finden Sie in der mitgelieferten README.md.
Netzwerkadapter in der Compose-Datei zuordnen
Die Zuordnung der Netzwerkschnittstellen erfolgt über das Label cds.nicmapper.nic. Der Wert entspricht dem aus dem CODESYS Deploy Tool bekannten Format. Wenn Sie mehrere Netzwerkadapter angeben, trennen Sie diese durch Kommas. IP-Adresse und Netzwerkmaske sind optional.
services:
runtime:
image: codesyscontrol_virtuallinux:4.22.0.0
container_name: runtime
hostname: runtime
labels:
cds.nicmapper.nic: "eth0/10.0.0.5/24,eth1/192.168.32.8/24"Starten Sie die Umgebung im Verzeichnis der compose.yaml.
docker compose up -d
Hinweis
Beim Erstellen der Compose-Datei mit dem Deploy Tool wird das Label cds.nicmapper.nic im korrekten Format zugewiesen.
Nach dem Start erkennt der nicmapper die entsprechenden Container automatisch und verschiebt die angegebenen Netzwerkschnittstellen in den jeweiligen Container. Dadurch können Produkte der CODESYS Virtual Control SL auch in Compose-basierten Umgebungen mit vergleichbarem Netzwerkverhalten wie bei der Konfiguration über das CODESYS Deploy Tool betrieben werden. Wenn der Container gestoppt wird, macht der nicmapper den Adapter wieder dem gesamten System verfügbar.
Ein vollständiges Beispiel einer compose.yaml ist im Package enthalten.