Skip to content

Instantly share code, notes, and snippets.

@alerodm
Created August 24, 2022 14:15
Show Gist options
  • Save alerodm/b5bb3abe1b2f87e17d5db3cae51e9eb6 to your computer and use it in GitHub Desktop.
Save alerodm/b5bb3abe1b2f87e17d5db3cae51e9eb6 to your computer and use it in GitHub Desktop.
docker-cleanup
from operator import sub
import subprocess
def rm_containers_with_status(status):
raw_container_list = subprocess.run(['docker', 'ps', '-qa', '--no-trunc', '--filter', f'status={status}'], stdout=subprocess.PIPE)
containers = raw_container_list.stdout.decode('utf-8').split('\n')
containers = [c for c in containers if c] # remove empty items
if not containers:
print(f'No containers with {status} status found!')
return
for container in containers:
print(f"Deleting container with id {container}...")
output = subprocess.run(['docker', 'rm', container], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if output.stderr:
print(output.stderr)
def rm_dangling_images():
raw_images_list = subprocess.run(['docker', 'images', '--filter', 'dangling=true', '-q', '--no-trunc'], stdout=subprocess.PIPE)
images = raw_images_list.stdout.decode('utf-8').split('\n')
images = [i for i in images if i] # remove empty items
if not images:
print('No dangling images found!')
return
for image in images:
print(f'Deleting dangling image with id {image}...')
output = subprocess.run(['docker', 'rmi', image], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if output.stderr:
print(output.stderr)
def rm_dangling_volumes():
raw_volume_list = subprocess.run(['docker', 'volume', 'ls', '-qf', 'dangling=true'], stdout=subprocess.PIPE)
volumes = raw_volume_list.stdout.decode('utf-8').split('\n')
volumes = [v for v in volumes if v] # remove empty items
if not volumes:
print('No dangling volumes found!')
return
for volume in volumes:
print(f"Deleting volume with id {volume}...")
output = subprocess.run(['docker', 'volume', 'rm', volume], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if output.stderr:
print(output.stderr)
rm_containers_with_status('exited')
rm_containers_with_status('created')
rm_dangling_images()
rm_dangling_volumes()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment