Skip to main content

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 ip und nsenter sind verfügbar

  • Sie haben Root-Berechtigungen

  1. Kopieren Sie das Verzeichnis nicmapper aus dem Installationsverzeichnis von CODESYS Development System auf das Linux-System.

  2. Wechseln Sie auf dem Linux-System in das Verzeichnis nicmapper.

  3. Wenn die Datei build.sh im Windows-Format vorliegt, konvertieren Sie die Datei ins UNIX-Format.

    dos2unix build.sh
  4. Machen Sie die Datei ausführbar.

    chmod +x build.sh
  5. Fü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.