Container management software is programming that facilitates the administration of software modules deployed in a distributed environment. The modules, which are called containers, are the fundamental building blocks of a microservice architecture.
Containers are used to create cloud-native, distributed applications and package legacy applications that were not originally designed for virtual environments. Container management software simplifies the process of adding or replacing containers when the need arises and facilitates the organization of large numbers of containers, automating much of the manual work.
When assessing container management software, key factors that businesses need to consider include:
Usage and workflow: Containers are able to run on legacy server platforms by using existing workflows that reduce the learning curve and greatly simplify process integration. However, it’s difficult to connect a container network to a public cloud service or across data centers without a network overlay controller. Products that offer these services include CoreOS, Weaveworks and Project Calico. However, they come with a learning curve and require careful implementation planning.
Security and policy: Containers aren't as impermeable as virtual machines (VMs) on a Type 1 hypervisor, but they do provide greater application isolation than user-mode system processes. Possible attack vectors include OS exploits, container breakouts, denial of service, embedded malware and credential theft.
Interoperability: While it is often seen as the established standard for application containers, Docker is not the only one available. The Open Container Initiative (OCI) has set industry criteria for container image formats and runtime that allows running a container image on any runtime, including AWS, Google Cloud Platform, Kubernetes, Mesos, rkt or the Docker engine.