Skip to main content

Operar CODESYS Virtual Control SL con Docker Compose

Todos los productos de CODESYS Virtual Control SL pueden operarse no solo con el CODESYS Deploy Tool, sino también con Docker Compose. El Deploy Tool genera una configuración de Compose que puede utilizar directamente con Docker Compose o con herramientas gráficas como Portainer.

Exportar un archivo Compose desde el Deploy Tool

A partir de la versión 4.23.0.0, el CODESYS Deploy Tool puede exportar directamente los runtimes virtuales configurados como archivo Compose.

Para ello, en la pestaña Operación, en la sección VPLCs, seleccione el comando Exportación → Exportar configuración como «Compose». Con ello se exportan todas las instancias con su configuración. A continuación, el archivo compose.yaml generado puede utilizarse directamente con Docker Compose.

Aviso

El Deploy Tool no puede transferir todos los ajustes al formato Compose, en particular las entradas del área Comandos genéricos. Estos ajustes figuran como comentarios en el archivo exportado. Añádalos manualmente si es necesario.

Asignar adaptadores de red de forma exclusiva con nicmapper

nicmapper es un plug-in para Docker que proporciona acceso directo y exclusivo a un adaptador de red en un contenedor Docker.

Todos los archivos de nicmapper están incluidos en el paquete CODESYS Virtual Control SL. Encontrará el código fuente, los archivos de instalación y el ejemplo compose.yaml en el directorio de instalación de CODESYS Development System, en CODESYS Virtual Control for Linux SL\Delivery\nicmapper.

Aviso

La asignación de las interfaces de red mediante nicmapper que se describe a continuación solo es compatible actualmente con Docker Compose. Con Podman Compose pueden ser necesarios ajustes manuales.

Al operar a través del CODESYS Deploy Tool o de la VirtualControlAPI, los adaptadores de red se asignan de forma exclusiva a un runtime mediante namespacing. De este modo, el contenedor obtiene acceso directo al adaptador de red con la mayor capacidad de tiempo real posible.

Docker Compose no ofrece compatibilidad nativa para ello. Para permitir un comportamiento comparable también al utilizar Compose, se proporciona el plug-in de Docker nicmapper.

Instalar nicmapper

Para instalar nicmapper, el sistema Linux debe cumplir los siguientes requisitos:

  • Docker está instalado

  • Docker Compose está instalado

  • El lenguaje de programación de código abierto Go está instalado

  • Los comandos ip y nsenter están disponibles

  • Dispone de permisos de root

  1. Copie el directorio nicmapper del directorio de instalación de CODESYS Development System al sistema Linux.

  2. En el sistema Linux, cambie al directorio nicmapper.

  3. Si el archivo build.sh está en formato Windows, conviértalo al formato UNIX.

    dos2unix build.sh
  4. Haga que el archivo sea ejecutable.

    chmod +x build.sh
  5. Ejecute el script.

    sudo ./build.sh

El script instala el plug-in y, opcionalmente, un servicio en segundo plano que supervisa los contenedores Docker y asigna automáticamente las interfaces de red.

Encontrará información detallada sobre la instalación, la desinstalación y el diagnóstico de errores en el archivo README.md incluido.

Asignar adaptadores de red en el archivo Compose

La asignación de las interfaces de red se realiza mediante la etiqueta cds.nicmapper.nic. El valor corresponde al formato conocido del CODESYS Deploy Tool. Si especifica varios adaptadores de red, sepárelos con comas. La dirección IP y la máscara de red son opcionales.

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"

Inicie el entorno en el directorio del archivo compose.yaml.

docker compose up -d

Aviso

Al crear el archivo Compose con el Deploy Tool, la etiqueta cds.nicmapper.nic se asigna en el formato correcto.

Tras el inicio, nicmapper detecta automáticamente los contenedores correspondientes y desplaza las interfaces de red especificadas al contenedor respectivo. De este modo, los productos de CODESYS Virtual Control SL también pueden operarse en entornos basados en Compose con un comportamiento de red comparable al de una configuración mediante el CODESYS Deploy Tool. Cuando se detiene el contenedor, nicmapper vuelve a poner el adaptador a disposición de todo el sistema.

En el paquete se incluye un ejemplo completo de un archivo compose.yaml.