How does the host OS affect the ability to move containers?

Containers allow administrators to easily move workloads across different platforms, but there are limitations.

How do containers handle live migration and workload balancing in the virtualized environment?

As with conventional VMs, containers can be migrated from one system to another. Such migrations can be performed on demand or automatically to support critical tasks, such as server workload balancing. The primary factor limiting migrations is the underlying host OS kernel. Since containers share a host OS kernel, the destination server must use an operating system with a compatible kernel. It doesn't necessarily need to be the same distribution or build, but the kernel must be the same; you can't run a Linux container on a Windows server -- at least not yet.

Containers offer more than just a way to virtualize an enterprise application. Container technology has provided system and application architects with a new approach to software development and deployment. On one level, containers use fewer computing resources than VM counterparts, and are faster and easier to create. This makes it possible to spin up more containers quickly to meet the needs of high-volume applications, such as Web servers.

But the impact of containers is even more important than just the ability to create or destroy lots of them easily. Container flexibility and scalability is increasingly leveraged in a microservices approach to software design. In traditional "monolithic" software design, every feature and function is integrated into the single application. When the bandwidth of certain features and functions is exceeded -- or the program can't handle any more users -- the enterprise needs to deploy another iteration of the entire application in order to scale the software. This is a costly and inefficient approach to software design.

By architecting software in terms of discrete services -- application parts or components -- the varied parts of an application can be distributed across multiple containers, which are then connected logically to form the complete application. This allows the individual components to be patched or upgraded without impacting the other component containers. Even better, it is possible to create more containers to scale out only the features that need more capacity -- or even scale down the number of containers where a certain feature needs less capacity. This makes microservices-based software design an ideal match for container technology and results in highly-scalable, but highly-efficient applications. Microservices containers can still be migrated across compatible systems for workload balancing and application performance optimization.

Next Steps

VMware's microservices architecture

Are Docker containers a threat to VMs?

Five downsides to container technology

Dig Deeper on Application virtualization