Docker is a container engine for developing, managing, and running OCI containers for applications. Use this tag for questions on how to build and run container images, as well as how to properly configure Docker containers.

Docker provides a suite of tools to build, ship, and run distributed applications in containers, using the default Linux container runtime (containerd).

The base for a Docker container is an image with a complete filesystem for the target application, including the required environment, settings etc.

Docker images can be customized or build from scratch using a dockerfile. When the image is run with Docker, it is contained in its own runtime environment in a container. During the lifecycle of the container, any changes to the images are written as an overlay filesystem (overlayfs).

Since images are static, and containers use the kernel of the host system, Docker containers are extremely efficient, and it only takes a few seconds to start a new instance of Ubuntu or any other distribution with Docker.

There is a huge number of ready-to-use containers available in the Docker HUB.

Official Docker documentation.