一键清理 Nexus 中无用的 Docker 镜像

摘要:
目前,许多团队使用Nexus来管理Docker图像。随着产品的不断迭代,图像仓库占据了越来越多的磁盘空间。由于Nexus控制台不提供批量操作图像功能,因此清理图像非常不方便。本文分享了一个在Nexus-Nexus-cli中清理Docker映像的小工具。请参考nexus cli、nexus cliGitHub的相关资料、开发者博客的原文以及nexus的官方博客文章。让我们用nexus-cli+sublime进行演示。列出所有图像$nexus cliimagelsauth servicereport servicefund service这里只有三个示例。清理磁盘空间最后,创建两个Nexus任务来清理物理空间。

  现许多团队使用 Nexus 来管理 Docker 镜像,产品不断迭代,镜像仓库占用的磁盘空间也越来越大。由于 Nexus 的控制台并未提供批量操作镜像功能,清理镜像十分不便。本文分享一个清理 Nexus 中 Docker 镜像的小工具 — nexus-cli

可参考 nexus-cli 的相关资料,nexus-cli GitHub开发者博客原文Nexus 官方博客文章

下面结合 nexus-cli + sublime 做一个演示。

下载脚本并授权

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

配置待清理的库

$ nexus-cli configure
Enter Nexus Host: http://127.0.0.1:8081
Enter Nexus Repository Name: demo
Enter Nexus Username: admin
Enter Nexus Password: xxxxxx

http://127.0.0.1:8081 是 Nexus 服务的地址,为了安全,可以直接在 Nexus 所在的机器处理。

列出所有镜像

$ nexus-cli image ls
oauth-service
report-service
fund-service
...

这里仅列出三个作为例子。

清理镜像

nexus-cli image delete -name IMAGE_NAME -keep X,-keep X 表示保留几个tag

清理单个镜像的tag,这里仅保留最新的两个tag

$ nexus-cli image delete -name fund-service -keep 2
fund-service:2018.11.1-113322 image will be deleted ...
fund-service:2018.11.1-113322 has been successful deleted
fund-service:2018.11.1-145912 image will be deleted ...
fund-service:2018.11.1-145912 has been successful deleted
...

清理所有镜像的tag,结合 sublime 的批量处理功能,十分方便。

一键清理 Nexus 中无用的 Docker 镜像第1张

清理磁盘空间

最后,创建两个Nexus Task 来清理物理空间。先运行 Purge unused docker manifests and images,再运行 Compact blob store

一键清理 Nexus 中无用的 Docker 镜像第2张

此时,可以查看磁盘目录 sonatype-work/nexus3/blobs/ 的磁盘占用情况。

$ du -lh --max-depth=1 . | grep demo
2.1G	./demo

小结

由于开发测试环境中应用迭代非常频繁,镜像消耗磁盘的速度也非常快。若磁盘空间足够,每隔一定时间手工清理即可;若需要频繁清理,使用脚本自动化处理也十分方便。

文首列举的 nexus-cli 的资料中,有 nexus-cli 的更多操作命令,可自行参考。

原文地址:https://cloud.tencent.com/developer/article/1361709

免责声明:文章转载自《一键清理 Nexus 中无用的 Docker 镜像》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#编写QQ接口软件——QQ协议篇flex集成IFrame,IFrame集成UnityWebPlayer直接通讯调用解决方式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

制作CentOS7.6 自动安装ISO镜像光盘

制作CentOS7.6 自动安装ISO镜像光盘1. 系统安装包说明目录树结构|-- .discinfo|-- .treeinfo|-- Packages|-- base|-- images|-- isolinux|-- ks.cfg|-- repodata.discinfo 文件是安装价质的识别信息.treeinfo 文件是系统版本,创建时间及文件目录树结...

docker安装MySQL5.7示例!!坑,ERROR 1045 (28000): Access denied for user

docker  pull  mysql拉取镜像 启动mysql需要做端口映射 -p 其他几个高级操作: Docker安装mysql5.7报错 ERROR 1045 (28000): Access denied for user 【tips】docker安装MySQL5.7ERROR 1045 (28000): Access denied for user...

Docker简介以及安装

Docker简介以及安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.什么是容器 1.一种虚拟化方案   与传统的虚拟机不同,传统的虚拟机是通过中间层将一台或多台独立的机器虚拟运行在物理硬件之上。而容器则是直接运行在操作系统内核之上的用户空间,因此容器虚拟化也被称作操作系统虚拟化。 2.操作系统级别的虚拟化   由于依赖操作...

迁移docker wsl2 VHDX 文件的方法(转发)

原文:迁移docker wsl2 VHDX 文件的方法 像任何使用Windows子系统Linux的人一样,我们都很兴奋在WSL2最终发布时。 使用WSL2,映像/容器存储在虚拟机的VHDX映像中。 清除映像/容器时,VHDX中的空间将被释放,但决不会释放回主机操作系统。这会导致VHDX文件开始失控,如果主引导驱动器空间不足,则会出现问题。 这是一个已知的问...

Dockerfile构建容器镜像

在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低。所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其中,然后让docker读取并分析、执行,那么重复构建、更新将变得很方便,所以Dockerfile就此诞生了。Docker提供了Dockerfile作为构建Do...

Ubuntu18.04安装Docker

由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本: $ sudo apt-get remove docker docker-engine docker-ce docker.io 第一种方法从Ubuntu的仓库直接下载安装: 安装比较简单,这种安装的Docker不是最新版本,不过对于学习够用了,依次执行下面命令进行安装。 $ sud...