Docker is an open source platform that allows developers to build, package, test and deploy applications in form of containers. Docker products include Docker Enginer, Docker Desktop, Docker Compose, Docker Hub, Docker Scout, Docker Build Cloud etc.
Docker is written in Go and uses many Linux kernel features to deliver containerization technology.
Key Concepts
Images
Image is a read-only template with instructions to create a docker container. Most often, an image is based on another image and the developer do some customization on it. For example: we can create an image based on an existing ubuntu image and install apache server to host it as a file server.
Containers
Container is a runnable instance of a docker image. You can create, start, stop, move or delete a docker container using docker CLI or API commands. You can also connect a container to networks or attach a storage to the container.
Registries
Registries are where images are stored. Docker provides a public registry (Docker Hub) to store and retrieve images. You can also create your own private registries
Architecture
Docker uses a client-server architecture. Docker client (docker CLI or docker compose) talks to docker server (Docker daemon). Docker daemon does all the work like building and running docker containers. Docker daemon and client communicates using REST API over a UNIX socket or network interface.

Docker Desktop
Docker Desktop is an easy-to-install software for Mac/Windows/Linux that can be used to build and share docker containerized applications. It includes docker daemon, docker client, docker compose, docker content trust, kubernetes and credentials helper.
Docker Content Trust
Docker Content Trust provides the ability to use digital signatures to verify the data sent to and receivesd from remote registries. This allows run-time verification of the integrity of the images pulled from remote docker registries.