What is Docker

Physical server to Virtual Machines

We have a big physical server 512 GB memory and 10TB storage

Using hypervisor technology we can create multiple virtual machines from physical server with different capacity

Server

Virtual Machine in detail

Here we can see 2 virtual machines are created,

Server-detail

Why we need to create multiple virtual machines from Physical server.

Isolation on Dependencies, application, project, Networking, security

Thinking on setting up CI/CD applications

You want to set up ci/cd applications like Jenkins, SonarQube, Jfrog artifactory

You are using old version of Jenkins application and it will support only on Java 11

You are using latest version of SonarQube 10.1 with requires minimum Java 17

cicd-server

Where docker comes into picture here ?

Docker is another isolation within the virtual machine

Within the Virtual machine, you can create multiple docker containers, which are isolated from each other.

Application dependencies are packaged within the docker container, no need to install in Virtual machine.

In virtual machine, only docker needs to be installed

cicd-server

We can create multiple containers until the capacity of the virtual machine fully utilized

Resources(Memory/cpu) in the virtual machine is shared across all containers

cicd-server