Docker: How to delete all local Docker images

DockerDocker Compose

Docker Problem Overview


I recently started using Docker and never realized that I should use docker-compose down instead of ctrl-c or docker-compose stop to get rid of my experiments. I now have a large number of unneeded docker images locally.

Is there a flag I can run to delete all the local docker images & containers?

Something like docker rmi --all --force --all flag does not exist but I am looking for something with similar idea.

Docker Solutions


Solution 1 - Docker

For Unix

To delete all containers including its volumes use,

docker rm -vf $(docker ps -aq)

To delete all the images,

docker rmi -f $(docker images -aq)

Remember, you should remove all the containers before removing all the images from which those containers were created.

For Windows (power shell, not cmd)

In case you are working on Windows (Powershell),

$images = docker images -a -q
foreach ($image in $images) { docker image rm $image -f }

Based on the comment from CodeSix, one liner for Windows Powershell,

docker images -a -q | % { docker image rm $_ -f }

For Windows using command line,

for /F %i in ('docker images -a -q') do docker rmi -f %i

Solution 2 - Docker

Use this to delete everything:

docker system prune -a --volumes

> Remove all unused containers, volumes, networks and images

WARNING! This will remove:
    - all stopped containers
    - all networks not used by at least one container
    - all volumes not used by at least one container
    - all images without at least one container associated to them
    - all build cache

https://docs.docker.com/engine/reference/commandline/system_prune/#extended-description

Solution 3 - Docker

Here is short and quick solution I used

Docker provides a single command that will clean up any resources — images, containers, volumes, and networks — that are dangling (not associated with a container):

docker system prune

To additionally remove any stopped containers and all unused images (not just dangling images), add the -a flag to the command:

docker system prune -a


For more details visit link

Solution 4 - Docker

docker image prune -a

> Remove all unused images, not just dangling ones. Add -f option to > force.

Local docker version: 17.09.0-ce, Git commit: afdb6d4, OS/Arch: darwin/amd64

$ docker image prune -h
Flag shorthand -h has been deprecated, please use --help

Usage:	docker image prune [OPTIONS]

Remove unused images

Options:
  -a, --all             Remove all unused images, not just dangling ones
      --filter filter   Provide filter values (e.g. 'until=<timestamp>')
  -f, --force           Do not prompt for confirmation
      --help            Print usage

Solution 5 - Docker

Easy and handy commands

To delete all images

docker rmi $(docker images -a)

To delete containers which are in exited state

docker rm $(docker ps -a -f status=exited -q)

To delete containers which are in created state

docker rm $(docker ps -a -f status=created -q)

NOTE: Remove all the containers then remove the images

Solution 6 - Docker

If you need to delete without invoking docker:

rm -rf /var/lib/docker

This directly removes all docker images/containers/volumes from the filesystem.

Solution 7 - Docker

List images

docker image ls

Remove unused images

docker image prune --all

To additionally remove any stopped containers and all unused images

docker system prune -a

know more

Solution 8 - Docker

For Linux Ubuntu user, below worked for me. Word of Caution- It will remove all by the way.

For removing containers along with volumes associated with it, use below:

sudo docker rm -vf $(sudo docker ps -a -q)

For Removing images use below:

sudo docker rmi -f $(sudo docker images -a -q)

Solution 9 - Docker

To delete all images:

docker rmi -f $(docker images -a | awk {'print $3'})

Explanation:

> docker images -a | awk {'print $3'}

This command will return all image id's and then used to delete image using its id.

Solution 10 - Docker

There is a bug in Windows where disk space is not reclaimed after removing the images. Rebooting Docker / Windows did not work.

In case you are using Docker Desktop, the following worked for me. Go to Troubleshoot -> Clean / purge data. This can save you a lot of disk space, maybe more than you wanted.

enter image description here

Please note: this removes everything, so think twice before doing this!

Solution 11 - Docker

To delete all images :

docker rmi $(docker images -a -q)

where -a is all, and -q is return only image ids

To remove unused images, and containers :

docker system prune

beware as if you are using docker swarm, and your local machine is joining remote swarm (as manager/worker), your local will be the deployed repo. executing this thus removes the deployed images.

Solution 12 - Docker

docker rmi $(docker images -q) --force

Solution 13 - Docker

You can try like this:

docker system prune

Solution 14 - Docker

Another way with xargs (Unix only)

docker image ls -q | xargs -I {} docker image rm -f {}

Solution 15 - Docker

  1. sudo docker images / docker images // list of images with id
  2. sudo docker rm image <image_id> / docker rm image <image_id>

Solution 16 - Docker

docker image rm -f $(docker image ls -a -q)

Solution 17 - Docker

Adding to techtabu's accepted answer, If you're using docker on windows, you can use the following command

for /F "delims=" %A in ('docker ps -a -q') do docker rm %A

here, the command docker ps -a -q lists all the images and this list is passed to docker rm one by one

see this for more details on how this type of command format works in windows cmd.

Solution 18 - Docker

To delete all Docker local Docker images follow 2 steps ::

step 1 : docker images ( list all docker images with ids )

     example :
     REPOSITORY    TAG    IMAGE ID            CREATED             SIZE
     pradip564/my  latest 31e522c6cfe4        3 months ago        915MB

step 2 : docker image rm 31e522c6cfe4 ( IMAGE ID)

      OUTPUT : image deleted

Solution 19 - Docker

Here is the command I used and put it in a batch file to remove everything:

> echo "Removing containers :" && if [ -n "$(docker container ls -aq)" > ]; then docker container stop $(docker container ls -aq); docker > container rm $(docker container ls -aq); fi; echo "Removing images :" > && if [ -n "$(docker images -aq)" ]; then docker rmi -f $(docker > images -aq); fi; echo "Removing volumes :" && if [ -n "$(docker volume > ls -q)" ]; then docker volume rm $(docker volume ls -q); fi; echo > "Removing networks :" && if [ -n "$(docker network ls | awk '{print > $1" "$2}' | grep -v 'ID|bridge|host|none' | awk '{print $1}')" ]; > then docker network rm $(docker network ls | awk '{print $1" "$2}' | > grep -v 'ID|bridge|host|none' | awk '{print $1}'); fi;

Solution 20 - Docker

The other answers don't seem to provide an easy way to delete just the containers with "auto-generated" names. This is my most frequent intent, so I wrote a Powershell script for it:

$containers = (docker container list -a).Split("`n") | % { [regex]::split($_, "\s+") | Select -Last 1 }
$containersToRemove = $containers | Where { ([regex]"^[a-z]+_[a-z]+$").IsMatch($_) }

# it's recommended to delete in batches, as too many at once can cause issues
$containersToRemove = $containersToRemove | Select-Object -First 30

foreach ($container in $containersToRemove) {
	# sync/wait-based version (slow)
	# docker container rm $container

	# async/background-process version (fast)
	Start-Process -FilePath docker -ArgumentList "container rm $container" -NoNewWindow
}

Take caution of course, as this script is just using a regular-expression: ^[a-z]+_[a-z]+$

So only use it if you know that the containers you care about do not use the same format (of lowercase-word, underscore, lowercase-word); or at least only run the first two lines, run echo $containersToRemove, and check the list before actually executing the deletions.

Solution 21 - Docker

docker rmi -f $(docker images -q)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKimmo HintikkaView Question on Stackoverflow
Solution 1 - DockertechtabuView Answer on Stackoverflow
Solution 2 - DockerRobertView Answer on Stackoverflow
Solution 3 - DockerSuhas_PoteView Answer on Stackoverflow
Solution 4 - DockerRobert RanjanView Answer on Stackoverflow
Solution 5 - DockerDeep NirmalView Answer on Stackoverflow
Solution 6 - DockerVasiliNovikovView Answer on Stackoverflow
Solution 7 - DockerMD SHAYONView Answer on Stackoverflow
Solution 8 - DockerSajin PattathView Answer on Stackoverflow
Solution 9 - DockerPalFSView Answer on Stackoverflow
Solution 10 - DockerGuidoView Answer on Stackoverflow
Solution 11 - DockermirageglobeView Answer on Stackoverflow
Solution 12 - DockersimencoreView Answer on Stackoverflow
Solution 13 - DockerBablu AhmedView Answer on Stackoverflow
Solution 14 - DockeriamarkadytView Answer on Stackoverflow
Solution 15 - Dockerani shawView Answer on Stackoverflow
Solution 16 - DockerDe BonheurView Answer on Stackoverflow
Solution 17 - DockercorvoView Answer on Stackoverflow
Solution 18 - DockerDebasis DasView Answer on Stackoverflow
Solution 19 - DockerRaghavView Answer on Stackoverflow
Solution 20 - DockerVenryxView Answer on Stackoverflow
Solution 21 - DockerKandasamy MuruganView Answer on Stackoverflow