How to Deploy an EtherNet/IP Stack into a Docker Container
In this blog, we explain how to run NetStaX EtherNet/IP Stack running on multiple Linux platforms under Docker. For this example, we used our Linux demonstration version of the EtherNet/IP Scanner Stack: ESDKDemo. The container was built locally, pushed to Docker.io, then deployed to a local Docker host. The Scanner then started up and connected to an instance of the EtherNet/IP Adapter Demo program (EADKDemo) running on in Ubuntu on a local virtual machine.
Design
For this demonstration, we used a simple setup consisting of a Scanner application connecting to an Adapter application. The network was a standard Class C home network. Servers and appliances were manually assigned an IP in the range 192.168.1.2/24-192.168.1.99/24 while all Wi-Fi devices were automatically assigned an IP with DHCP in the range of 192.168.1.100/24 to 192.168.1.254/24.
The Adapter application was the EADKDemo program run inside an Ubuntu virtual machine running on a laptop. This EADKDemo simply listened for the Scanner application to initiate a connection. In this example, the EADKDemo has the IP 192.168.1.104.
The Scanner application was the ESDKDemo program running in a Docker instance. This test was run with Ubuntu Linux as the base.
The Docker image was run on a copy of Portainer running inside a Photon Linux virtual machine running on a local ESXi server. The Portainer server was assigned the static IP of 192.168.1.17 on this network. While the Docker image uses the internal Docker network of 172.17.0.3, this device is visible to the rest of the network with the Portainer IP.
Docker Image Creation with Ubuntu Linux
The first step to creating a Docker image is to create the Dockerfile. The following was used for this demonstration:

With the Dockerfile, the next step was to build the image as follows:
![]()
Finally, the Docker image was pushed to Docker.io, then deployed to Portainer.

The IP and Port settings for the container were as follows:

Testing with Ubuntu Linux
Once running on Portainer, a terminal was opened and the ESDKDemo was launched.

Using our Windows EtherNet/IP Scanner Simulator tool EIPScan, both the EADKDemo and ESDKDemo were observed on the network:

From the command line interface, the ESDKDemo was then commanded to open a class 1 Exclusive Owner connection to the EADKDemo (the “e” option). The connection was observed using Wireshark:

Next Steps
If you follow the above steps, you will successfully deploy the EtherNet/IP Stack into a Docker container. A simple modification of the Dockerfile can be used to include a configuration information such as IP addresses. Also, different operating system bases can be tested to attempt to lower the footprint of the Docker image.
Appendix A: Docker Image Creation with Alpine Linux
Given that Ubuntu Linux may be much larger than needed, the Dockerfile can be modified to build on a more lightweight Linux distribution. The following Dockerfile can be used for Alpine Linux:
