Each time you use docker run (using the same image or not), you're actually creating and starting a new instance of a Docker image.
A Docker image is a list of layers representing file system differences. It is used by Docker to create the base file system of your containers (these layers are read-only, allowing Docker to re-use them when you start multiple containers, making docker run really fast as well as not taking too much disk space).
Basically, when you start a container, Docker will use the layers of the image to create the file system of your container. As I told you before, it's using read-only layers from the image, so in order to store any change in the container, Docker will add an extra read-write layer on top of that when the container is started.
Every change you're making to a container is stored in this new read-write layer. If you delete the container, that layer will be deleted too, making the container non-persistent.
I recommend having a look at this section of the documentation: docs.docker.com/engine/userguide/storagedriver/im…