The best way to think of a container is as a highly portable unit of application functionality -- one that holds not only application code, but middleware, parameters and configuration information to facilitate its deployment and management.
Organizations can host containers in a variety of ways, and container management systems control their deployment and operational lifecycles. Their support of componentization and their flexibility in hosting options makes containers the clear choice for application development and deployment.
Containers, in short, are the future for everyone who develops or uses applications. Container adoption continues in both the local data center and public cloud, as enterprises look to optimize resource usage and streamline software deployments.
It's never been easy for organizations to deploy and maintain application software, and the explosion of componentized, multipiece applications has made these tasks even more complex. Container deployment can help simplify these processes by abstracting application components from the OS.
A closer look at container technology
Containers are a perfect partner for microservices and other strategies that break applications into components. When an application is built from multiple components, the orderly workflow of those components often depends on compatible versions of software and middleware.
Virtualization with hypervisors and virtual machines offers businesses everything they need for an application component in one place and the ability to deploy wherever it makes sense. But because each VM contains an entire OS, middleware and application, it's possible for the software version in one VM to diverge from the version in others, creating an incompatibility that interferes with workflow integration. The duplication consumes more resources than necessary, given that many applications on the same server use copies of the same OS version rather than share one.
In hosting terms, containers offer a lightweight alternative to hypervisor-based virtualization; all the container components hosted on a given server share an OS. Organizations can place five to 10 times as many containers on a given server as they can VMs.
In theory, businesses of all sizes can implement a container deployment strategy. However, most use is concentrated in larger organizations, as containers are more valuable for environments with many applications and servers. Containers require skills related to how teams manage virtual environments and use automated deployment tools -- skills more common among enterprise workers.
Still, the benefits are significant enough that any company that supports workers with multiple applications should seriously consider a container deployment.
Containers run everything under one OS, but applications are still almost as isolated from each other as they are with VMs. Because containers share the OS, they have a much lower overhead than VMs. This leads to the five- to 10-times improvement in the density mentioned above. In addition, containers enforce a simple application deployment and redeployment model, lowering operations costs.
In all, containers offer advantages over both VMs and multitasking OSes. They lower costs more effectively than VMs and can improve security better than multitasking OSes.
Docker is the premier container software. The purpose of tools like Docker is to prepare components for containerization, combine them with the necessary parameterization to support hosting and deploy them on container-ready platforms or nodes.
Container hosts, which are servers with OS support for container hosting, plus container management software like Docker, equals a container deployment framework. But the term deployment covers only the basics. If the application requires additional capabilities like recovery from hardware failures, replacement of components when a new version is released or the ability to scale under load, orchestration is needed to make operations practical.
Kubernetes, a container orchestration tool originally developed by Google and now maintained by the Cloud Native Computing Foundation, is the most well known of the family of container management and orchestration tools. Kubernetes is table stakes for containers and container management, to the point where all container users and prospects should consider themselves Kubernetes users. Similarly, the container ecosystem should now be considered a Kubernetes ecosystem, built around a scalable orchestration framework and expanding to better serve application and user needs.
The importance of container management systems
Container management, or orchestration, enables administrators to deploy applications on pools of resources, in a public cloud or a data center, without handling the details of container hosting manually. These resource pools are called swarms in Docker and clusters in Kubernetes. There are also tools available for cluster management that include, but aren't limited to, containers. These include Apache Mesos and CoreOS, now part of Red Hat OpenShift, but as this series will show, Kubernetes is the centerpiece of container management systems today. [Editor’s note: Since publication, Docker Enterprise has been acquired by Mirantis, who said at the time of the deal that it will continue to support the Docker Swarm orchestrator temporarily, but primarily focus on Kubernetes.]
IT buyers should understand, first and foremost, that a container deployment strategy equals container software, like Docker, plus container orchestration, like Kubernetes. Container orchestration tools, since they have to handle deployment on resources, are where the big differences between public cloud and data center container use focus.
The most popular container orchestration tools have both data center and public cloud implementations. The trend in today's market is to combine a complete set of container software tools into an ecosystem to simplify container operations. These ecosystems are available in the public cloud and as independent software systems. Always evaluate the use of one of these container ecosystems before deciding to assemble tools at the user level.
Editor's note: With extensive research into container management software, TechTarget editors focused this series of articles on vendors that provided the following functionalities: orchestration, container networking and hybrid cloud portability. We've featured vendors that either offer leading-edge unique technology or hold significant market share or interest from enterprises. Our research included Gartner and TechTarget surveys.
Major public cloud providers, such as AWS, Google and Microsoft, offer a variety of container hosting and management features, ranging from the ability to deploy containers on IaaS services, to managed container services that combine cloud hosting and container management. For the more architected and managed container services, Kubernetes is the universal element.
The container or Kubernetes ecosystem is growing in tools, sophistication and complexity, which is one reason for the increased popularity of managed Kubernetes services from cloud providers. New elements, including those focused on networking, monitoring and workflow management among containerized components, are added to the ecosystem almost daily. Service mesh technology, which fits in the latter category of elements, is perhaps the most important new container ecosystem feature, and one every user should review.
All these new elements, of course, make it more complex to assemble a container ecosystem and increase the interest in and the value of prepackaged ecosystems from cloud providers or software vendors. These prepackaged ecosystems also include support -- another critical consideration, given that most container tools are open source and don't include support on a per-tool basis.
Containers are the foundation of modern application design and development, which means it will be almost impossible for any IT organization to avoid a container commitment. Most, in fact, can expect to run everything on containers in the near future. The question, then, is how to best prepare.