现许多团队使用 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 镜像的更多相关文章

  1. Sonatype Nexus Repository Manager清除无用的docker镜像

    1.创建定时任务 2.先run一下看是否能删除无用镜像

  2. 清理Xcode中无用的 Provisioning Profile.

    Xcode中如果添加过多个开发者账号, 慢慢就会发现 Provisioning Profile 有很多, 无用的 Provisioning Profile Xcode也不会自动删除, 想要清理的话, ...

  3. Ubuntu技巧之清理系统中无用的软件包

    如果你频繁的在你的系统中安装/卸载,那么不时的清理一下你的系统是十分必要的. 在Ubuntu终端中执行如下命令: sudo apt-get autoremove 屏幕输出是这个样子的: Reading ...

  4. docker镜像、容器

    第一部分:Docker镜像的基本知识 1.1 什么是Docker镜像 从整体的角度来讲,一个完整的Docker镜像可以支撑一个Docker容器的运行,在 Docker容器运行过程中主要提供文件系统视角 ...

  5. SpringBoot系列: 制作Docker镜像的全过程

    本文主要参考了 https://segmentfault.com/a/1190000016449865 , 感谢作者的付出. 另外,  在本文中, 演示了Windows+Maven+Docker To ...

  6. Devops(四):Docker 镜像管理

    参考 <Docker中上传镜像到docker hub中> <Docker 镜像管理> <通过容器提交镜像(docker commit)以及推送镜像(docker push ...

  7. 深入分析 Docker 镜像原理

    摘要:近日, DaoCloud 软件工程师孙宏亮在 CSDN Container 微信群为大家带来了 Docker 镜像原理的深度分享,本次分享的重点是 Docker 镜像,分享的内容主要包含两个部分 ...

  8. PyCharm使用之利用Docker镜像搭建Python开发环境

      在我们平时使用PyCharm的过程中,一般都是连接本地的Python环境进行开发,但是如果是离线的环境呢?这样就不好搭建Python开发环境,因为第三方模块的依赖复杂,不好通过离线安装包的方式安装 ...

  9. 如何构建 Apache DolphinScheduler 的 Docker 镜像

    继昨日发布第一个 [官方 Docker 镜像] 后,有几位小伙伴私信想自己进行编译,这里也将 Docker 的主要贡献者文禾同学整理的文档进行分享.以下是全文内容: 您能够在类 Unix 系统和 Wi ...

随机推荐

  1. [JZOJ6089]【CodeChef 2014 April Challenge】Final Battle of Chef【数据结构】【整体二分】

    Description \(n,q,V\leq 100000,w_i\leq 10^9\) Solution 又是一道大数据结构 由于有一个下取整,这就导致了不同时间的修改值是不能简单的直接加在一起的 ...

  2. create-react-app安装出错问题解决

    在用create-react-app的时候 报错 错误如下图: 在SF上查到说是或许是因为国内npm拉去资源,拉去不到的问题,可以试着从解决创建create-react-app慢的方法着手: 解决方法 ...

  3. tomcat无法登录

    最近开始学JEE,在配置环境时,使用了tomcat 7.x的版本,然而点击manager app时无法登录. 按照网络上的教程(如:http://www.oschina.net/question/19 ...

  4. Hibernate3.3.2_JUnit_BoforeClass不报异常的Bug处理

    假如你把配置文件写错了,myeclipse竟然不报错,只说sf空指针. <mapping class="com.oracle.hibernate.model."/> / ...

  5. 2-7 js基础-ajax封装

    function json2url(json) { var arr = []; for (var name in json) { arr.push(name+'='+encodeURIComponen ...

  6. 使用Jasperreporter生成入库出库单打印等报表操作

    项目需要打印报表:就是那种生成入库单,出库单等的操作.使用到的技术:使用iReport Designer5.1.0设计报表,使用struts2+jasperreporter生成最终填充数据的报表 首先 ...

  7. mysql查看版本

    四种方式: 1. 命令行 ------------------->$ mysql -V mysql Ver , for Linux (x86_64) using EditLine wrapper ...

  8. Delphi下OpenGL2d绘图(05)-画图片Bmp

    一.前言 找了不少资料,要画图片要先处理一下,需要引用别的单元,Delphi中没带,需要另外下载Gl.pas.看网上说是自带的OpenGl单元封装的是1.0版的,有此函数未声明.网上可以找到Gl.pa ...

  9. MVC缓存(二)

    依赖缓存: 1.监视特定的数据库表,当数据库表里数据发生变化时,自动删除缓存项,并向Cache中添加新的项. using System; using System.Collections.Generi ...

  10. PHP项目学习——控件

    主要是在项目学习中总结的一些东西 动态效果 flashbar滚动条,增加动态效果,直接嵌入html中 <!--flash滚动条--> <object classid="cl ...