stackademic

The leading education platform for anyone with an interest in software development.

Docker Images and Containers

The difference between images and containers and how to manage both

Overview

An image is a read-only template that contains everything needed to run an application: code, runtime, libraries, and settings. A container is a running (or stopped) instance created from an image. You can start many containers from a single image, and each one has its own isolated writable layer on top of the shared image layers.

Syntax / Usage

Images and containers are managed with separate sets of commands. Images are listed and removed with docker image (or docker images), while containers use docker ps and docker rm.

# List local images
docker images

# List all containers, including stopped ones
docker ps -a

# Create a container from an image
docker run --name app node:20

# Inspect and view logs
docker inspect app
docker logs app

# Remove a container, then its image
docker rm app
docker rmi node:20

Examples

Start a container, execute a command inside a running one, then stop it:

docker run -d --name redis redis
docker exec -it redis redis-cli ping
docker stop redis

Remove all stopped containers and dangling images to reclaim space:

docker container prune
docker image prune

Common Mistakes

  • Trying to docker rmi an image while a container still uses it
  • Confusing docker ps (running only) with docker ps -a (all containers)
  • Expecting changes made inside a container to update the underlying image
  • Naming collisions from reusing --name without removing the old container
  • Accumulating dangling images from repeated builds and never pruning

See Also

docker-introduction docker-dockerfile docker-volumes