Skip to main content

Eseguire CODESYS Virtual Control SL con Docker Compose

Tutti i prodotti di CODESYS Virtual Control SL possono essere eseguiti non solo con il CODESYS Deploy Tool, ma anche con Docker Compose. Il Deploy Tool crea una configurazione Compose che è possibile utilizzare direttamente con Docker Compose o con strumenti grafici come Portainer.

Esportare un file Compose dal Deploy Tool

A partire dalla versione 4.23.0.0, il CODESYS Deploy Tool può esportare direttamente i runtime virtuali configurati come file Compose.

A tale scopo, nella scheda Operazione, nella sezione VPLC, selezionare il comando Esportazione → Esporta configurazione come Compose. In questo modo vengono esportate tutte le istanze con la relativa configurazione. Il file compose.yaml generato può quindi essere utilizzato direttamente con Docker Compose.

Avviso

Il Deploy Tool non è in grado di trasferire tutte le impostazioni nel formato Compose, in particolare le voci dell'area Comandi generici. Queste impostazioni sono riportate come commenti nel file esportato. Se necessario, integrarle manualmente.

Assegnare gli adattatori di rete in modo esclusivo con nicmapper

nicmapper è un plug-in per Docker che fornisce un accesso diretto ed esclusivo a un adattatore di rete in un container Docker.

Tutti i file relativi a nicmapper sono contenuti nel package CODESYS Virtual Control SL. Il codice sorgente, i file di installazione e l'esempio compose.yaml si trovano nella directory di installazione di CODESYS Development System, in CODESYS Virtual Control for Linux SL\Delivery\nicmapper.

Avviso

L'assegnazione delle interfacce di rete tramite nicmapper descritta di seguito è attualmente supportata solo per Docker Compose. Con Podman Compose potrebbero essere necessari adattamenti manuali.

Durante il funzionamento tramite il CODESYS Deploy Tool o la VirtualControlAPI, gli adattatori di rete vengono assegnati in modo esclusivo a un runtime mediante namespacing. In questo modo il container ottiene un accesso diretto all'adattatore di rete, il più possibile in tempo reale.

Docker Compose non offre un supporto nativo per questa funzione. Per consentire un comportamento analogo anche con Compose, viene fornito il plug-in Docker nicmapper.

Installare nicmapper

Per installare nicmapper, sul sistema Linux devono essere soddisfatti i seguenti requisiti:

  • Docker è installato

  • Docker Compose è installato

  • Il linguaggio di programmazione open source Go è installato

  • I comandi ip e nsenter sono disponibili

  • Si dispone dei privilegi di root

  1. Copiare la directory nicmapper dalla directory di installazione di CODESYS Development System sul sistema Linux.

  2. Sul sistema Linux, passare alla directory nicmapper.

  3. Se il file build.sh è in formato Windows, convertirlo in formato UNIX.

    dos2unix build.sh
  4. Rendere eseguibile il file.

    chmod +x build.sh
  5. Eseguire lo script.

    sudo ./build.sh

Lo script installa il plug-in e, opzionalmente, un servizio in background che monitora i container Docker e assegna automaticamente le interfacce di rete.

Per informazioni dettagliate su installazione, disinstallazione e diagnosi degli errori, consultare il file README.md fornito.

Assegnare gli adattatori di rete nel file Compose

L'assegnazione delle interfacce di rete avviene tramite l'etichetta cds.nicmapper.nic. Il valore corrisponde al formato noto dal CODESYS Deploy Tool. Se si specificano più adattatori di rete, separarli con virgole. L'indirizzo IP e la maschera di rete sono opzionali.

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"

Avviare l'ambiente nella directory del file compose.yaml.

docker compose up -d

Avviso

Quando si crea il file Compose con il Deploy Tool, l'etichetta cds.nicmapper.nic viene assegnata nel formato corretto.

Dopo l'avvio, nicmapper rileva automaticamente i container corrispondenti e sposta le interfacce di rete specificate nel rispettivo container. In questo modo i prodotti di CODESYS Virtual Control SL possono essere eseguiti anche in ambienti basati su Compose con un comportamento di rete analogo a quello di una configurazione tramite il CODESYS Deploy Tool. Quando il container viene arrestato, nicmapper rende nuovamente disponibile l'adattatore all'intero sistema.

Un esempio completo di file compose.yaml è incluso nel package.