Docker is worlds leading software container platform.That’s how they defined docker on their official web site.Since I am also exploring Docker this post will be little bit introductory one.In next post I will go deep of the docker with other features like Docker Swam.
What is a container?
As we know container is a large box that we can put goods in that .Those containers make easy to transport goods here and there and it increase portability of those goods.
What is a virtual machine ?
Virtual machine is a machine that is not real.We can define it as a machine that have attributes of physical machines but physically not exists.Virtual machines are running on another real/virtual machine.Simply we can make a virtual machine on our desktop operating system by VM Ware or Virtual Box and do different set of applications in it.
What is a software container ?
Software container is space that contains all parts/ dependencies of specific software to run independently.It is like a Light weight Virtual Machine because it does not bundle full operating system. Docker bundles only libraries and settings that need to run particular software.
Virtual Machine concept is not a silver bullet because in virtual machine concept we have to reinstall a full operating system on hosting machine.We can make make multiple Virtual machines as well but all these operating systems take acquire big capacity of hard and RAM and CPU power.
But in docker it makes containers that bundle with minimum operating system services.It runs on a docker engine.And it does not matter what operating system is running as the host operating system.
When we dockerize our application it wrap up everything required to run specific application and put it into a container ,Then after we can ship it to any environment to run. we do not need to worry about the dependencies and configurations at all.
We can make development process easier using Docker.In development process most of developers use Docker to eliminate Dependencies and configurations problems.It is really helpful when we work as a team because docker can minimize the possibility that we can get an error.Also docker can save time by minimizing repetitive tasks.
Assume that you and your team working on a big application and you wanted to setup one part of your application on your machine that built by another developer.If we are not using Docker we have to manually setup and configure specific application in our machine.But with docker we can dockerize that application and distribute among other developers.other developers can easily setup and run the container by executing few commands.
When we are building big systems sometimes we have to use different versions of same library/dependency in our application.We cannot accommodate these kind of requirements If we running whole application in one container.We can do this in containerized landscape because we can run each and every service in separate isolated containers.
Isolation is one concept that comes with Docker, there are many more things to discus such as cGroups, namespaces, Capabilities. We will discuss these topics in next posts.
I think this post helps beginners to understand super basics of Docker.