Docker started off as a side project at dotCloud, a Platform-as-a-Service company often compared to Heroku. Some people think that Docker is some virtualization tool like VMWare or VirtualBox. Some people think it’s a VM manager that helps you manage Virtual Machines like Vagrant. Some people think it’s a configuration management tool much like Chef, Ansible, or Puppet. But it's its own category, so it’s not comparible to any existing tool.
What is Docker?
Docker is an open platform for developing, shipping, and running applications. Docker is designed to deliver your applications faster. With Docker you can separate your applications from your infrastructure and treat your infrastructure like a managed application. Docker helps you ship code faster, test faster, deploy faster, and shorten the cycle between writing code and running code.
Docker is an open platform for developing, shipping, and running applications. Docker is designed to deliver your applications faster. With Docker you can separate your applications from your infrastructure and treat your infrastructure like a managed application. Docker helps you ship code faster, test faster, deploy faster, and shorten the cycle between writing code and running code.
Docker does this by combining kernel containerization features with workflows and tooling that help you manage and deploy your applications.
There are two big pieces to Docker: The Docker Engine, which is the Docker binary that’s running on your local machine and servers and does the work to run your software. The Docker Hub, which is a website and cloud service that makes it easy for everyone to share their docker images.
At its core, Docker provides a way to run almost any application securely isolated in a container. The isolation and security allow you to run many containers simultaneously on your host. The lightweight nature of containers, which run without the extra load of a hypervisor, means you can get more out of your hardware.
What Docker can do for you
Docker solves many of the same problem that a VM solves, plus some other that VMs could solve if they didn’t were so resource intensive. Here are some of the things that Docker can deal with:
The idea behind Docker is to create portable lightweight containers for software applications that can be run on any machine with Docker installed, regardless of the underlying OS.
- Isolating an application dependencies
- Creating an application image and replicating it
- Creating ready to start applications that are easily distributable
- Allowing easy and fast scalation of instances
- Testing out applications and disposing them afterwards
The idea behind Docker is to create portable lightweight containers for software applications that can be run on any machine with Docker installed, regardless of the underlying OS.
Virtual Machines vs Docker
Let’s take a look at how VM works.
Above diagram shows how a traditional VM is configured for running software applications. The Hypervisor is the layer that does actual virtualization, in which it takes computing resources from the Host Operating System and use them to create fake virtual hardware that will be then consumed by Guest Operating Systems. Once you have the guest OS installed, you can actually install your software applications, binaries, and libraries supported.
VMs are great for providing complete isolation of the Host OS, where if something goes wrong in an application or your guest OS, it won’t impact the host OS or screw up the other guest OSs. However, all this comes at a great cost, because ultimately the server that’s running the stack has to pay a huge amount of computing resources to the virtual app.
With Docker, you’d have a thinner layer:
The rule of thumb in Docker world is to have one Docker container running on your server for each process.
Please feel free to post your comments and queries along with your feedback about the article. It'll help us to improve the content.
0 comments