Docker engine

Docker Engine is the core component of the Docker platform, responsible for running and managing containers on a host system. It consists of several key elements that work together to enable containerization:

  • Docker Daemon (dockerd): The Docker daemon, or dockerd, is a persistent background process that runs on the host system. It listens for Docker API requests from the Docker CLI, Docker Compose, or other Docker tools, and manages various Docker objects such as images, containers, volumes, networks, and plugins. The Docker daemon is responsible for creating, starting, stopping, and deleting containers, as well as managing their resources and configurations.
  • Docker CLI (docker): The Docker Command-Line Interface (CLI) is a user-friendly tool for interacting with the Docker Engine. It provides a set of commands for performing common container operations, such as building images, running containers, managing networks, and inspecting container logs. Users can use the Docker CLI to manage Docker objects both locally and remotely, allowing for easy integration with scripts and automation tools.
  • REST API: Docker Engine exposes a RESTful API that allows external clients to communicate with the Docker daemon and perform container-related operations programmatically. This API is used by various Docker client tools, third-party applications, and container orchestration platforms to interact with Docker Engine and manage containers across distributed environments.
  • Containerd: Containerd is a core component of Docker Engine responsible for container runtime management. It provides low-level container execution and supervision capabilities, including container lifecycle management, image distribution, and storage management. Containerd abstracts the complexities of container runtime operations and interacts with the host operating system's kernel to create and manage containers efficiently.
  • Runc: Runc is a lightweight container runtime implementation that Docker Engine uses to execute container processes. It follows the Open Container Initiative (OCI) specifications for container runtimes, ensuring compatibility with other containerization tools and platforms. Runc is responsible for setting up the container's environment, launching the container process, and managing its lifecycle according to the container's configuration.

Overall, Docker Engine serves as the foundation for containerization, providing the necessary tools and services for building, running, and managing containers. It abstracts the complexities of container management, enabling developers and operations teams to focus on building and deploying applications without worrying about the underlying infrastructure. Whether you're running containers on a single host or managing a large-scale containerized environment, Docker Engine offers a powerful and scalable solution for container orchestration and management.