使用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权限
将
nicmapper目录从CODESYS Development System的安装目录复制到Linux系统中。在Linux系统中,切换到
nicmapper目录。如果
build.sh文件为Windows格式,请将其转换为UNIX格式。dos2unix build.sh为该文件添加可执行权限。
chmod +x build.sh运行该脚本。
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示例。