Cleanup old Docker images from Nexus Repository by@mlabouardy

Cleanup old Docker images from Nexus Repository

Read on Terminal Reader
react to story with heart
react to story with light
react to story with boat
react to story with money
image
Mohamed Labouardy HackerNoon profile picture

Mohamed Labouardy

Many of us, are using Nexus as a repository to publish Docker Images. Typically we build images tagged with the commit hash (or using semver ideally) after SCM change automatically in CI and we push them to registry. As result there are many “unneeded” & “old” images that in our case take significant amount of disk space.

image

I looked around the graphical interface of Nexus and there’s apparently nothing to remove several Docker images at the same time. Or even, a scheduled task to clean up old hosted Docker images, and to also clean up layers which are no longer used by any hosted images.

image

So I have come up with a simple bash script which uses Docker Registry API to purge Docker images and keep the last X images and delete all other. But, is there a better solution ? YES ! I built a Nexus CLI

To install Nexus CLI, find the appropriate package for your system and download it. For linux:

wget https://s3.eu-west-2.amazonaws.com/nexus-cli/1.0.0-beta/linux/nexus-cli

After downloading Nexus CLI. Add the execution permission to the binary:

chmod +x nexus-cli

image

Note: For Windows make sure that nexus-cli binary is available on the PATH. This page contains instructions for setting the PATH on Windows.

After installing, verify the installation worked, by opening a new terminal session and checking if nexus-cli is available :

image

Once done, configure the Nexus credentials:

nexus-cli configure

image

Through nexus-cli configure, the Nexus CLI will prompt you for four pieces of information. The Username and Password are your account credentials. Nexus Hostname & Docker repository name.

That should be it. Try out the following command from your cmd prompt and, if you have any images, you should see them listed

nexus-cli image ls

image

Display image tags:

nexus-cli image tags -name IMAGE_NAME

image

Image description:

nexus-cli image info -name IMAGE_NAME -tag TAG

image

To remove a specific image:

nexus-cli image delete -name IMAGE_NAME -tag TAG

image

To keep only the last X images and delete all other:

nexus-cli image delete -name IMAGE_NAME -keep X

image

That’s it ! Let’s go back to Nexus Dashboard:

image

As you can see, Nexus kept only the last 4 images and deleted the others.

image

The CLI is still in its early stages, so you are welcome to contribute to the project in Github.

react to story with heart
react to story with light
react to story with boat
react to story with money

Related Stories

L O A D I N G
. . . comments & more!