Docker is a set of platform-as-a-service products that use OS-level virtualization to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels.
Zap zap, the above definition might explain the technical details of docker but let's be honest, it's a little bit difficult to understand! right?
Suppose you need to supply the wine crates shipment for an offshore company and the company ordered the crates from 4 different vendors. So what do you do? You pack the bottles with the same vendor in crates and stack those crates onto a ship. You can also label the crates with the wine company logo sticker to identify which crate has which type of wine. Or you can also attach a bottle cap at one end of a crate connected to a wine bottle inside through which you get a sip of the type of wine the crate contains. We could have also sent the bottles without packaging but that would result in an unorganized pile of bottles that are prone to breakage.
Now, let's imagine that the wine bottles are the processes or services and the crate is the final app we built for our use case. It can be a web app, mobile app analogous to the vendor tags on crates. So docker provides us with that shipment on which we can package our apps to easily deliver to the client for the use. Furthermore, you can also expose the inner ports like the bottle cap above to interact with a process running inside docker container. Now we could have sent the project files or zip files to the client to run, which is prone to changing or dependency errors as client does not know neither does he need to know how to assemble the code to make it work. He can just start the container like opening the cap of wine bottle to consume the app.
Hope this helps out a bit in understanding the docker.
Top comments (0)