If you are a software engineer or in some way related to software. Probably you already heard term Docker. Maybe you are even wondering so what is it? Or is it something that I could actually use? Hope this post will help you to understand what Docker is and why it’s needed.
Officially Docker is just a lightweight, open, secure platform. It doesn’t make much sense first time you hear this definition. So converted to human language Docker is the way to simplify a process of building, shipping and running applications in different environments. Shipping is really important part of Docker, because is provides standardised why to ship your application – like in a shipping container. Docker runs natively on Linux or Windows Server 2016+ as well.
Images and Containers
Images and containers are at the core of Docker, but what they really are? An image is something that is used to build a container. Image is just a blueprint of your application or as in definition: read-only template composed of layered filesystems used to share common files. It will hold files necessary to run your app on an operating system and files of application it self. Images is used to define how container of your application has to look, what it includes and how it is ordered. Containers are the place where live applications run or as in definition: an isolated and secured shipping container created from an image that can be run, started, stopped, moved, deleted.
Docker Containers vs Virtual Machines
Whats the difference between Docker Containers and Virtual Machines? DC vs VM? So virtual machines always run on top of host operating system. For example you have server with Linux installed and then to start VM you will need to run Guest OS on something called Hypervisor and on top of that OS you will have your app running and for another app you will need another Guest OS so each virtual machine will need to have a copy of operating system to run you application on. That’s a waste of resources and each setup up might be different so extra setup effort is need for each installation on your app. What about Docker Containers? Yes, they still sit on top of host operating system, but there is this layer in between called Docker Engine which can integrate the containers with a host OS, so container doesn’t need to have his own copy of operating system. That is way containers are way smaller than virtual machines and setup process is effortless compared to VM setup, it start/stops almost instantly too.