Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Remove unlinked space from the docker drive
#!/usr/bin/env python
Check all existing Docker containers for their mapped paths, and then purge any
zombie directories in docker's volumes directory which don't correspond to an
existing container.
Taken from:
import logging
import os
import sys
from shutil import rmtree
import docker
DOCKER_VOLUMES_DIR = "/var/lib/docker/volumes"
def get_immediate_subdirectories(a_dir):
return [os.path.join(a_dir, name) for name in os.listdir(a_dir)
if os.path.isdir(os.path.join(a_dir, name))]
def main():
client = docker.Client()
valid_dirs = []
for container in client.containers(all=True):
volumes = client.inspect_container(container['Id'])['Volumes']
if not volumes:
for _, real_path in volumes.iteritems():
if real_path.startswith(DOCKER_VOLUMES_DIR):
all_dirs = get_immediate_subdirectories(DOCKER_VOLUMES_DIR)
invalid_dirs = set(all_dirs).difference(valid_dirs)"Purging %s dangling Docker volumes out of %s total volumes found.",
len(invalid_dirs), len(all_dirs))
for invalid_dir in invalid_dirs:"Purging directory: %s", invalid_dir)
rmtree(invalid_dir)"All done.")
if __name__ == "__main__":
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment