Docker, an open source internal project was initiated by a platform as a service company named DotCloud by Solomon Hykes in France. It was released on March 2013. One year later, the docker dropped its default execution LXC and replaced it with its own lib containers, written in Go programming language. It is the 20 most-starred GitHub projects, in 2015 the project had 6800 forks, 25600 GitHub stars, and nearly 1,100 contributors.
Dockers are open source tool that uses the container to create, deploy and run applications. It virtualizes a software by wrapping it in a complete file system that has everything in it to make it run. The containers enable a developer to package all the parts of the application such as code, runtime, system tools and system libraries etc. all ship into one package.
It virtualizes only the components but does require an entire virtual operating system to work, it uses the Linux kernel as the system for the applications to run, and the only requirement is an application to be shipped with things that are not running on the host computer. The developer is assured of seamless running application irrespective of the customized settings of the machine that differs from the machine in which the code has been written and tested. This ensures the software will always run irrespective of its environment. This software containerization platform uses the Linux kernel’s resource isolation attribute such as groups and kernel namespaces and along with a union-capable file system – aufs and others to enable the containers to run the application independently in single Linux, thus reducing the overhead of starting and maintaining different virtual machines.
It is an effective tool for both the developers and the system administrator. The developer can write their codes without thinking about the system ultimately on which it would be running on as they can run on any Linux server. It also helps them to run their thousands of codes already designed in the docksized containers as part of their application. For the system administrator, it gives flexibility and portability on where to run the applications, whether on a private cloud, premises, public cloud etc., thus reducing the number of systems needed and overhead cost.
Features of docker:
1. Optimal space : The containers share some operating system kernel as these are running on a single machine get starts quickly and thus require less RAM. As the images are constructed from the layered filesystem and share common files it makes image download and disk usage more effective and efficient.
2. Open source : It can work on the top of any infrastructure, as the containers are based on open standards thus enabling it to run on most Linux distribution.
3. Security : The applications are much secured as docker isolates application from other application and their underlying infrastructure. No separate operating system is required as it relies on Linux kernel and uses resource isolation (CPU, network, I/O block) and separate namespaces to isolate operating system application view.
4. Access : It uses libcontainers available as docker 0.9 directly or Linux containers, libvirt or system-n spawn to access the Linux kernel‘s virtualization features.
5. Integration : It can be integrated into varied infrastructure tools that include Google Cloud Platform, Amazon Web Services, IBM Bluemix puppet, Vagrant etc.
Hope the article was interesting and informative. You can just start with hands-on session with the Docker app.