Developers may come across various problems while working for a new application. The changement of environment where applications run, among other problems, may bring much headache to them. Applications rely on the configuration of infrastructure, including specific libraries, dependencies and files. A slight change in the environment may end in the abnormal performance of the application. However, it would cost extra time and energy to rewrite and fix across different environments, sometimes not possible. Is there some easy and quick solution for this problem? A container might be the answer.

A glimpse into What Container is and its History

A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another as it includes all the necessary libraries, dependencies and supporting files. In short words, a container can be used to separate application dependencies from infrastructure.

The idea of what we now call Container could be dated back to the year of 2000 when the technology of FreeBSD jails appeared. It provided a secure environment which could be shared by multiple users inside or outside a company.

In 2001, Jacques Gélinas’ Vserver Project implemented an isolated Linux environment as part of the effort to run “several general purpose Linux server on a single box with a high degree of Independence and security”. This is the foundation of what is today’s Linux container.

Container





In 2008, Docker made its debut by way of dotCloud which introduced many new concepts and standardized tools, allowing users to easily build new layered containers shared between different users.


What benefits a Container Offers?

Since Docker enters the market, it becomes very popular. In many aspects you can benefit from the container technology.

  • Agility. One of the biggest advantages of container technology is that it enables swifter deployment of instances compared to virtualization technology, which definitely result in efficiency enhancement. Every container is like an independent micro service, sparing you from the problem of synchronization;

  • Portability. Containers isolate applications from their environment and ensure that they work uniformly despite differences for instance between development and staging. Thanks to the portability of containers, you don’t have to worry about the problems arising from infrastructure changement;

  • Availability. Most containers are open sourced, available for both Linux and Windows-based applications;

  • Security. For a group of containers, each runs independently. The upgrading or other changement of one container will not affect others.

What Potential Side Effects in Container Technology?

  • Increased complexity. With the development of your business, more containers will be involved in the staging and production environment, which adds to the complexity of management. New management tools shall be introduced such as Kubernetes and Mesos.

  • Linux supporting only. Most container technologies, taking Docker for example, are based on Linux. When running containers in Microsoft/windows environment, it may not be as smooth as in a Linux environment;

  • Not mature. Comparatively speaking, container is a new comer in the market and is in the fasting developing period. You may be faced with the problem such as lack of technical documents, and it might take more time to find a solution to a new problem.

Admit it or not, since we ushered in the container technology, it has changed the cloud landscape. As of 2017, the software Docker has been downloaded for more than 13 billion times worldwide and many more large organizations like Aliyun, Huawei and IBM are devoting to the fast development of the container technology. Let us keep an eye for its performance in the near future!