Virtualization versus Containerization
This block diagram gives an overview of a typical virtual machine setup:
In virtual machines, the physical hardware is abstracted, therefore we have many servers running on one server. A hypervisor helps do this.
Virtual machines do sometimes take time to start up and are expensive in capacity (they can be GBs in size), although the greatest advantage they have over containers is the ability to run different Linux distributions such as CentOS instead of just Ubuntu:
In containerization, it is only the app layer (where code and dependencies are packaged) that is abstracted, making it possible for many containers to run on the same OS kernel but on separate user space.
Containers use less space and boot fast. This makes development easier, since you can delete and start up containers on the fly without considering how much server or developer working space you have.
Let's begin the lesson with a quick overview on how Docker comes into play in a DevOps workflow and the Docker environment.