A Docker image is non-changeable file containing libraries, source code, tools and other files needed to run applications.
Due to their read-only characteristics, docker images are also referred to as snapshots. The snapshots represent application and it's VE (virtual environment) at a given point of time. It is this consistency that makes Docker one of the most touted virtualization applications ever. The ability to stamp time allows developers to experiment and test apps in various conditions.
'Images' may mean pictures in traditional sense but when docker is under the radar, 'images' become copies of an entire system in one, movable file. Because images but templates, you cannot run or execute them. But what you can do is use those templates and build a container on top of it. Container will ultimately be running images. Every time you create a container, it creates a writable layer right on top of an unchangeable image. This is it, you can now modify it the way you want.