Docker is not your regular Virtual Machine. Think of this as more of an application than Virtual Machine. Docker behaves like your application runtime. It is actually an application packaged with OS and all necessary dependencies.
In the similar fashion, say if you are running a python or Java application, and your main executes a function only, then the application exists after the execution of the function. If you want to run your application as service, then you will need to write your main accordingly to keep it up and running.
Similarly, in Docker, if you have a service, because you have setup your main correctly, the docker, in this case, your service will stay up and running.
Having said that there are other ways to keep your docker running as well. Once way is to run the docker in interactive mode. However, if you have an EntryPoint that exits, then your docker will exit after the entry point execution.
Here are few ways to keep your docker running if you require
Method 1: run in an interactive mode
docker run -it imageid
Method 2: EntryPoint if you do not have a service setup in your main in your program and you want to test your setups
EntryPoint ["tail", "-f", "/dev/null"]
or
docker run -d imageid tail -f /dev/null
Method 3: Run to sleep in infinite loop
docker run -d imageid sleep infinity
Now you have docker running, what do you do next? You want to log into the docker. Here is how you login to the docker
docker exec -it imageid/runid /bin/bash
# above will get you to bash shell
Coping files into Docker
This is not a recommended method; however, if you require to copy file into docker. following is the command.
docker cp file docker_image:/filelocation
Stopping a docker image
docker stop imageid