Docker container lifecycle
The containers has the following stages from the moment it is created from an image till it’s removed from the docker engineĀ running, restarting, removing, paused, dead and exited.
All statuses apart from running and created are not going to serve a live purpose and tend to use us the system resources. unless the are brought back to the action through the use of docker start
command
We can easily perform filtering operation on the containers using the status flag:
# docker ps -f status=[created | dead | exited | running | restarting | removing]
Then the docker also allows removal of individual containers using the rm command we can use the docker container rm
to have the docker delete container
[vamshi@node01 ~]$ docker container rm <container-id | container-name>
[vamshi@node01 ~]$ docker rm <container-id | container-name>
You can also use the -f flag to forcefully remove it.
# docker rm -f <container-id | container-name>
On large docker farms containing 100’s of containers, Its often a practical approach to continually keep scanning for the stale containers and cleaning them up.
Clean up the docker containers which are in exited state.
# docker ps -q -f status=exited | xargs -I {} docker rm {}
# docker container ls --filter "status=exited" | grep 'weeks ago' | awk '{print $1}' | xargs --no-run-if-empty -I {} docker rm {}
List docker containers currently running:
[vamshi@node01 ~]$ docker container ls -f status=running
The docker subsystem also does offer some internal system commands to get the job done using the docker’s garbage collection mechanism.
The docker system build also results in leaving some reminiscences of older build data which has to be cleaned up at regular intervals of time on the docker engine host.
How to print out the docker container pid’s
docker ps -qa -f status=running | xargs docker inspect --format='{{ .State.Pid }}'
A docker one liner to clear up some docker stale cache:
[root@node01 ~]# docker container ls --filter "status=exited" --filter=status="dead" | awk '{print $1}' | xargs --no-run-if-empty -I {} docker rm {}