Microservice: CODESYS Linux Runtime and CODESYS Edge Gateway¶
The following section describes the procedure to integrate a containerized CODESYS* SoftPLC. These instructions assume that you have an existing ECI installation and you are familiar with building Docker containers and running the CODESYS Software PLC.
The following section is applicable to:

Build CODESYS Containers¶
Do the following to build Docker* images that contain CODESYS* components:
If not already completed, prepare the build system.
Open a terminal on the build system and navigate to the extracted
Dockerfiles
directory. This directory should contain the following:$ ls application-containers softplc-containers
Navigate to the
softplc-containers
directory. This directory should contain the following:$ ls build.sh docker README.md
Run the
build.sh
script, located in this directory, to build the CODESYS* Docker* images:/bin/bash build.sh
Tip
You can change the version of the CODESYS* components installed by editing their Dockerfiles. Edit variable
CDS_VERSION
in Dockerfiledocker/Dockerfile.controlruntime
and variableEDGE_VERSION
in Dockerfiledocker/Dockerfile.gateway
. Supported version of CODESYS* are (3.5.15.*, 3.5.16.*, 4.5.0.0).After the build has completed successfully, Docker* images would have been generated and tarballed. Each of them vary:
Docker* Image Archive Name
Description of Docker* Image
codesys-control.tar
Contains only the CODESYS* Linux* runtime
codesys-edge-gateway.tar
Contains the CODESYS* Edge Gateway
Execute CODESYS Linux Runtime Container¶
The following section is applicable to:

Install Docker if not already done.
Ensure that the Docker* daemon is active. Run the following command to restart the Docker* daemon:
Warning: All Docker* containers that are currently running will also restart.
$ systemctl restart docker
Verify the status of the Docker* daemon:
$ systemctl status docker
Copy the Docker* images, created earlier, to the target system.
Load the copied Docker* image:
$ docker load < codesys-control.tar
Check the Docker* images that are present on the target system:
$ docker images
The CODESYS* images that were loaded should be present in the list. Note down the names and tags of these images.
Here is a sample output:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE codesys-control 4.5.0.0 7d6256f52029 About a minute ago 258MB
Start the container. Note that
<container>
and<tag>
correspond to the values on the target system:$ docker run --cap-add=SYS_PTRACE --network host <container>:<tag>
For example, here is the command to start the
codesys-control
container:$ docker run --cap-add=SYS_PTRACE --network host codesys-control:4.5.0.0
Execute CODESYS Edge Gateway Container¶
The following section is applicable to:

Install Docker if not already done.
Ensure that the Docker* daemon is active. Restart the Docker* daemon:
Warning: All running Docker* containers will also restart.
$ systemctl restart docker
Verify the status of the Docker* daemon:
$ systemctl status docker
Copy the Docker* image, created earlier, to the target system.
Load the copied Docker* image:
$ docker load < codesys-edge-gateway.tar
Check the Docker* images that are present on the target system:
$ docker images
The CODESYS* image loaded earlier should be present in the list. Note down the names and tags of these images.
Here is a sample output:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE codesys-edge-gateway 4.5.0.0 acfa543d8f20 About a minute ago 161MB
This step is optional. To run the CODESYS Edge Gateway in a separate Docker* network called
codesys
, run the following command to create the network:$ docker network create codesys
The CODESYS Edge Gateway must be reachable from external host over the port
tcp/1217
, hence the parameter-p 1217:1217
is necessary. Run the following commands to start the CODESYS Edge Gateway container:$ docker run -d --rm \ --name codesys-edge-gateway \ --hostname docker-edge-gateway \ -p 1217:1217 \ codesys-edge-gateway
Note: If a Docker* network had been created earlier, add the parameter
--network codesys
to connect the container to this network:$ docker run -d --rm \ --name codesys-edge-gateway \ --hostname docker-edge-gateway \ --network codesys \ -p 1217:1217 \ codesys-edge-gateway
You can view all active CODESYS* Linux* runtimes on the Docker* network using the CODESYS* IDE. Refer to Install CODESYS IDE for installing the CODESYS* IDE.
The following section is applicable to:
With the CODESYS* IDE, connect to the CODESYS Edge Gateway using the IP address of the target system and standard port
1217
. Any CODESYS* Linux* runtimes active on the same Docker* network will be displayed during a network scan.