Docker is a container management tool. This is used to run the application in an efficient way (in terms of time and cost)
Container is an environment where an application can run, means all the dependencies needed for the application to run will be available in the container.
A human can send a valid docker command to a docker engine (contains docker client, API and docker server). Once docker engine verifies the command is valid it passes the corresponding actions to containerD which can further talk with the kernel.
A docker repository is available with many docker images which can be used as a base. Basically this image contains all the dependencies needed to run the application in a container. Docker uses OS kernel to run many containers on the same OS.
Containers bundle the application along with its dependency packages. It kind of providing a standalone environment to run the specific application.
Docker engine (Docker client - API - Docker
Docker Registry (From where the docker images can be downloaded)