System Containers
A system container, also known as an operating system container, represents one of the earliest forms of containerization. It revolves around the concept of an operating system (OS)–a centric solution that mimics a standalone system, eliminating the need for specialized software or custom images like Docker.
Notably, system containers share similarities with virtual machines (VMs) but with significantly lower overhead and simplified management.
Operating within a system container entails running a full-featured init system (such as systemd, SysVinit, Upstart, OpenRC, etc.), enabling the spawning of multiple processes (e.g., OpenSSH, crond, syslogd) within a single container under the same OS environment. This capability makes system containers particularly well-suited for traditional or legacy monolithic applications.
They facilitate the reuse of architectures, tools, and configurations originally implemented for VMs, thereby offering a familiar environment for running such applications.
containers offer several benefits and unique characteristics
Statefulness
System containers can be considered stateful solutions. They support live migration across host nodes, data centers, or even clouds, without losing data or state after reboot. This data persistence makes them ideal for running long-living stateful applications and services, including SQL, NoSQL, and in-memory database instances.
Compatibility with Java:
System containers seamlessly coexist with the Java ecosystem. They do not require any special adjustments to make Java processes aware that they are running inside containers. This compatibility simplifies deployment and management of Java applications within system containers, ensuring a smooth experience for developers and users alike.