How To Remove Docker Containers, Images and Volumes [Cheat Sheet]

Eyecatch

Introduction

This article describes how to delete objects, Images, Containers, Volumes, and Networks in Docker. We will explain in detail how to use the options of the Docker rm command and other useful commands that are difficult to understand from the official documentation alone. If you are new to Docker, please refer to this article as a cheat sheet.

Purging All Unused or Dangling Images, Containers, Volumes, and Networks

Ever wanted to get rid of unnecessary things with Docker? If you want to delete a Docker object, that's often the case. In that case, the command Docker prune is effective. The prune command allows you to delete unused Docker objects (containers, images, networks, volumes) all at once. The following is an example.

docker system prune

At this time, by using the —filter option, it is possible to narrow down and delete the containers that have been stopped for a long time. The following is an example of deleting a container that has been stopped for more than 24 hours.

More information on filtering can be found in the following official documentation: https://docs.docker.com/engine/reference/commandline/system_prune/

docker system prune -a --filter "until = 24h"

At this time, the -a option can clear the build cache and the intermediate image.

Removing Docker Containers

This section describes the command to delete a Docker container.

Removing one or more containers by id or name

When deleting one Docker container, you can delete it by specifying the container ID or name. The following is an example.

docker rm 4c01db0b339c

You can also delete multiple containers together by specifying the IDs or names of multiple containers, as shown below.

docker rm 4c01db0b339c d7886598dbe2

Removing all stopped containers

If your Docker version is 1.13 or higher, you can easily remove all stopped containers using the docker container prune command. The following is an example.

docker container prune

Remove a container upon exit

Do you use a lot of temporary Docker containers? In that case, you can use the --rm option of docker run to automatically delete the container when it exits. It cannot be used together with the -d option (detach mode).

 docker run —rm image_name

Stop and remove all containers

The following command is convenient if you want to stop/remove all the containers, including the running container.

docker stop $ (docker ps -a -q)
docker rm $ (docker ps -a -q)

In this command, docker ps -a -q is used to display a list of IDs of all Docker containers, and docker rm is used to delete them.

Removing Docker Images

Removing one or more images by id

Use the docker rmi command to delete a Docker image. As below:

docker rmi image_id

Also, since this command can be specified multiple times like deleting a container, You can delete multiple images at the same time as shown below.

docker rmi image_id_1 image_id_2

Removing images by tag

With the docker rmi command, you can usually delete only by specifying the image ID, but you can delete it by selecting the tag name using the -f option.

docker rmi -f tag_name

Removing dangling images

Like deleting a container, deleting an image can quickly delete all stopped containers by specifying prune in the command. The following is an example.

docker image prune

Removing all unused images

With the docker image prune command, you can use the -a option to delete only unused images from existing containers.

docker image prune -a

Removing all images

To remove all images, whether you are using them or not, enter the following command:

docker rmi $ (docker images -a -q)

It removes all images by displaying all Docker images with the -a option of the docker images and displaying the IDs of all the images with the -q option.

Removing Docker Volumes

Removing one or more volumes

To delete a Volume, use the docker volume rm command as shown below.

docker volume rm volume_name

As with the deletion of other objects, multiple deletions are possible.

docker volume rm volume_name1 volume_name2

At this time, if the error shows volume is in use, the container using volume may not be deleted yet. In that case, you can delete it by deleting the corresponding Docker container.

Removing all unused volumes

You can delete unused volumes with the docker volume prune command.

docker volume prune

—filter You can also use a flag to limit the range of deletions. For example, the following command only deletes volumes labeled test.

docker volume prune —filter "label = test"

Removing Docker Networks

Removing one or more networks by id or name

To remove Docker's Network, use the docker network rm command. In this case, specify either the name or id of the network.

docker network rm network_name_or_id

This command can also be deleted multiple times and is specified as follows.

docker network rm 3695c422697f my-network

Also, if you specify multiple networks, this command attempts to delete each network in turn. If deleting one network fails, proceed to the next and try to delete that network. Success or failure is reported with each deletion.

Removing all unused network

If you want to remove an unused network, use the docker network prune command like any other object.

docker network prune

You can specify the range to be deleted by using the --filter option. For example, the following is an example of deleting only the network that has passed 24 hours.

docker network prune --filter "until = 24h"

Removing docker-compose

Finally, I will show you how to delete the object created by docker-compose when you want to clean the development environment and recreate it from scratch.

Below is an example of a command to clean all containers, images, volumes, networks, and undefined containers created with docker-compose.

docker-compose down --rmi all -v --remove-orphans

docker-compose down is the exact opposite of docker-compose up. By default, it deletes created objects such as containers and networks. In addition, each option means the following.

  • -- rmi all Remove all images
  • -v Remove the named volumes declared in the volumes section of docker-compose.yml and the anonymous volumes attached to the container
  • --remove-orphans Remove containers not defined in docker-compose.yml

Therefore, this command example removes containers, images, volumes, networks, and undefined containers.

Conclusion

I've introduced you to various Docker removal commands. Recent Docker is very convenient because you can delete unnecessary objects by using the prune command. You can learn more about the commands introduced so far from the official documentation below.

Logo

Secure your IaC with just a few clicks!

You can keep your IaC security for free. No credit card required.

Share This Post