How to continue a Docker container which has exited
Consider:
docker run -it centos /bin/bash
I pressed Ctrl+D to exit it.
I want to continue to run this container, but I found I can't.
The only method is
docker commit `docker ps -q -l` my_image
docker run -it my_image /bin/bash
Am I right? Is there a better method? (I'm using docker 0.8.0.)
Solution 1:
You can restart an existing container after it exited and your changes are still there.
docker start `docker ps -q -l` # restart it in the background
docker attach `docker ps -q -l` # reattach the terminal & stdin
Solution 2:
docker start -a -i `docker ps -q -l`
Explanation:
docker start
start a container (requires name or ID)-a
attach to container-i
interactive modedocker ps
List containers -q
list only container IDs-l
list only last created container
Solution 3:
Use:
docker start $(docker ps -a -q --filter "status=exited")
This will start all containers which are in the exited state.
docker exec -it <container-id> /bin/bash
This will connect to the particular container.
Solution 4:
If you want to do it in multiple, easy-to-remember commands:
- list stopped containers:
docker ps -a
- copy the name or the container id of the container you want to attach to, and start the container with:
docker start -i <name/id>
The -i
flag tells docker to attach to the container's stdin.
If the container wasn't started with an interactive shell to connect to, you need to do this to run a shell:
docker start <name/id>
docker exec -it <name/id> /bin/sh
The /bin/sh
is the shell usually available with alpine-based images.