Behind each technology, a company. Google, Hashicorp, Docker inc, and Apache. Each one is willing to win the day and add a feather in their cap.
The global application container market was expected to grow from 1.2 billion USD in 2018 to 4.98 billion USD by 2023, at a compound annual growth rate of 32.9% during the forecast period.
Which orchestration system will win the war? Who's going to have the lion's share?
Will the winner take all? Or will there be multiple winners?
It is all obvious now, Elvis has left the building, and some technologies weren't able to cut the mustard. But back then, this topic was a hot potato in the computing world.
Docker and containers already entered the mainstream conversation. Docker inc pulled a rabbit out of the hat, and with their containerization technology, they solved a lot of problems. A puzzle that most other container systems partially solve.
However, there were still some questions. Questions like "how do we use it in production?", "How do we automate it?" and "How do we spread containers between virtual machines?".
I'm your host Kassandra Russel and today, you will get your free ticket to travel back to the 50's, to discover the first containers, then go back to the 70's and so on until the present day.
We are going to go through the interesting history of containerization and discover how it has evolved. We will talk about the containers orchestration systems. Docker and the problems it solved. We are going to understand why Docker and containers became a big deal and finally, we'll wrap up with the history of Kubernetes.
Before we dig deeper into container orchestration and why there was a race for market share in container orchestration. Let's go back to 1979 when we started using the "Change Root" Jail or what it's known as chroot Jail and is considered to be one of the first containerization technologies.
In a nutshell, Chroot Jail allows you to isolate a process and its children from the rest of the operating system. However, this can easily be circumvented and was never intended to be a security mechanism. That all changed with the introduction of FreeBSD Jail.
FreeBSD Jail allows you to isolate not only processes but jail-binds it to a particular filesystem. But why? Why does someone need this isolation?
There are many reasons.
Take, for example, an FTP administrator who needs to have isolated environments for different users within the system. Or simply take the example of a user who wants to have their own home folder in a shared computer.
This marked the start of containerization.
It was 1952, Malcolm Mclean was developing plans to carry his company's trucks into ships along the US Atlantic coast from North Carolina to New York. However, he soon noticed that there are a lot of vacant spaces on the ship due to the shape and size of trucks. The irregular chassis of these trucks caused a lower number of them being able to fit in the ships.
Instead of the whole truck loaded in, Malcolm started the best thing since sliced bread. He thought about using just the cargo part of the truck, which was shaped rectangular. A lot more of these containers will fit in the ships.
In the 1950's most cargoes were loaded and unloaded by hand by longshoremen. It was expensive. With this new system, we are able to move cargo efficiently. Fortunately for us, it did not stop there.
He championed standardization, and his efforts were rewarded, patents were awarded to him. The best thing he did was he made his patent royalty-free and available to the International Organization for Standardization.
This started the worldwide shipping containerization boom that we still benefit from today.
How does Malcolm's achievement in the shipping industry relate to containerization in the computing industry?
Both of them went through a rough patch and had a million and one problems like the insufficiency of efficiency.
Containerization, here and there, solved the same problem. After all, as we say, "trouble shared is trouble halved."
When the operating system-level virtualization capabilities were added to the Linux kernel, Linux VServer was introduced in 2001, and it used both a chroot-like mechanism combined with "security contexts" and operating system-level virtualization to provide a virtualization solution. It is more advanced than the simple chroot, and it lets you run multiple Linux distributions on a single distribution.
In 2004, Sun Microsystems, later acquired by Oracle, released Solaris Containers, an implementation of Linux-Vserver for X86 and SPARC processors.
A Solaris Container is actually a combination of system resource controls and the boundary separation provided by what we call "zone."
In a similar vein, OpenVZ, another technology was able to solve these problems.
Many companies started selling Virtualized Private Servers based on top of these two technologies. The containerized environment nature of these servers was a testament to the success of containerization.
The only problem at that time was that Linux-VServer and OpenVZ required patching the Kernel to add some control mechanisms used to create an isolated container.
In 2007, Google released CGroups, a mechanism that limits and isolates the resource usage like CPU, memory, disk I/O and network of a collection of processes. Unlike the predecessors, CGroups was adopted into the Linux Kernel.
In 2008, LXC, also known as Linux Containers, was released. LXC leveraged the functionalities of the Kernel using CGroups to create containers. Later on, Docker was built on top of LXC Technology.
Then, CloudFoundry created Warden in 2013, an API to manage isolated, ephemeral, and resource-controlled environments. In its first versions, Warden used LXC.
In 2013, the first version of Docker was introduced. It performs, like OpenVZ and Solaris Containers, operating-system-level virtualization.
In 2014, Google introduced "Let Me Contain That For You," the open-source version of Google's container stack, which provides Linux application containers.
Later on, Google engineers have been collaborating with Docker over libcontainer and porting the core concepts and abstractions to libcontainer. So, the project is not actively being developed.
"Let Me Contain That For You" runs applications in isolated environments on the same Kernel and without patching it since it uses CGroups, Namespaces, and other Linux Kernel features.
Google is a leader in the container industry. Everything at Google runs on containers.
According to the "Register," more than 2 billion containers run on Google infrastructure every week.
2 billion! Yes. If the number is too big to be perceived, imagine that for every second of every minute of every hour of every day, Google fires up 3,300 containers.. and that was in 2014.
If all these existing container technologies solved the problems of isolation, portability, and efficiency, what sets Docker apart? How did Docker become popular?