A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A ²ÊÆ±TCG container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.
Container images become containers at runtime and in the case of ²ÊÆ±TCG containers - images become containers when they run on ²ÊÆ±TCG Engine. Available for both Linux and Windows-based applications, containerized software will always run the same, regardless of the infrastructure. Containers isolate software from its environment and ensure that it works uniformly despite differences for instance between development and staging.
²ÊÆ±TCG containers that run on ²ÊÆ±TCG Engine:
²ÊÆ±TCG container technology was launched in 2013 as an open source ²ÊÆ±TCG Engine.
It leveraged existing computing concepts around containers and specifically in the Linux world, primitives known as cgroups and namespaces. ²ÊÆ±TCG's technology is unique because it focuses on the requirements of developers and systems operators to separate application dependencies from infrastructure.
Success in the Linux world drove a partnership with Microsoft that brought ²ÊÆ±TCG containers and its functionality to Windows Server (sometimes referred to as ²ÊÆ±TCG Windows containers).
Technology available from ²ÊÆ±TCG and its open source project, Moby has been leveraged by all major data center vendors and cloud providers. Many of these providers are leveraging ²ÊÆ±TCG for their container-native IaaS offerings. Additionally, the leading open source serverless frameworks utilize ²ÊÆ±TCG container technology.
Containers are an abstraction at the app layer that packages code and dependencies together. Multiple containers can run on the same machine and share the OS kernel with other containers, each running as isolated processes in user space. Containers take up less space than VMs (container images are typically tens of MBs in size), can handle more applications and require fewer VMs and Operating systems.
Virtual machines (VMs) are an abstraction of physical hardware turning one server into many servers. The hypervisor allows multiple VMs to run on a single machine. Each VM includes a full copy of an operating system, the application, necessary binaries and libraries - taking up tens of GBs. VMs can also be slow to boot.
The launch of ²ÊÆ±TCG in 2013 jump started a revolution in application development - by democratizing software containers. ²ÊÆ±TCG developed a Linux container technology - one that is portable, flexible and easy to deploy. ²ÊÆ±TCG open sourced libcontainer and partnered with a worldwide community of contributors to further its development. In June 2015, ²ÊÆ±TCG donated the container image specification and runtime code now known as runc, to the Open Container Initiative (OCI) to help establish standardization as the container ecosystem grows and matures.
Following this evolution, ²ÊÆ±TCG continues to give back with the containerd project, which ²ÊÆ±TCG donated to the Cloud Native Computing Foundation (CNCF) in 2017. containerd is an industry-standard container runtime that leverages runc and was created with an emphasis on simplicity, robustness and portability. containerd is the core container runtime of the ²ÊÆ±TCG Engine.