Under the hood, Docker is built around a long-running background process called the Docker daemon, often invoked as dockerd. The daemon is the engine that creates and manages Docker objects such as images, containers, networks, and volumes, and it exposes its functionality through a REST API. Client tools, including the docker command-line interface, communicate with the daemon over this API to perform actions on the user's behalf.
Installing Docker on a Linux system such as Ubuntu involves a few well-defined steps. You add Docker's official GPG key, configure the package repository, refresh the package index, and then install the docker-ce package using sudo apt install docker-ce. After installation, the Docker service is started and enabled so that the daemon runs automatically on boot, ready to accept requests from the CLI.
Once Docker is installed, a small set of commands is enough to inspect and download images. The docker images command, also written as docker image ls, lists all images stored locally along with their repository names, tags, image IDs, and sizes. To obtain an image from a registry like Docker Hub, you use docker pull followed by the image name, which downloads the image and stores it locally so it can be turned into a container. The docker inspect command is a general-purpose debugging tool that returns detailed JSON information about any Docker object, whether that object is a container, an image, a volume, or a network.