A Docker image is a read-only template that holds the application code together with its runtime, libraries and dependencies. A Docker container is a running instance of an image.
The key differences:
An image is an immutable blueprint. A container is a mutable runtime environment, with its own writable layer on top of the image.
You store and share an image. A container is what runs your application's process.
You can create many containers from a single image.
Changes made inside a container don't affect the original image.
For example:
# Image exists as a template
docker images
# Container is created and runs from image
docker run nginx
Rewriting in plainer words…
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.