从Nexus存储库中清除旧的Docker映像


我们中的许多人都在使用Nexus作为存储库来发布Docker图像。通常,我们用提交散列(或使用semver 理想情况下)在配置项中配置管理自动改变之后,我们将它们推送到注册表中。因此,有许多“不需要的”和“旧的”映像,在我们的案例中,占用了大量的磁盘空间。

我查看了Nexus的图形界面,显然没有什么可以同时删除几个Docker图像。甚至,清理旧的托管Docker图像的计划任务,以及清理不再被任何托管图像使用的图层。

因此,我想出了一个简单的bash脚本,它使用码头工人注册应用编程接口来清除码头工人图像,保留最后的X个图像,并删除所有其他图像。但是有更好的解决方案吗?是的!我建了一个Nexus CLI

安装Nexus CLI,找到适合您系统的软件包并下载。对于Linux:

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


下载Nexus命令行界面后。将执行权限添加到二进制文件中:

chmod +x nexus-cli

注意:对于窗口,请确保路径上有可用的命令行界面二进制文件。This page包含在窗口上设置路径的说明。

安装后,通过打开一个新的终端会话并检查nexus-cli是否可用来验证安装是否成功:


完成后,配置Nexus凭据:

nexus-cli configure

Docker Cleanup in Nexus Repository

穿过nexus-cli配置,Nexus命令行界面将提示您四条信息。用户名和密码是您的帐户凭据。您还需要您的Nexus主机名和Docker存储库名称。

应该是这样。从cmd提示符下尝试以下命令,如果您有任何图像,您应该会看到它们被列出:

Docker Cleanup in Nexus Repository

显示图像标签:

nexus-cli image tags -name IMAGE_NAME


Docker Cleanup in Nexus Repository

nexus-cli image info -name IMAGE_NAME -tag TAG

Docker Cleanup in Nexus Repository

要删除特定图像:

nexus-cli image delete -name IMAGE_NAME -tag TAG

Docker Cleanup in Nexus Repository

要仅保留最后的X图像并删除所有其他图像:

nexus-cli image delete -name IMAGE_NAME -keep X

Docker Cleanup in Nexus Repository

就这样!让我们回到Nexus仪表板:

如你所见,Nexus只保留了最后四张图片,删除了其他的。

Docker Cleanup in Nexus Repository

命令行界面仍处于早期阶段,因此欢迎您对项目做出贡献GitHub

这篇文章最初发表于labouardy.com