A beginners guide to Docker
I saw this topic listed as one of the next articles a few of us would like to read. As I have only just completed an introduction to Docker, I thought I would give it a go.
What is Docker?
There are many definitions that leave one more confused than knowledgeable. The problem is not that these definitions seek to be ambiguous, there simply isn't an easy way to define Docker in the traditional "explain it to me like I'm a four-year-old" manner. To that end, and for better or worse, here is my understanding.
Docker is a way of isolating an app/service from a host system to make it somewhat independent. This is done by packaging everything that the app/service needs (including the app itself) into an image. This then means one can send that image to anyone and it will run as you expect it to.
Docker can also be compared to creating a virtual machine image. In the case of a virtual machine image, you would include everything from the operating system to the dependencies of your app/service and app itself. While a Docker image would only include your app/service and what it needs to function (without the full operating system). Needless to say, you can already imagine the obvious file size benefit of packaging only your app and what it needs versus an entire operating system.
Above is a very basic description of what Docker is. To get a better understanding of Docker, you will need to delve deeper into the vast amounts of documentation and video tutorials that can be found on the internet.
Additional reading and/or study
To help you, here are the two that I am currently using to learn this very topic. The first is a youtube video.
The second is a site that has proven quite useful in explaining the behind the scenes of how Docker works kotaCoda
Finally, for a more in-depth insight into what Docker is, and without jumping into a tutorial, you can read the following article on medium. I should point out that I am in no way affiliated with the author of that article.
I hope this helps.