Docker and Containers
You might have heard people talking about Docker and related Containers, but might not fully understand what Docker and Containers actually are.
At the dawn of modern IT, we had only physical machines — mainframes and minicomputers which had multi-user capabilities. To effectively use these resources, the concept of time-sharing was invented. This idea was the genesis of what we call the modern “cloud”. Eventually, virtualization technology came to the PCs. Later data centers were filled to the brim with servers. With the introduction of new technologies, the total cost of ownership of a datacenter was drastically reduced.
Instead of thousands of physical servers, the entire datacenter footprint of a modern enterprise could be reduced to just a few hundred or even dozen virtual hosts.
Containerization also originated on what is called big iron systems. The first commercial implementation of containers was introduced as a feature within the Sun (now Oracle) Solaris 10 UNIX operating system called Zones. In a container, you are not running a complete instance or image of an operating system with kernels, drivers, and shared libraries.
Containers provide an isolated, discrete and separate space for applications to execute in memory and storage to reside and provide the appearance of an individual system, allowing each container to have its own system admins and group of users. However, because in a container you are not running a complete instance or image of an operating system, but instead an entire stack of containers. the containers only contain the applications, settings and storage that are needed for that application to run. This concept is also sometimes referred to as JeOS, or Just enough OS. Containerization is also referred to as Operating System-level Virtualization. A Linux containerization host runs Linux containers, and a Windows containerization host runs Windows containers.
Docker differs from other containerization technologies, in that it provides a way to “package” complex applications and upload them to public repositories, and subsequently download them into public or private clouds that run Docker hosts. Docker, using Swarm, provides native clustering capabilities so that containerization hosts can be grouped together. Microsoft has adopted and partnered with Docker as its containerization packaging standard for Azure, so that Linux Docker apps can run on their public cloud without any fuss.
Docker is an open-source project. Using Docker to create and manage containers makes it easier to create highly distributed systems by allowing multiple applications, worker tasks, and other processes to run autonomously on a single physical machine, or across a spectrum of virtual machines.