Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to retain docker alpine container after "exit" is used?

Like for example if I use command docker run -it alpine /bin/sh it starts a terminal after which I can install packages and all. Now when I use exit command it goes back to the terminal. (main one)

So how can I access the same container again? When I run that command again, I get a fresh alpine.

Please help

like image 701
shubham_kamath Avatar asked Aug 11 '17 15:08

shubham_kamath


People also ask

How do I keep docker containers running after exit?

Dockerfile Command to Keep the Container Running Method 1: You can use the -t (pseudo-tty) docker parameter to keep the container running. Method 2: You can run the container directly passing the tail command via arguments as shown below. Method 3: Another method is to execute a sleep command to infinity.

How do you keep an alpine container running?

docker exec -it 5f4 sh / # (<-- you can run linux command here!) type exit to come out- You can run it in detached mode and it will keep running. You will need to STOP otherwise it will keep running. Show activity on this post.

How do you persist a docker container?

Volumes are the best way to persist data in Docker. Bind mounts may be stored anywhere on the host system. They may even be important system files or directories. Non-Docker processes on the Docker host or a Docker container can modify them at any time.

What happens when docker container exits?

By default, what happens to a Docker Container when the process it is running exits? The Container reboots and restarts the process.


2 Answers

The container lives as long as the specified run command process is still running. When you specify to run /bin/sh, once you exit, the sh process will die and so will you container.

If you want to keep your container running, you have to keep the process inside running. For your case (I am not sure what you want to acheive, I assume you are just testing), the following will keep it running

docker run -d --name alpine alpine tail -f /dev/null

Then you can sh into the container using

docker exec -it alpine sh  
like image 157
yamenk Avatar answered Oct 21 '22 09:10

yamenk


Pull an image

docker image pull alpine

See that image is there

docker image ls   OR  just docker images

see what is inside the alpine

docker run alpine ls -al

Now your question is how to stay with the shell

docker container run -it alpine /bin/sh

You are inside shell script command line. Some distribution may have bash shell.

 docker exec -it 5f4 sh
 / # (<-- you can run linux command here!)

At this point, you can use command line of alpine and do

ls -al

type exit to come out- You can run it in detached mode and it will keep running.

With exec command we can login again

docker container run -it -d alpine /bin/sh

verify that it is UP and copy the FIRST 2 -3 digits of the container ID

docker container ls

login with exec command

docker exec -it <CONTAINER ID or just 2-3 digits> sh

You will need to STOP otherwise it will keep running.

docker stop <CONTAINER ID>
like image 35
vimal krishna Avatar answered Oct 21 '22 10:10

vimal krishna