How to remove old Docker containers

ghz 8months ago ⋅ 88 views

This question is related to Should I be concerned about excess, non-running, Docker containers?.

I'm wondering how to remove old containers. The docker rm 3e552code34a lets you remove a single one, but I have lots already. docker rm --help doesn't give a selection option (like all, or by image name).

Maybe there is a directory in which these containers are stored where I can delete them easily manually?

Answers

If you want to remove multiple Docker containers at once, you have a few options:

  1. Using Docker Commands: You can use a combination of Docker commands to remove multiple containers. For example, you can use docker ps -a to list all containers (including stopped ones) and then pipe the output to docker rm:

    docker ps -a -q | xargs docker rm
    

    This command lists all container IDs (-q option) and passes them to docker rm via xargs to remove them.

  2. Using Docker Container Prune: Docker provides a built-in command to clean up stopped containers. You can use docker container prune to remove all stopped containers:

    docker container prune
    

    This command will prompt you to confirm before deleting stopped containers. You can add the -f or --force flag to skip the confirmation prompt:

    docker container prune -f
    
  3. Using Docker Compose: If you're using Docker Compose to manage your containers, you can use the docker-compose down command to stop and remove containers defined in your docker-compose.yml file:

    docker-compose down
    

    You can also add the --volumes flag to remove associated volumes:

    docker-compose down --volumes
    
  4. Manual Deletion: As a last resort, you can manually delete Docker containers by removing their directories from the Docker data directory. However, this approach is not recommended because it bypasses Docker's management and can lead to inconsistencies.

The recommended approach is to use Docker commands or Docker Compose to manage your containers and remove them as needed.