Containerization is a virtualization technique that has existed since at least 2008. It is a type of software deployment that bundles together everything needed to run in a single package. This includes an application and all its dependencies. While historically it’s been used in IT environments, it has recently been gaining traction in OT. Modern containerization, popularized by Docker® since 2013, enables efficient, portable application deployment across diverse environments. Industry standards focusing on user experience with containerization have been formed by the Open Container Initiative (OCI). Containerization gives the ability to run applications that would have otherwise been limited by device or operating system. The goal of this post is to demonstrate containerization’s power to streamline application deployment across IT and OT environments, transforming efficiency in modern Industrial Control Systems (ICS).
Containers vs. Virtual Machines
The easiest comparison with containers is virtual machines (VMs), as both are types of virtualizations. A key difference is that containers don’t require an entire Guest Operating System to run, while VMs do and virtualize everything down to the abstract physical layer. VMs demand significant CPU and memory, limiting scalability in resource-constrained settings. Containers share the host OS kernel, making them lightweight and fast, with startup times in seconds compared to minutes for VMs. This efficiency stems from packaging only the application, libraries, and configurations. For example, a containerized app runs identically on a developer’s laptop or a cloud server, ensuring consistency across development, testing, and most importantly for industrial control systems: production.