Managing Docker Images with the 'docker images' Command (with examples)
The docker images
command is a fundamental tool in the Docker ecosystem, offering users the ability to manage and inspect Docker images on their systems. These images are essential, as they form the backbone of containerized applications. By understanding how to effectively use this command, developers and system administrators can efficiently handle software deployment, versioning, and scalability. Below, we delve into several use cases explaining how this command can be used effectively in varied scenarios.
Use case 1: List all Docker images
Code:
docker images
Motivation:
Listing all Docker images on a system is a basic yet crucial task. It provides an overview of existing images, aiding users in inventorying their available resources. This insight is valuable for managing image versions, identifying outdated images that may require updates, or simply clearing up space by deleting unused ones.
Explanation:
The docker images
command is straightforward with no additional parameters in its basic form. It relies on default settings to retrieve all images that are currently available on the Docker host.
Example output:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 2d1948d0b6cf 4 weeks ago 85.6MB
nginx stable b778d55d99df 2 months ago 133MB
redis 6-alpine ac0d54b09eac 2 months ago 32.3MB
Use case 2: List all Docker images including intermediates
Code:
docker images --all
Motivation:
When building Docker images, intermediate layers are created. While these intermediates are usually hidden in simple listings, they’re vital for users seeking to optimize build processes, understand layering intricacies, or troubleshoot potential build issues. Listing all images, including intermediates, provides deeper insight into the structure and build optimizations.
Explanation:
The --all
flag expands the scope of the listing to include not only final images but also any intermediate layers, which are usually omitted for brevity unless explicitly requested.
Example output:
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 7e2f1d2b6cf6 3 weeks ago 400MB
ubuntu latest 2d1948d0b6cf 4 weeks ago 85.6MB
<none> <none> 3dd4b39dbf2f 2 months ago 280MB
Use case 3: List the output in quiet mode (only numeric IDs)
Code:
docker images --quiet
Motivation:
In many automation scripts and advanced shell operations, compact and precise output is essential. By listing only numeric IDs, users can easily integrate this output into scripts that manage images programmatically, offering enhanced efficiency and reduced I/O processing.
Explanation:
The --quiet
option suppresses the usual detailed information associated with each image, yielding solely the image IDs. This reduced output mode is particularly useful for scripting and automation purposes.
Example output:
2d1948d0b6cf
b778d55d99df
ac0d54b09eac
Use case 4: List all Docker images not used by any container
Code:
docker images --filter dangling=true
Motivation:
Over time, unused Docker images can accumulate, wasting valuable storage resources. Identifying and potentially removing these “dangling” images—those not associated with any containers—can help streamline storage usage and maintain a cleaner Docker environment.
Explanation:
The --filter
option applies specific criteria to the listing. With dangling=true
, this filter focuses on images that aren’t associated with any currently running or stopped containers, making it easier to identify candidates for deletion.
Example output:
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 4d1a4d0b4a34 5 weeks ago 125MB
<none> <none> 3abf4d2a0b1e 1 month ago 85.6MB
Use case 5: List images that contain a substring in their name
Code:
docker images "*name*"
Motivation:
When managing a large repository of images, filtering by a specific substring can greatly enhance efficiency. This use case is beneficial for users who need to quickly locate images related to specific projects or services by name, thus streamlining image management processes.
Explanation:
By passing a wildcard string (e.g., *name*
) as an argument, the command searches and lists images containing the specified substring in their repository names. This can be combined with wildcards to broaden or narrow search parameters as needed.
Example output:
REPOSITORY TAG IMAGE ID CREATED SIZE
myapp-name v1.0 2e4a4b3d1cfa 3 weeks ago 100MB
project-name stable 1a5c3d0d4bbf 2 months ago 150MB
Use case 6: Sort images by size
Code:
docker images --format "{{.ID}}\t{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -k 2 -h
Motivation:
Sorting images by size can be crucial for optimizing disk space usage and identifying resource-heavy images that may require attention. Prioritizing reductions in the size of large images can significantly impact operational efficiency and cost savings for large-scale deployments.
Explanation:
The --format
option allows the user to customize the output using placeholder variables. In this case, {{.ID}}
, {{.Size}}
, and {{.Repository}}:{{.Tag}}
are used to format each line with specific details. Piping this output to sort -k 2 -h
arranges the images by size in human-readable format.
Example output:
ac0d54b09eac 32.3MB redis:6-alpine
2d1948d0b6cf 85.6MB ubuntu:latest
b778d55d99df 133MB nginx:stable
Conclusion:
Mastering the docker images
command and its various options is fundamental for anyone involved in Docker-based development or deployment. By tailoring the command’s output to different contexts—be it through filtering, sorting, or formatting—users can achieve greater control and clarity over their Docker images, ultimately enhancing productivity and system efficiency. Whether managing large-scale deployments or simply cleaning up a development environment, the docker images
command proves to be an invaluable utility.