Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Build StatusGitHub release


Join the chat at

A simple Shell script to clean up the Docker Daemon.


In order to use the volume capabilities, it is required that the Docker Daemon is at least version 1.9+


curl -s |
sudo tee /usr/local/bin/docker-clean > /dev/null && \
sudo chmod +x /usr/local/bin/docker-clean

Homebrew Install

brew update
brew install docker-clean

UPDATE: Docker-clean v2.0.3+ will be available without using our tap. However we will keep both maintained.

Upgrade (for new versions)

brew update && brew upgrade docker-clean

For curl installs, re-running the script above will install the newest version.

Running from a docker container

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock zzrot/docker-clean [optional flags below]

Docker Image tags can be found on Docker Hub for different docker-clean versions 2.0.4+ with various image sizes.


For a more in depth look at the usage and commands run without browsing the script itself check out our

docker-clean [optional flags below]

Default without arguments deletes stopped containers, dangling volumes, and untagged images.

  stop         Stops and removes all containers, cleans dangling volumes, and networks

  images       Removes all tagged and untagged images, stopped containers, dangling volumes, and networks

  run          Removes all stopped containers, untagged images, dangling volumes, and networks

  all          Stops and removes all containers, images, volumes and networks

 "Additional Flag options:"

 -n   or --dry-run    Adding this additional flag will list items to be
                      removed without executing any stopping or removing commands"

 -s   or --stop       Stops all running containers

-c   or --containers  Removes all stopped containers

-i   or --images      Removes all untagged images

-net or --networks    Removes all empty Networks (all network cleans are only empty)

-H   or --host        Specifies the docker host to run against
                      Useful for docker swarm maintenance ie: -H"

 -r   or --restart     Restarts the docker machine/daemon

 -d   or --created     By default, CREATED containers are set to be removed.  Adding this
                       flag will ensure that all created containers are not cleaned

 -t   or --tagged      Removes all tagged images

 -a   or --all         Stops and removes all Containers, Images, AND Restarts docker

 -l   or --log         Adding this as an additional flag will list all
                       image, volume, and container deleting output

Contributing to Docker-Clean

Team members

Don't hesitate to get in contact with either one of us with problems, questions, etc.

Check out our blog post on why we put this script together.

Adding new features

  • Fork it!
  • Create your feature branch: git checkout -b my-new-feature
  • Commit your changes: git commit -am 'Add some feature'
  • Push to the branch: git push origin my-new-feature
  • Submit a pull request :D

For any new features you hope to see, you can also edit the file.

Don’t get discouraged! We estimate that the response time from the maintainers is around: 24 hours.


We use ShellCheck to keep our code consistent and readable. Any feature pushed that does not pass a ShellCheck will fail on Travis build, and thus we cannot accept the pull request. Please lint your code before submitting it! :).

(Keep in mind that bats does not have to be ShellChecked, and thus if you are adding tests to .bats don't worry about linting.)

You can either download the ShellCheck program: or use the ShellCheck website:


The code is available under the MIT License.