A Docker image is a template for a container.

Everything starts from a Docker image.

When you tell Docker to create a container from an image using docker run, it will perform its magic (create the file system, initialize the dependencies, and more) and then the container will be created.

Images are built from a Dockerfile using the docker build command, and they can be stored locally, or published in a Docker registry like Docker Hub, where you can store public and private images.

If you visit https://hub.docker.com/ you will see a lot of images you can freely use without having to create your own images.

Often times those images are official and made by the development teams behind a specific technology.

For example this is the official Node.js Docker Image: https://registry.hub.docker.com/_/node.

We’ll talk more about how to use images and containers soon.