This docker tutorial discusses methods to stop a single docker container, multiple docker containers or all running docker containers at once. You’ll also learn to gracefully stop a docker container.
To stop a docker container, all you have to do is to use the container ID or container name in the following fashion:
docker stop container_ID_or_name
You may also use docker container stop container_id_or_name command but that’s one additional word in the command and it doesn’t provide any additional benefits so stick with docker stop.
But there is more to stopping a docker container that you should know, specially if you are a Docker beginner.
Practical examples for stopping docker container
I’ll discuss various aspects around stopping a docker container in this tutorial:
- Stop a docker container
- Stop multiple docker containers at once
- Stop all docker containers with a certain image
- Stop all running docker containers at once
- Gracefully stopping a docker container
Before you see that, you should know how to get the container name or ID.
You can list all the running docker containers with the docker ps command. Without any options, the docker ps command only shows the running containers.
[email protected]:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1bcf775d8cc7 ubuntu "bash" 8 minutes ago Up About a minute container-2 94f92052f55f debian "bash" 10 minutes ago Up 10 minutes container-1
The output also gives you the container name and container ID. You can use either of these two to stop a container.
Now let’s go about stopping containers.
1. Stop a docker container
To stop a specific container, use its ID or name with docker stop command:
docker stop container_name_or_ID
The output should have been more descriptive but it just shows the container name or ID whichever you provided:
[email protected]:~$ docker stop 1bcf775d8cc7 1bcf775d8cc7
You can use the docker stop command on an already stopped container. It won’t throw any errors or a different output.
You can verify if the container has been stopped by using the docker ps -a command. The -a option shows all containers whether they are running or stopped.
[email protected]:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1bcf775d8cc7 ubuntu "bash" 19 minutes ago Exited (0) About a minute ago container-2 94f92052f55f debian "bash" 29 minutes ago Up 29 minutes container-1
If the status is Exited, it means the container is not running any more.
2. Stop multiple docker containers
You can stop multiple docker containers at once as well. You just have to provide the container names and IDs.
docker stop container_id_or_name_1 container_id_or_name_2 container_id_or_name_3
As previously, the output will simply show the name or ID of the containers:
[email protected]:~$ docker stop container-1 container-2 container-3 container-1 container-2 container-3
3. Stop all containers associated with an image
So far what you saw stopping containers by explicitely mentioning their name or ID.
What if you want to stop all running containers of a certain docker image? Imagine a scenario where you want to remove a docker image but you’ll have to stop all the associated running containers.
You may provide the container names or IDs one by one but that’s time consuming. What you can do is to filter all the running containers based on their base image.
Just replace the IMAGE_NAME by your docker image name and you should be able to stop all running containers associated with that image.
docker ps -q --filter ancestor=IMAGE_NAME | xargs docker stop
The option -q shows only the container ID. Thanks to the wonderful xargs command, these container IDs are piped to the docker stop as argument.
4. Stop all running docker containers
You may face a situation where you are required to stop all running containers. For example if you want to remove all containers in Docker, you should stop them beforehand.
To do that, you can use something similar to what you saw in the previous section. Just remove the image part.
docker ps -q | xargs docker stop
5. Stop a container gracefully
To be honest, docker stops a container gracefully by default. When you use the docker stop command, it gives the container 10 seconds before forcefully killing it.
It doesn’t mean that it always takes 10 seconds to stop a container. It’s just that if the container is running some processes, it gets 10 seconds to stop the process and exit.
Docker stop command first sends the SIGTERM command. If the conainer is stopped in this period, it sends the SIGKILL command. A process may ignore the SIGTERM but SIGKILL will kill the process immediately.
I hope you know the difference between SIGTERM and SIGKILL.
You may change this grace period of 10 seconds with the -t option. Suppose you want to wait 30 seconds before stopping the container:
docker stop -t 30 container_name_or_id
In the end…
I think that this much information covers the topic very well. You know plenty of things about stopping a docker container.
Stay tuned for more docker tips and tutorials. If you have questions or suggestions, please let me know in the comment section.