create and configure lightweight, reproducible, and portable development environments. Build virtual cloud on your workstation. Image source: laracast.com
virtualisation which entails creating a virtual version of a machine with its own OS inside a simulated hardware environment i.e. a whole new OS is started on your machine with its own kernel, ports, filesystem e.t.c. Virtualisation is enabled using an hypervisor which also uses part of the host’s resources.
containerisation which entails encapsulating/packaging an application in a container with its own operating environment. Containerisation allows multiple applications to run in isolated partitions of a single Linux kernel running directly on the physical hardware. Containers reuse kernel, ports and other low level resources of your machine instead dispatching their own.
overhead. • Containers work like just any other process on the host machine, thereby using little host resources when compared to VM’s. • Cached build processes. Faster instantiation time. • Kernel between all instances are shared which makes it lightweight. • Requires a static amount of resources (CPU, RAM e.t.c.) to the VM’s, and the hypervisor uses a lot of resources. • Better integration with Config Mgt tools like Chef, Ansible and Puppet. • Application resources are well isolated thereby achieving near-complete separation. • Runs a wide variety of boxes from Ubuntu, CentOS, WIndows, Solaris e.t.c