Containers enable developers to build independent applications packaged with an operating system that can run in any environment. They shorten the testing time and allow IT operations to quickly deploy applications into an operational production environment. Container management provides users the interface, controls and mechanism to efficiently create, add, deploy, replace, load balance, and scale up or down application containers.
A container is a small isolated runtime environment that contains everything that an application needs to function such as files, libraries, calls, and connections to the operating system kernel. The development environment of an application can be very different from the production environment where it is supposed to run, and these differences cause errors and unpredictable behavior in applications. Containers wrap up code and all dependencies so they run predictably and reliably in any computer environment. One container is isolated even from another container unless it has specific code to connect.
The modular characteristic of a container allows developers to write new code quickly or fix existing code without having to rebuild the whole application. IT operations can deploy the update with minimal downtime. The small size, usually in the tens of megabytes, can sometimes require a great number of containers to provide the complete functionality of a complex application and its many features. For example, Google manages billions of containers that power its web services. To oversee and control all these containers deployed in complex distributed systems in an organized and efficient way requires container management.
Without a container management system, users have to manually and individually create containers for their applications, deploy new ones, replace older versions, track their status, and scale up or down the containerized applications depending on available computing resources. Container management automates many of these processes. It simplifies the reproduction, deployment, and scheduling of a vast number of containers. More specialized container management can provide container orchestration. It gives users additional automation controls for configuring needed components and deploying container clusters as they are needed in a variety of environments.
Container management systems give users a means to monitor the health of containers in production, replace ones that are malfunctioning, and restart those that have stalled. They also provide a mechanism to manage the networking and security components of containers. The systems have become an essential tool, especially for organizations using DevOps. They accelerate the life cycle of an application from development to production while reducing operational costs. Container management systems are available as open source and proprietary commercial software.
Some container management systems are:
- Kubernetes (major cloud services like Amazon, Azure and Google offer Kubernetes versions for their environments)
- Docker Swarm
- IBM RedHat OpenShift
- Cloud Foundry
- VMware vSphere Integrated Containers