Docker is a container technology: A tool for creating and managing containers
Container is a standardized piece of software.
The container includes a package of code and dependencies to run that code.
The same container will always yield the same application.
Containers are self-contained and isolated
One of the main goals of Docker is to have the same development and production environment.
The second goal of Docker is to have the same environment within a development team.
The third goal is to avoid problems with different versions between projects.
The main problems with virtual machines are wasted space and performance issues.
VM's contain their own OS, but containers don't.
Docker is just a tool, the focus is on containers.
Docker Desktop is just a tool that checks if Docker Engine is working correctly (daemon - a process which keeps running and checks Docker, docker's heart and includes CLI)
We installed the docker engine which includes a VM that runs Linux which then runs Docker
Every container has its own file system
docker stop <name> to stop the container
docker ps - to list all running container
By default there isn't connection with our localhost and container port, we need to connect it with -p port:port option
By default, container is isolated from other environment
Docker ps -a is to list all processes
Common practice is to build upon pre-existing images