Link

So many ‘Dockers’, so little time

One of the first barriers in learning Docker is identifying all the elements of its ecosystem, many of which share the same core name. This walkthrough aims to disambiguate those pieces of the puzzle.

What's Docker meme

Docker operates using a client-server setup, where the Docker client can connect to the Docker host either locally or remotely. Both the Docker client and host (daemon) can reside on the same machine, or they can be on separate systems and communicate through sockets or a REST API.

The Docker client serves as the primary means of interaction for many Docker users. By issuing commands such as “docker run”, the client sends instructions to the Docker daemon which then executes them. The Docker API is used by the Docker command (CLI). It is possible for the Docker client to connect with multiple daemons simultaneously

Docker Engine

Docker Engine can be thought of, appropriately enough, as the “engine” upon which Docker images and their resulting containers are run.

Built on containerd and robustly interoperable across systems, this is the “main event” of Docker, with three main subcomponents:

dockerd Daemon

dockerd is the name for the persistent process, or daemon, behind the Docker Engine. This is also sometimes referred to as the Docker client.

Docker CLI

Docker CLI is the command line interface that you run in a terminal or shell with the simple command ‘docker’. Following Linux norms, once you have Docker CLI installed you can enter ‘docker help’ to view its man page, or list of available commands and options.

Docker API

Docker Engine API is a Representational State Transfer Application Programming Interface, or a REST API.

This makes it easier for programmers to build applications which interface with Docker Engine. Learn more about Web APIs here.

Docker Desktop

Docker Desktop is a desktop application available for MacOS or Windows, to provide an easier workflow for the Linux-centric Docker ecosystem.

Docker Apps

Docker App provides Docker Engine’s CLI with a plug-in allowing the ‘docker app’ command to essentially containerize app development, making it simpler to build the Docker workflow into application development.

Docker-Compose

Docker-Compose is the most frequently used tool across environments for more complex interaction with Docker Apps. Check out the Compose documentation for more.

Docker Hub

Docker Hub is the most prominent of available registries for exploring and sharing container images, kind of like Github for Docker.

Docker Swarm

Rather than a tool or platform, Docker Swarm, or swarm mode, is exactly what it sounds like: central management of a cluster of Docker Engines controlled through Docker CLI.

Docker Swarm isn't that widely adopted

Docker Platform Beyond Docker Variants

The Docker platform also contains other crucial tooling, not all of which has the name “Docker” in it. One example is Kubernetes, an “orchestration platform” for coordinating shared infrastructure and operations around containers.

Similarly, Notary is a Docker platform tool which enables users to sign collections of content, verify their integrity, and confirm their origin.

Finally, Docker Credential Helpers is a suite of smaller programs to help keep login credentials safe.

Putting It All Together

If you’re still confused about the different moving parts when interacting with Docker, their documentation has a great diagram of the overall architecture.