In this article, you will learn all about containers, containerization, Docker (a container platform), and Kubernetes (a container orchestrator).
If you’ve seen these words being thrown around but want to understand a little more, without diving into the deep end, you’re in the right place! To stay up-to-date about the latest tech breakthroughs and best practices, subscribe to our newsletter!
What are Containers?
Containers have exploded in popularity over the last 5-6 years. But we can’t start there. To properly understand containers, we need to step back and evaluate virtual machines (VMs).
A virtual machine abstracts away the physical computer hardware. The computers you use run a single operating system. But using VMs, you can take one computer or one server and run multiple operating systems and applications in parallel.
For instance, a cloud host will utilize VMs to turn one physical server into many specifically provisioned environments for customers (in this case, 1 VM per customer).
Containers are the logical extension of this concept. A container allows a specific app and its direct dependencies (the stuff needed to run the app) to be packaged together. They are packaged together into a small, portable container, hence the name!
Containers are smaller, lighter, and much faster than VMs. It can take hours to spin up a VM, whereas containers can be launched and taken down in seconds. Containers also offer additional layers of security for your application, and when deployed can provide advanced scalability.
What is Docker?
Docker Inc. is a San Francisco-based tech company founded in 2013. While the company did not invent containers per se, Docker did build an end-to-end product with an intuitive developer experience. This product differentiation enabled their rapid growth.
Here are some key terms...
- Docker Inc.: The company, which has raised $270 million to date
- Docker: Platform that developers and system administrators use
- Docker Engine: Open source containerization and workflow technology
- Docker Hub: Software as a service (SaaS) offering for managing containerized apps
- Docker Image: A set of files that has no state
- Docker Container: The instantiation, or run-time instance, of a Docker Image
Docker is essentially the Klenex of code containers, and has been at the forefront of the growth of the technology. In 2017, Docker owned 99% of container market share.
While its hold on the market has dwindled slightly, the overall usage continues to grow (a 2018 study shows 80% of enterprises are now using container technologies) and Docker retains a dominant hold on the market.
Lastly, for those interested, a more technical explanation of Docker’s architecture is available here.
What is Kubernetes?
Here’s a secret that we’ll share with you: Docker and Kubernetes are not competitors! So everyone can stop searching Docker vs Kubernetes. These technologies provide different parts of the stack needed to create, manage, and scale containers.
Now, let’s dive into what Kubernetes is and how companies utilize Kubernetes in production.
Kubernetes is an open source container orchestration platform. While Docker containers are fast and portable, they do not provide all of the abilities that large organizations require. For example, Kubernetes would be leveraged to monitor application health, update app software, and spin up new containers to meet demand spikes.
In today’s fast-paced world, a single organization could have tens or hundreds of applications live at a time. Understanding how things are performing – in real-time – is a huge benefit of Kubernetes.
As such, there is no trade off between "Docker containers" and "Kubernetes containers". In fact, many startups and enterprises today utilize Docker containers with Kubernetes orchestration. Due to the success of Kubernetes, Docker Inc. launched Docker Swarm.
Docker Swarm is the company’s in-house orchestration software. So Kubernetes works with Docker containers (and other containers), while also competing against Docker Swarm.
This was a quick dive into containers, Docker, and Kubernetes. Now you know the difference between VMs and containers, and between Docker and Kubernetes. As mentioned above, nearly all enterprises are currently using containers or planning to use containers soon.
If you are interested in leveraging the power of containers for your organization, but don’t know where to start, contact Tragic Media for a free consultation.