Skip to main content

使用Docker Compose运行CODESYS Virtual Control SL

CODESYS Virtual Control SL的所有产品除了可以通过CODESYS Deploy Tool运行外,还可以通过Docker Compose运行。Deploy Tool会创建一个Compose配置,随后您可以直接通过Docker Compose或Portainer等图形化工具使用该配置。

从Deploy Tool导出Compose文件

从版本4.23.0.0起,CODESYS Deploy Tool可以将已配置的虚拟运行时直接导出为Compose文件。

为此,请在操作选项卡的VPLC部分中选择命令导出 → 将设置导出为 Compose。这样会导出所有实例及其配置。随后,生成的compose.yaml可以直接用于Docker Compose。

注意

Deploy Tool无法将所有设置转换为Compose格式,尤其是通用命令区域中的条目。这些设置以注释形式保存在导出的文件中。如有需要,请手动补充。

使用nicmapper独占分配网络适配器

nicmapper是一个Docker插件,可为Docker容器提供对网络适配器的直接独占访问。

nicmapper的所有文件均包含在CODESYS Virtual Control SL软件包中。源代码、安装文件和示例compose.yaml位于CODESYS Development System安装目录下的CODESYS Virtual Control for Linux SL\Delivery\nicmapper中。

注意

下文所述的通过nicmapper分配网络接口的方式目前仅支持Docker Compose。使用Podman Compose时,可能需要手动调整。

通过CODESYS Deploy Tool或VirtualControlAPI运行时,网络适配器会通过命名空间独占分配给一个运行时。这样,容器即可直接访问网络适配器,并尽可能实现实时性。

Docker Compose本身不支持此功能。为了在使用Compose时也能实现类似的行为,我们提供了Docker插件nicmapper。

安装nicmapper

要安装nicmapper,Linux系统必须满足以下前提条件:

  • 已安装Docker

  • 已安装Docker Compose

  • 已安装开源编程语言Go

  • 命令ip和nsenter可用

  • 您拥有root权限

  1. 将nicmapper目录从CODESYS Development System的安装目录复制到Linux系统中。

  2. 在Linux系统中,切换到nicmapper目录。

  3. 如果build.sh文件为Windows格式,请将其转换为UNIX格式。

    dos2unix build.sh
  4. 为该文件添加可执行权限。

    chmod +x build.sh
  5. 运行该脚本。

    sudo ./build.sh

该脚本会安装插件,并可选择安装一个后台服务,用于监控Docker容器并自动分配网络接口。

有关安装、卸载和故障诊断的详细信息,请参阅随附的README.md。

在Compose文件中分配网络适配器

网络接口通过标签cds.nicmapper.nic进行分配。该值与CODESYS Deploy Tool中使用的格式相同。如果指定多个网络适配器,请用逗号分隔。IP地址和网络掩码为可选项。

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"

在compose.yaml所在目录中启动环境。

docker compose up -d

注意

使用Deploy Tool创建Compose文件时,标签cds.nicmapper.nic会以正确的格式进行分配。

启动后,nicmapper会自动识别相应的容器,并将指定的网络接口移至各自的容器中。这样,CODESYS Virtual Control SL的产品也可以在基于Compose的环境中运行,其网络行为与通过CODESYS Deploy Tool配置时相当。容器停止后,nicmapper会使该适配器重新可供整个系统使用。

软件包中包含一个完整的compose.yaml示例。