Containing Your Container Excitement
Containers are becoming mainstream as companies aim to cut costs and increase performance. And, with increased use of PaaS (Platform as a Service) offered by vendors such as Microsoft, Amazon and Google, organizations take advantage of built-in support for containers.
So, what are containers?
Containers are a method of operating system virtualization that provides the ability to run an application in resource-isolated processes. Containers can help package an application’s code, configurations, and dependencies into easy-to-use building blocks that deliver environmental consistency, operational efficiency, developer productivity, and version control.
Why use them?
- Containers help ensure that applications deploy quickly, reliably, and consistently regardless of deployment environment.
- Containers provide more granular control over resources, and thus improve infrastructure efficiency.
How do they work?
A container engine must be running on a server. This engine manages the containers, and sits on top of the host server OS. It starts and stops the container instances running on the host server. Here is a logical view:
The container engine manages the container instances (eg, the starts and stops).
Container images are read-only template files that describe what the container’s running application will look and act like along with the dependencies such as required libraries and binaries. The container engine uses these image files to create the container instance.
The container instance is the running implementation of the container image. It can be any number of things, such as:
- Application
- Service
- Database
Pros to using Containers
- Allows easier movement of an application across environments
- Runs within a process, thus allowing more instances of an application
- Starts up and scales quickly
Cons to using Containers
- Security can be a concern, as containers share the OS and kernel
- Networking access within containers can be more complex
Now what?
Migrating to containers is not for everyone nor for every scenario. Some legacy applications are not easily migrated, and it might makes sense to only move new applications to containers.
Docker and Google Kubernetes are currently two popular container management products. And, if you don’t want to do an on-premise install of the container engine and associated applications, excellent cloud-based container options are available with Microsoft Azure and Amazon AWS.
I’ve only scratched the surface on what containers are. Many tutorials are available; and as with many technologies, you can experiment on your own by either downloading container software or getting a free account on Azure or AWS.
In my next blog post, I’ll describe the differences between containers and virtual machines — it can get confusing since there are similarities.