Skip to content

Common Docker Terminologies


While you are just starting or even with a little experience, sometimes you get overwhelmed by Docker terminologies. But it’s good to adapt it now rather than keep coming back later.

Docker Terminologies

Here’s a plain-English mental model for the major Docker termsโ€”focused on what each thing actually does, rather than textbook definitions.

Major Docker Terminologies

TermEasy definitionThink of it asโ€ฆ
DockerfileA text file containing instructions for how to build an image.๐Ÿ“œ Recipe
Docker ImageA packaged, read-only blueprint containing your app, its dependencies, libraries, and filesystem needed to create containers.๐Ÿ“ฆ Template / Package
Docker ContainerA running (or stopped) instance created from an image. It’s where your application actually runs.๐Ÿ  Running instance
Docker ClientThe thing you interact with when you type commands like docker run or docker build. It sends your requests to the Docker daemon.๐ŸŽฎ Remote control
Docker DaemonThe background service that receives Docker commands and actually manages images, containers, networks, and volumes.๐Ÿ‘ท Worker / Manager
Docker EngineThe core Docker technology that provides the daemon, API, container runtime, image management, networking, and more.โš™๏ธ The machinery
Docker RegistryA place where Docker images are stored so they can be pushed, pulled, and shared.๐Ÿช Image warehouse
Docker HubDocker’s public registry where you can find and share container images.๐ŸŒ Public image marketplace
Docker DesktopA desktop application that packages Docker Engine and useful tools into an easy-to-use environment on Windows/macOS/Linux.๐Ÿ–ฅ๏ธ Docker workstation
Docker VolumeStorage managed separately from the container so important data can survive even when the container is deleted.๐Ÿ’พ Persistent storage
Docker NetworkA virtual network that lets containers communicate with each other and with the outside world.๐ŸŒ Private network
Docker ComposeA tool for defining and running multiple related containers using a YAML file.๐ŸŽผ Multi-container conductor
Docker TagA label used to identify a particular version or variant of an image, such as nginx:1.27.๐Ÿท๏ธ Version label

The Big picture

You can connect most of these concepts into one simple story:

             ๐Ÿ“œ Dockerfile
                  โ”‚
                  โ”‚ docker build
                  โ–ผ
             ๐Ÿ“ฆ Docker Image
                  โ”‚
                  โ”‚ docker run
                  โ–ผ
             ๐Ÿ  Container
                  โ”‚
          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
          โ–ผ                โ–ผ
       ๐Ÿ’พ Volume        ๐ŸŒ Network


๐Ÿ“ฆ Image
   โ”‚
   โ”‚ docker push
   โ–ผ
๐Ÿช Registry
   โ”‚
   โ”‚ docker pull
   โ–ผ
๐Ÿ“ฆ Image on another machine
   โ”‚
   โ”‚ docker run
   โ–ผ
๐Ÿ  Container

And sitting behind your commands:

You
 โ”‚
 โ”‚ docker run / docker build / docker pull
 โ–ผ
๐ŸŽฎ Docker Client
 โ”‚
 โ–ผ
๐Ÿ‘ท Docker Daemon
 โ”‚
 โ”œโ”€โ”€ ๐Ÿ“ฆ Images
 โ”œโ”€โ”€ ๐Ÿ  Containers
 โ”œโ”€โ”€ ๐Ÿ’พ Volumes
 โ””โ”€โ”€ ๐ŸŒ Networks

The most important distinction to remember:

Dockerfile tells you how to make an image.
Image is what you make.
Container is what you run.
Client is what you use to ask Docker to do things.
Daemon is what actually does the work.
Registry is where images are stored and shared.
Engine is the underlying Docker machinery that makes all of this work.

Last updated on