Jacob Tomlinson's profile picture Jacob Tomlinson
Home Blog Talks Newsletter About

Being intentional with container terminology

3 minute read #docker, #containers, #oci, #writing

When writing and speaking about linux container technologies I’m trying to be more intentional with the words I use, which means often avoiding the word docker. My goal is to communicate clearly to both experts and novices alike.

Why

A large point of confusion I see when reading about containers is between the generic term containers and the brand name docker.

My perspective is that Docker is an important company that hugely enhanced and popularized linux container technology. They have tools such as the Docker Runtime and Docker CLI which today are the most popular way for folks to interact with containers in their day-to-day work. But over time they are slowly fading into the background as just one brand within a broad ecosystem and other tools are taking their place.

Containers are an important component in many other systems such as Kubernetes, which don’t use Docker tools at all. They build on the container standards which are governed by the Open Container Initiative (OCI). While Docker has contributed heavily to those standards there are also many popular alternatives to the Docker tools which implement exactly the same standards and often have identical user interfaces and experiences such as Podman and nerdctl.

Brands like “Hoover” and “Kleenex” have become generic terms for their products and “Docker” is on the same path. So docker is often used as a substitute for the word container. I feel like this adds ambiguity and confusion when writing because folks might be unsure whether you are specifically talking about Docker technologies or just talking about generic linux container technology.

Terminology

To avoid this confusion here are my personal guidelines on container terminology that I’m going to refer back to in the future when writing.

Brands

Docker is a company, docker is a command line tool.

Containers

A container is a linux process (or many processes) running in an isolated environment with its own filesystem, network namespace, user namespace and more.

Container images

A container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.

Container registries

A registry is a standardized API which can store and serve container images. It may or may not have a frontend UI like Docker Hub.

Other Docker products

Docker make many other products that enhance the container experience such as Docker Compose for defining many containers in one configuration and Docker Swarm for orchestrating containers on a cluster of machines.


Have thoughts?

I love hearing feedback on my posts. You should head over to Twitter and let me know what you think!

Spotted a mistake? Why not suggest an edit!