Skip to content

Key Docker Concepts: Images, Containers, Dockerfiles

To truly understand Docker, you need to know about its three core pillars: Images, Containers, and Dockerfiles. 🏗️

1. Docker Images

A Docker Image is a lightweight, standalone, and executable package that includes everything needed to run a piece of software. It contains the code, runtime, libraries, environment variables, and configuration files.

Think of an Image as a read-only template or blueprint.

Key Properties of Images:

  • Layered: Built using a series of layers, where each layer represents an instruction in the image’s Dockerfile.
  • Immutable: Once an image is created, it cannot be changed. If you need to make changes, you build a new image.
  • Portable: Since it contains all its dependencies, it runs the same way on any machine that has Docker installed.

2. Docker Containers

A Docker Container is a running instance of a Docker Image. It uses the image as a base and adds a small writable layer on top while running.

Think of the Image as the blueprint and the Container as the actual building.

Key Properties of Containers:

  • Isolation: Containers are isolated from each other and from the host system. They don’t interfere with other apps.

  • Ephemeral: By default, containers are temporary. You can stop, delete, and recreate them easily (data can be persisted using volumes if needed).

  • Portable: Just like images, containers run the same way in Dev, Staging, and Production.

  • You can start, stop, move, or delete a container.

  • Multiple containers can run from the same image at the same time.


3. Dockerfiles

A Dockerfile is a simple text file that contains all the commands needed to build a Docker Image.

  • It acts as the Recipe or Source Code for your Docker Image.
  • When you build a Dockerfile, Docker follows these instructions and creates a Docker Image.

Example flow:

Terminal window
docker build -t my-app .
docker run -p 3000:3000 my-app

This builds an image from the Dockerfile and runs it as a container.


The Big Picture Analogy 🍰

ConceptAnalogyDescription
DockerfileThe RecipeThe written instructions on how to make the cake.
Docker ImageThe Cake MixA ready-to-use package made from the recipe. You don’t change it once it’s packed.
Docker ContainerThe Actual CakeThe final product you can eat (the running application).

One recipe can create many boxes of cake mix, and one box of cake mix can create many cakes! 🚀