Containers
To understand docker we should first understand the notion of containers
Containers are not new to software development industry and many developers and programmers have at least encountered one of these container technologies as Zones, BSD jails, LXC
Docker indeed is an open-source based on Linux containers which run on top of the operating system.
Docker Containers
A Docker container wraps the application with everything that the applications needs to run as dependencies such system libraries, or system tools and so on.
the images that Docker creates a read-write system over it,besides that Docker creates a network interface to make the communication possible between the container and the local host.
Difference between containers and VMs
what is VM?
To understand the difference between VMs and containers we should first understand how the VMs works:
According to Wikipedia VM:A virtual machine (VM) is an emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized hardware, software, or a combination.
In other words, it is a guest machine that is running on the host machine, which provides it with the needed platform to allow it to run
The main difference between Containers and VMs
The one big difference between containers and VMs is that how they are using the host system :
- the VMs tend to isolate from the host system's kernel and use it as just a platform
- the Containers tend to share the host system's Kernel with other containers
Why Docker becoming more popular
- Fast: very fast to set up and initiate in opposite of VMs which need more time because need to boot a whole virtual system
- Easy: very simple commands allows you to set your container that can run without worrying to be modified for that purpose
- Organisation: One application can be divided into different containers so you can have the data base in different container and your Rails app in another, and with Docker it is so easy to link different containers together.
Conclusion
Hope this article made the notion of containers more easy to understand, and the slight difference between VMs and Containers more clear