Container Computing: A Primer
You’ve probably noticed that software runs differently in different computing environments and within different networks. It doesn’t matter if it’s the same software version; simply moving it around to various environments and platforms can cause a myriad of funky issues to arise.
For example, you may be testing software on, say, Bob’s laptop. But when Bob pushes the software into a data center environment, it just doesn’t seem to work quite right. Or, your development team may move software from the staging environment, where it runs smoothly, and into staging, where problems creep up. So, what gives?
While different versions of the software seem like the likely culprit, any number of changes can cause software to behave differently. Different environments and systems, after all, may have different network typography, changes in the security policies or even storage capacities.
The solution: a technology referred to as container computing.
What is container computing?
“Containers” refers to a technology designed to allow software to run when it’s moved from one environment to the next. It’s the entire runtime environment in one nifty package: the application (and all its dependencies, libraries and configuration files), lumped into one “container”. Keeping the platform and its dependencies together, or “container-izing” it, sidesteps the problem of worrying about how the software will react in different environments.
But be careful not to confuse container computing with virtualization. In virtualization, instead of a container getting moved around, it’s a virtual machine, which includes an OS and application. When a server runs virtual machines, there’s a hypervisor included and a separate OS per machine. However, one server running various containerized applications uses a single OS, with the kernel shared among all containers. Simply put: containers are a far more lightweight resource than what you typically get in a virtualized environment.
How container computing benefits companies
There are other benefits to container computing. For one, they’re small. We’re talking megabytes versus the gigabytes of memory required by a virtual machine. This makes them efficient; a single physical machine can support many containers when it may only be able to host a few virtual machines.
Plus, unlike virtual machines, which may take several minutes to boot up, containers frequently fire up in seconds. They can be used on an as-needed basis, versus draining resources.
And finally, there’s the opportunity for modularity. Complex applications don’t need to run within a single container. Instead, they can be split into modules if you choose—application there, the database there, and so on. Splitting it up allows for easier management, and this is the fastest-growing area of exploration our customers’ development teams are working on today.
Docker versus Kubernetes
Docker is a technology brand, largely credited with today’s container computing popularity. It’s a container platform, whereas Kubernetes (originally created by Google) is an open-source platform for container management. They both play in the same space, but they aren’t the same.
With Docker, you can create and run apps using “Dockerfiles” anywhere, almost instantly. And like containers are meant to do, your software will run the same no matter where you command it—your laptop, a production server, wherever. Kubernetes comes in once you want to step up your game and run multiple containers across multiple machines. Suddenly, there’s a lot more to manage, right? Well, Kubernetes’ goal is to simplify this management. Kubernetes takes the manual hassle out of the process, making it easy to have many containers work effortlessly together. This is referred to as orchestration.
(Note: Kubernetes isn’t the only container management option. Docker also has a container management arm, called Swarm. While Kubernetes can be used to manage Docker containers, it is not used for interaction with Swarm).
The modern cloud
Many of our clients work with and like virtual machines. And while VMs may be the preferred choice for certain environments or companies, we’re seeing an increase in the demand for easy-to-deploy solutions like containers. Container computing offers a minimalist approach to cloud management, they’re portable and just easy to use—all reasons why many IT professionals are exploring them as a solid alternative to virtual machines.
If you have a question about container computing or wish to explore if they are the right choice for your applications, IT1 can help.<< Back to Resources