Skip to content

Understanding Images, Containers, and Registries

Before we start running FEniCS inside Docker, it’s important to understand three key terms you’ll see often — images, containers, and registries. Think of them as the building blocks of how Docker works.

Docker Images

A Docker image is like a blueprint or recipe. It defines everything your simulation needs — the operating system, Python, FEniCS, meshio, and any custom scripts.

You don’t run an image directly; instead, you use it to create a container (just like a class creates an object, if you’re familiar with programming).

Example:

  • A FEniCS image might be called iitrabhi/fenics_notebook.
  • It contains Ubuntu + FEniCS + Python + libraries.

You can download this image using:

bash
docker pull iitrabhi/fenics_notebook

And once downloaded it should be visible in the docker images list:

alt text

Docker Containers

A container is a running instance of an image. It’s like having your own mini computer that runs inside your main system — with everything pre-configured.

You can create and start a container using:

bash
docker run -it iitrabhi/fenics_notebook

Once inside, you’ll get a terminal where FEniCS is ready to use — no setup, no installations, just simulation.

alt text

When you stop the container, all changes stay inside it unless you save or export them.

Docker Registries

A registry is where Docker images are stored and shared — like a library for simulation environments.

The main public registry is Docker Hub (https://hub.docker.com), where you can find ready-to-use images such as:

  • fenicsproject/stable
  • paraview/paraview
  • ubuntu

You can also create your own private registries to store internal project images.

In Simple Terms

ConceptAnalogyPurpose
ImageA recipeDefines what goes inside your simulation environment
ContainerA dish made from the recipeA running environment where you actually execute code
RegistryA recipe libraryA place to find and share images

Summary

In short:

  • Images define your environment.
  • Containers run your environment.
  • Registries store and share them.

In the next section, we’ll use these concepts to run FEniCS inside a Docker container and see how simple it is to launch a ready-to-use simulation environment.