Containers have been growing in popularity for some time now, especially as more vendors offer different types...
of containers and orchestration. If you're still hesitant to adopt containers, you're not alone. Just like with VMs, containers have their drawbacks, and it might not make sense to deploy them in your environment. Before you write them off as simply a hot topic, consider the many benefits they offer: scalability, portability and fast deployment, just to name a few. With these five tips, you'll be better equipped to decide whether to use containers.
Understand container technology
Before you decide to use containers, you need to understand the difference between containers and VMs and the challenges that come with adopting this technology. Essentially, the difference lies in the level of isolation each instance type provides. With traditional virtualization, VMs sit on top of the hypervisor, which abstracts compute, memory, network and storage resources from the underlying hardware. Each VM runs its own copy of the OS and operates independently from other VMs. Containers, on the other hand, share the same OS files, directories and services. Because containers don't require copies of the OS, they are much smaller and use fewer resources than VMs, but there's a catch. Security is a big concern when you use containers due to the shared OS. If one container is compromised, the OS and other containers might also be at risk. As such, it's important to consider the type of application you intend to deploy in containers before adopting them.
Deploy containerized applications
Containers are growing in popularity, but that doesn't mean they are the best option for every workload. Mission-critical workloads and large, monolithic applications are typically best left to VMs, partially because of the isolation they provide. Applications that are cleanly divided and straightforward benefit from the speed with which containers can be spun up and down, as well as their portability. Microservices, in particular, pair very well with containers. Those applications that use multiple configuration files and drive multiple processes are difficult to containerize, but the real challenge comes from self-modifying codebases with distributed configuration and data files. A complete redesign might be needed for those applications before they can be deployed in containers. Each application is different, though, so test the deployment before putting it into production to see what works and what doesn't.
Adopt a container platform
There are several vendors that offer container platforms; to find the one that best meets your needs, evaluate OS support, security, portability and community support. Docker is perhaps the most well-known container platform. It's open source, offering support for Windows Server 2016 and OS X via Linux VMs. Docker containers are prepackaged, preconfigured and come with the necessary libraries and dependencies to run apps. Microsoft offers two container types: Windows Server containers and Hyper-V containers. Windows Server containers run on bare metal, while Hyper-V containers are packaged within VMs to provide more isolation. CoreOS Rkt is a lesser-known container platform that runs Docker and Open Containers Initiative images and supports Security-Enhanced Linux. These are just a few of the options available if you decide to use containers; remember to thoroughly research each platform to ensure compatibility with existing infrastructure.
Use container management tools
For as many container platforms that there are, there are just as many container orchestration tools from which to choose. Supported by cloud providers, like Microsoft Azure and Google Cloud Platform, open source Kubernetes provides automation, scaling and management for containers. Docker offers several container management tools, including Compose and Swarm, which define multicontainer applications and organize and manage containers across multihost systems, respectively. Additional container orchestration platforms include Apache Mesos, Google Container Engine, Deis, Amazon EC2 Container Service and Red Hat OpenShift, just to name a few. Consider different third-party tools as well. Many of them offer container workflow, orchestration, scheduling, storage and networking capabilities. No matter the platform you choose, you'll have a helping hand in organizing, tracking and monitoring container instances in your virtual environment.
Troubleshoot container issues
Even if you know container technology inside and out and have carefully chosen not only the container platform and management tool you're using, but also the applications you decide to deploy to containers, you're bound to run into issues at some point. Because of how quickly containers are spun up and down, it can be difficult to determine how they affect application workloads. When it comes time to assess performance, start by examining usage patterns. Note how many containers are running at what times of day, where they are deployed and how container activity is affecting compute resources. Application performance monitoring software can be a big help throughout this process. Check the logs for any errors or alerts. Also, track any container interdependencies to see how a change in one container cluster affects container clusters upstream and downstream. The key to troubleshooting container performance issues is to keep up with the speed and scalability this technology is known for.
Decide where to run containers
Learn more about Windows Server containers