There is classical virtualization, where you can get a reliable and reproducible copy of your environment by emulating hardware and running its own operating system. This works but has significant overhead because realistically you don’t need 10 different operating systems with 10 virtualized hardware devices to run 10 different apps on physical/virtual machine
Docker and its alternatives utilize the tools Linux gives you by cleanly separating your application from others, including various resources such as CPU, memory, disks, filesystems etc. while still providing the underlying operation system functionality without running multiple operation systems in parallel.
With that, you can create images – a filesystem which is just enough (best case scenario) to run your application and nothing more and run your apps as if that filesystem was a root filesystem.
Moreover, with tricks such as image layering you can even run 10 different apps while taking up barely more space than if you were to run one app, because best case scenario your apps shares 99% percent of system libraries and only differ by an actual application.
So essentially, docker IS lightweight virtualization, not in a technical sense, but from an intention endpoint.
Latest Answers