how to clean up docker overlay directory?
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Introduction
The Docker overlay network is a mechanism to allow containers to communicate, even if they are distributed across different hosts in a Docker Swarm or Kubernetes cluster. While Docker simplifies many aspects of container management, cleaning up the overlay storage used by containers often confounds users. This article provides a detailed guide on how to clean up the Docker overlay directory to regain disk space and maintain a streamlined system.
Understanding the Overlay Filesystem
Docker's overlay filesystem is a union filesystem that creates a unified view of multiple file directories. It's commonly used because it allows for efficient storage and changes to container filesystem layers. The primary components of the overlay filesystem include:
- Lowerdir: Holds the lower layers from the image.
- Upperdir: Holds the upper layers with writable changes.
- Workdir: Used by the overlay filesystem when changes are committed.
- Merged: The visible content presented to the user.
Understanding these components is crucial as you'll frequently encounter them while cleaning the overlay directory.
When to Clean Up
Over time, docker builds up many unused and dangling images or unmanaged directories in the overlay storage, which can occupy significant disk space. You should consider cleaning up the overlay directory if you notice:
- Disk space is rapidly consumed.
- Numerous dangling images exist.
- Accumulation of orphaned volumes and stale containers.
Cleaning Up the Docker Overlay Directory
Step 1: Prune Unused Docker Objects
Docker provides different prune commands to remove unused objects, including containers, images, networks, and volumes.
Step 2: Examine Overlay Storage
Before deleting anything manually, it's useful to inspect the current state of your overlay directory. Typically located at /var/lib/docker/overlay2, this directory contains the writable layers of your containers.
Step 3: Delete Unused and Stale Layers
If the above methods don't reclaim a satisfactory amount of space, you can delve into more detailed cleanup methods:
- Identify Largest Directories:To identify which directories are consuming the most disk space:
- Deleting Specific Layers:Once identified, you should tread carefully. Manually deleting directories can break Docker if the corresponding images or containers are still in use.
Note: This should be done with extreme caution and ideally in systems with halted Docker services.
Step 4: Advanced Cleanup and Rebuild
In scenarios where the overlay storage has become significantly cluttered and resistant to easy cleanup, consider rebuilding your Docker environment:
- Backup Docker Images and Volumes:Ensure you have backups of essential data:
- Restart Docker Services:
- Rebuild Docker Data Directory:As a last resort, you can completely rebuild your Docker images from Dockerfiles:
Summary
The following table summarizes the key aspects of cleaning up the Docker overlay directory:
| Action | Description |
| Prune Unused Objects | Use Docker prune commands to clean up unused objects. |
| Examine Overlay Storage | Inspect /var/lib/docker/overlay2 for bloat. |
| Identify Largest Directories | Use du to find the largest directory for analysis. |
| Delete Specific Layers | Cautiously remove directories after verifying usage. |
| Advanced Cleanup and Rebuild | Backup and rebuild Docker environment if required. |
Conclusion
Effectively managing and cleaning up the Docker overlay directories is vital for maintaining system performance and freeing up disk space. While Docker provides convenient methods, understanding the underlying filesystem helps in making informed decisions when manual cleanup becomes necessary. Always proceed with caution, ensuring proper backups and system checks are in place to avoid unintended service interruptions.
Related reading
- How to clear CrashLoopBackOff
- How to combine host network with the default network in docker-compose
- How to configure a Kubernetes Multi-Pod Deployment
- How to configure custom domain name for Amazon ECR
- How to configure docker-compose.yml for Kafka local development?
- How to connect ASP.Net Core to a SQL Server Docker container on Mac
- How to connect local kafka in docker container?
- How to connect locally hosted MySQL database with the docker container

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.