Created
August 24, 2022 14:15
-
-
Save alerodm/b5bb3abe1b2f87e17d5db3cae51e9eb6 to your computer and use it in GitHub Desktop.
docker-cleanup
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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