In a traditional data center, the resources required to run an application or workflow must be gathered and coordinated from every part of the environment. That involves corralling not only the server, networking and storage infrastructure required, but the operating system, all applications and systems that depend on that application, libraries, and configuration files.
That kind of complexity is exactly why containers are so popular in data centers today. With a container, everything required to run a process is combined together. Most commonly, containers are used to run databases and big data applications, and for application development. According to a recent report from the Cloud Foundry Foundation, containers are a key enabler as organizations adopt continuous delivery as part of their digital transformation.
There are many benefits to the container approach, including easy version control, a consistent environment from development through production, the speed at which they can be spun up and down (in milliseconds), and most importantly, the fact that they can be fully isolated from everything else going on in the data center.
In some cases, containers are even replacing virtual machines in the software defined data center. There are good reasons for doing so in some situations, but not in all cases. Here are some differences that can help make the decision:
If you are concerned about space, system resources and overhead: There is no question that virtual machines require more of each. Each VM runs a virtual copy of a full operating system and hardware, which containers only carry the resources required to run one specific application. It’s also possible to have thousands of containers on one machine, versus a fraction of that with virtual machines. Advantage: Containers
If speed is an issue: With applications involving massive amounts of data, the speed at which information can be processed can make a significant difference. Since a virtual machine must go through a full boot process, it can take several minutes to boot one up, versus milliseconds for a container. Advantage: Containers
If you want to be able to run multiple applications on multiple servers or use different operating systems for different applications: These are not strengths of the container model, which focuses on doing one job well. Advantage: Virtual Machines
If you want to run multiple copies of a single application: This is where efficiency and speed make the difference. Advantage: Containers
If security is your top priority: This is the area where containers are the weakest, at least for now. They aren’t as visible as virtual machines, which means that vulnerabilities can go unnoticed. And while containers share kernel resources and application libraries, the hardware housing VMs are more isolated. However, there are ways to make containers more secure. For example, developers can configure them to connect only with a designated private intranet, specify files as read-only or use other ways of locking them down. Advantage: Virtual Machines
There are clearly advantages to using both VMs and containers. There are good reasons to use each, and it makes sense for them to coexist in today’s in the software-defined data center.
Visit the VMware Cloud Services InfoCenter for more information, tools and advice on the journey through digital transformation.