https://www.youtube.com/watch?v=gAkwW2tuIqE
A baseline way of explaining it is that it’s a way to package software so it can run on any software.
It prevent issues of dependencies version issues & complications. It reproduces environments, this works by having the developer define the environment so that any point can use the dockerfile to rebuild the environment (saved as an immutable snapshot known as an image)
It is cloud native, you upload the image to the cloud and any dev or server who wants to run that software can pull the image down to create a container which is just a running process of the image. (one image file can spawn multiple containers/processes in multiple times & multiple places.
This is where kubernetes is useful as they manage containers to scale to an infinite workload!
The first command you should memorize!
$ docker ps

Shows all the running containers on your system