Container history

I will explain about the need of docker technology and history of containers. The other details that you will need to get started is already available in the official documentation of docker here.

History of containers

It was 1979 when the concept of containers first emerged. More than a decade ago when there was a requirement of a new application. A brand new server would be necessary. Then it was required to decide how large the server would be needed. There would be one server per application. The company would usually end up buying servers larger than needed. The point is that a lot of resources was wasted in infrastructure setup.

Virtual Machines

What is VM (virtual machines) ? It is a set of software (read virtualization software) that creates an abstract layer over computer hardware that allows the hardware elements of a single computer like memory, processors, storage etc. to be divided into multiple virtual computers, commonly called virtual machines. VMware Inc, came up with virtual machines that would enable us to run multiple applications on a single server see the picture below. This would save a lot of money for companies.

Article content
Physical server with multiple virtual machines


As seen clearly in the picture all VMs require their own operating system (OS) which is main disadvantage. As every OS needs memory, storage that could be used to provide resources for applications. The overhead of OS is that it needs monitoring and licensing, also patching. Patching is defined as updates that address security vulnerabilities in OS. There point is a lot of resources and effort is wasted in VMs as well. To overcome the problem of VMs containers were introduced.

Containers

Google has been using containers for Gmail, YouTube and any search since very long. This was done to cater the shortcomings of VM. The main difference between container and VM is that container share the OS. This saves on the memory, CPU and storage. Significantly reduce licensing, monitoring and patching cost. It saves lot of money for the company.

Article content
Containers share the operating system of physical server


The absence of OS is what makes containers light weight and portable.

What is Docker?

Docker started with a company and not a technology. It was called dotCloud, Inc. If you say docker you may mean these things — Docker Inc company, the technology and docker open source project.

Docker, Inc

It is an American technology company that automates code inside containers. The major product include Docker Hub, a repository for containers, Docker Desktop a user interface application for windows platform. It was started as a Platform as a service (PaaS) provider named dotCloud. It used Linux containers (LXC), that was first introduced in 2008. It was the implementation of Linux container manager. It used control groups (cgroups). Cgroups was launched by Google in 2006 for limiting, accounting and isolating resource usage. LXC works on single Linux kernel that doesn't require any patches. These containers were created and managed by an internal tool named Docker. The dotCloud company was not doing well until 2013. They made their inhouse containers public and as a product which we all know is very profitable now.

The docker as technology

When we talk about Docker as a technology we refer to the Docker Engine. It is a software that runs and manages containers. It can be thought as a core container runtime that runs containers. It can be downloaded from docker website here. The Docker Engine comes in two editions:

  • Enterprise Edition — This is the licensed edition that has comparatively less frequent release cycle, additional features and official support.
  • Community Edition — This is the open source edition which involves a lot of contributions, quick release cycles.

As an open source

It is an open source docker project it was renamed as Moby project. It provides the set of tools, components and assemblies for container based system. You can see the list of Moby projects here. You are free to download it as it is an open source. Most of the projects are written in Go programming language.

Conclusion

In this article we have seen the evolution of containers. Whenever there was a need of application there was a new server bought by companies. That required a lot of resources and overhead. Then came VMs that made possible to run multiple application on single server. The disadvantage of VMs are that it needs separate OS. To overcome this issue containers were introduced. The containers are light weight as they share OS. Containers were difficult to implement initially. Then Docker Inc came up with container virtualization technologies.

We learned about Docker Inc, company. Docker was the first initiator of container. As docker is an open source that is available in moby repository on GitHub.

To view or add a comment, sign in

More articles by Megha Sahay

  • A gentle introduction to Java Script

    JavaScript is a versatile, high-level programming language that's widely used in web development. It can be used to add…

  • Stack vs Heap - Understanding memory in C#

    Managing memory in important for any programming language. This impacts both reliability and performance of a…

    1 Comment
  • Performance improvement for React based apps

    Hello everyone welcome to this weeks post. In this week we will discuss few points that will improve the performance of…

  • Understanding Ransomware

    In this issue of newsletter we will explore ransomware. I will provide an introduction to ransomware.

    1 Comment
  • Web API - An Introduction

    In this issue of newsletter we will explore the APIs. I will provide an introduction to API.

  • Docker - A beginners guide

    Docker is an open-source platform that allows developers to build, package, and deploy applications as lightweight…

  • C# Extension Methods

    In this week's newsletter we will take a closer look at extension methods in C#. By the end of this article you should…

    1 Comment
  • A Developer’s Dilemma: Selecting the Perfect Protocol - GraphQL, REST, gRPC or WebSockets?

    Selecting the ideal protocol for your unique Project Introduction Many software architects face problems to choose…

  • CQRS in C#

    In this edition of newsletter we will understand what is CQRS pattern with a sample clean architecture example. By the…

  • Implementing ORM with .Net

    We will look at implementing Object–relational mapping with Entity core framework. We will cover the following topics.

Insights from the community

Others also viewed

Explore topics