-
-
Save beeman/aca41f3ebd2bf5efbd9d7fef09eac54d to your computer and use it in GitHub Desktop.
# Stop all containers | |
docker stop `docker ps -qa` | |
# Remove all containers | |
docker rm `docker ps -qa` | |
# Remove all images | |
docker rmi -f `docker images -qa ` | |
# Remove all volumes | |
docker volume rm $(docker volume ls -qf) | |
# Remove all networks | |
docker network rm `docker network ls -q` | |
# Your installation should now be all fresh and clean. | |
# The following commands should not output any items: | |
# docker ps -a | |
# docker images -a | |
# docker volume ls | |
# The following command show only show the default networks: | |
# docker network ls | |
Here's a script that doesn't generate any errors, including if there are no containers/images/volumes/networks:
#!/bin/bash
echo "Listing containers..."
containers=$(docker ps -qa)
echo "containers: $containers"
if [ ! -z "$containers" ]
then
echo "Stopping containers..."
docker stop $containers
echo "Removing containers..."
docker rm $containers
else
echo "No containers found"
fi
echo "Listing images..."
images=$(docker images -qa)
echo "images: $images"
if [ ! -z "$images" ]
then
echo "Removing images..."
docker rmi -f $images
else
echo "No images found"
fi
echo "Listing volumes..."
volumes=$(docker volume ls -q)
echo "volumes: $volumes"
if [ ! -z "$volumes" ]
then
echo "Removing volumes..."
docker volume rm $volumes
else
echo "No volumes found"
fi
echo "Listing networks..."
networks=$(docker network ls -q)
echo "networks: $networks"
if [ ! -z "$networks" ]
then
echo "Removing networks..."
docker network rm $networks
else
echo "No networks found"
fi
echo "These should not output any items:"
docker ps -a
docker images -a
docker volume ls
echo "This should only show the default networks:"
docker network ls
docker stop $(docker ps -qa)
docker system prune -a
that's all you need to remove everything
Hey this line $(...) doesn't work with fish. Is there an alternative that works everywhere?
Just drop the $, at least for that bit of fish. Or just run bash and then paste in the command.
Here's the fish
version for clarity.
docker stop (docker ps -qa);
docker rm (docker ps -qa);
docker rmi -f (docker images -qa);
docker volume rm (docker volume ls -q);
docker network rm (docker network ls -q);
Hi, I tried docker volume rm $(docker volume ls -qf)
to remove volumes but got the following message returned:
`flag needs an argument: 'f' in -f
See 'docker volume ls --help'.
"docker volume rm" requires at least 1 argument.
See 'docker volume rm --help'.
Usage: docker volume rm [OPTIONS] VOLUME [VOLUME...]
Remove one or more volumes`
I tried this instead and successfully removed all volumes:
docker volume rm $(docker volume ls -q)
After these commands I still had volumes under docker volume ls
had to run docker volume prune
to remove them. Reclaimed almost half a gig!
thanks
You have a typo, it should be:
docker system prune --volumes --all
(note pluralvolumes
)Try this 👍
docker stop `docker ps -qa` docker system prune --volume --all
This is actually plural now --volumes
thanks!!!
Thanks
<3
This is missing:
docker builder prune
** The backtick syntax should be replaced with $()
BTW, it appears for me that the command above to delete Docker volumes is outdated; I get an error:
The command is now
docker volume ls -q
, I think. Here is my docker version:I recommend: