一键清理 Nexus 中无用的 Docker 镜像
现许多团队使用 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 Task 来清理物理空间。先运行 Purge unused docker manifests and images,再运行 Compact blob store。

此时,可以查看磁盘目录 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 镜像的更多相关文章
- Sonatype Nexus Repository Manager清除无用的docker镜像
1.创建定时任务 2.先run一下看是否能删除无用镜像
- 清理Xcode中无用的 Provisioning Profile.
Xcode中如果添加过多个开发者账号, 慢慢就会发现 Provisioning Profile 有很多, 无用的 Provisioning Profile Xcode也不会自动删除, 想要清理的话, ...
- Ubuntu技巧之清理系统中无用的软件包
如果你频繁的在你的系统中安装/卸载,那么不时的清理一下你的系统是十分必要的. 在Ubuntu终端中执行如下命令: sudo apt-get autoremove 屏幕输出是这个样子的: Reading ...
- docker镜像、容器
第一部分:Docker镜像的基本知识 1.1 什么是Docker镜像 从整体的角度来讲,一个完整的Docker镜像可以支撑一个Docker容器的运行,在 Docker容器运行过程中主要提供文件系统视角 ...
- SpringBoot系列: 制作Docker镜像的全过程
本文主要参考了 https://segmentfault.com/a/1190000016449865 , 感谢作者的付出. 另外, 在本文中, 演示了Windows+Maven+Docker To ...
- Devops(四):Docker 镜像管理
参考 <Docker中上传镜像到docker hub中> <Docker 镜像管理> <通过容器提交镜像(docker commit)以及推送镜像(docker push ...
- 深入分析 Docker 镜像原理
摘要:近日, DaoCloud 软件工程师孙宏亮在 CSDN Container 微信群为大家带来了 Docker 镜像原理的深度分享,本次分享的重点是 Docker 镜像,分享的内容主要包含两个部分 ...
- PyCharm使用之利用Docker镜像搭建Python开发环境
在我们平时使用PyCharm的过程中,一般都是连接本地的Python环境进行开发,但是如果是离线的环境呢?这样就不好搭建Python开发环境,因为第三方模块的依赖复杂,不好通过离线安装包的方式安装 ...
- 如何构建 Apache DolphinScheduler 的 Docker 镜像
继昨日发布第一个 [官方 Docker 镜像] 后,有几位小伙伴私信想自己进行编译,这里也将 Docker 的主要贡献者文禾同学整理的文档进行分享.以下是全文内容: 您能够在类 Unix 系统和 Wi ...
随机推荐
- [JZOJ6089]【CodeChef 2014 April Challenge】Final Battle of Chef【数据结构】【整体二分】
Description \(n,q,V\leq 100000,w_i\leq 10^9\) Solution 又是一道大数据结构 由于有一个下取整,这就导致了不同时间的修改值是不能简单的直接加在一起的 ...
- create-react-app安装出错问题解决
在用create-react-app的时候 报错 错误如下图: 在SF上查到说是或许是因为国内npm拉去资源,拉去不到的问题,可以试着从解决创建create-react-app慢的方法着手: 解决方法 ...
- tomcat无法登录
最近开始学JEE,在配置环境时,使用了tomcat 7.x的版本,然而点击manager app时无法登录. 按照网络上的教程(如:http://www.oschina.net/question/19 ...
- Hibernate3.3.2_JUnit_BoforeClass不报异常的Bug处理
假如你把配置文件写错了,myeclipse竟然不报错,只说sf空指针. <mapping class="com.oracle.hibernate.model."/> / ...
- 2-7 js基础-ajax封装
function json2url(json) { var arr = []; for (var name in json) { arr.push(name+'='+encodeURIComponen ...
- 使用Jasperreporter生成入库出库单打印等报表操作
项目需要打印报表:就是那种生成入库单,出库单等的操作.使用到的技术:使用iReport Designer5.1.0设计报表,使用struts2+jasperreporter生成最终填充数据的报表 首先 ...
- mysql查看版本
四种方式: 1. 命令行 ------------------->$ mysql -V mysql Ver , for Linux (x86_64) using EditLine wrapper ...
- Delphi下OpenGL2d绘图(05)-画图片Bmp
一.前言 找了不少资料,要画图片要先处理一下,需要引用别的单元,Delphi中没带,需要另外下载Gl.pas.看网上说是自带的OpenGl单元封装的是1.0版的,有此函数未声明.网上可以找到Gl.pa ...
- MVC缓存(二)
依赖缓存: 1.监视特定的数据库表,当数据库表里数据发生变化时,自动删除缓存项,并向Cache中添加新的项. using System; using System.Collections.Generi ...
- PHP项目学习——控件
主要是在项目学习中总结的一些东西 动态效果 flashbar滚动条,增加动态效果,直接嵌入html中 <!--flash滚动条--> <object classid="cl ...