定时清理docker私服镜像的方法

使用CI构建docker镜像进行发布极大促进了大家的版本发布效率,于是镜像仓库也就急速膨胀。为了缓解磁盘压力,我们需要设置一些清理策略。

对于不同docker镜像的清理策略应该是不同的。比如,默认保留最近5个版本的镜像,对于工具类的image保留全部,对于业务类的image保留一个月之类的。

简单保留5个image的方式如下:

下载 https://github.com/mlabouardy/nexus-cli , 使用cli来执行删除。

下载

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

配置

./nexus-cli configure

最终会在本目录下创建.credentials 文件

# Nexus Credentials
nexus_host = "http://nexus.demo.com"
nexus_username = "admin"
nexus_password = "adminpass"
nexus_repository = "your-docker-private-repo"

注意,host填写的nexus的host和端口,不是docker对应的repo的端口。

nexus_repository就是docker对应的repo。

查看镜像

./nexus-cli image ls

保留最近5个

./nexus-cli image delete -name mlabouardy/nginx -keep 5

综合脚本

clean.sh

image_file=image.txt
CLI_HOME=/data/nexus3
KEEP_VERSION_NUM=5

$CLI_HOME/nexus-cli image ls > $image_file
sed -i '$d' $image_file

cat $image_file | while read line
do
 echo "清理$line"
 $CLI_HOME/nexus-cli image delete -name $line -keep $KEEP_VERSION_NUM
done

定时任务

crontab -e

0 2 * * * sh /data/nexus3/clean.sh

创建nexus task

思考

前面提到,对应不同的image,应该选择不同的保留策略的。当然不能直接保留5个。比如某个工具镜像,虽然开发很勤快,但应用的也许还是老版本。对于业务镜像,一天发布了n次,添加了n个镜像。怎么维护这些版本呢?

一个粗略的想法是,规范image名称,比如tools-, biz-之类添加前缀。

分不同的repo。 对于工具类,单独一个repo,业务自己一个repo,对不同的repo执行不同的保留策略。

总结

以上所述是小编给大家介绍的定时清理docker私服镜像的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Docker获取镜像报错docker: Error response from daemon

    今天在使用docker获取镜像时,出现了镜像获取报错的问题,找到了解决的方法记一下. 一.问题 ➜ ~ docker search sameersbn Error response from daemon: Get https://index.docker.io/v1/search?q=sameersbn&n=25: dial tcp: lookup index.docker.io on 192.168.65.1:53: read udp 192.168.65.2:45190->192.16

  • 从零开始构建docker基础镜像的方法

    段子 今年基本已经结束了,我问了很多朋友今年挣钱了没?大多朋友都有挣,而且挣得五花八门:有挣个屁的,有挣个锤子的,有挣个毛的,更有甚者挣个妹的,奢侈之极!最恐怖的是挣个鬼的!有的还可以,挣个球,下午我碰见一朋友,问今年挣了吗?他望着天空喃喃自语:挣个鸟!看吧,只要肯努力,什么都能挣到. 年末将至,忽然发现,从创建开始到现在,整整一年时间,没有写过多少东西.为了留下一点痕迹,也是为了整理一下自己的收获,为17年画上一笔浓郁的色彩. 最近在看一本入门级机器学习的书,里面的案例基本上是python实现

  • 详解如何使用Docker部署一个web项目并打包成镜像文件

    docker基本入门以后,可以试试打包docker镜像与dockerfile了 docker镜像 docker hub仓库有2类仓库,用户仓库和顶层仓库,用户仓库由docker用户创建的,顶层仓库由docker内部的人来管理的.仓库里存放的是镜像文件,那么问题来了 ,怎么去创建镜像呢? how to create image 构建docker镜像的有2种方法: 1.使用docker commit命令. 2.使用docker build 命令和Dockerfile文件.在这里并不推荐使用docke

  • 解决docker pull镜像速度慢的问题的方法

    直接下载Docker镜像时,由于种种原因,经常下载失败,即使连接成功也是很慢,怎么办呢 目前我知道可以提升速度的办法:DaoCloud 提供Docker Hub Mirror服务 用户可以进入Docker Hub Mirror注册入口注册(https://account.daocloud.io/signin).在进入控制台页面后直接点击 启动你的加速器后,您即可得到一个Mirror的地址,将该地址配置在Docker Daemon的启动脚本中,重启Docker Daemon即可使得Docker H

  • Docker中配置国内镜像设置

    本文介绍了Docker中配置国内镜像设置,分享给大家,具体如下: 1. 为什么要为docker配置国内镜像 在正常情况下,docker有一个默认连接的国外官方镜像,在国外的网友访问该官方镜像自然不成问题,但是国内毕竟不是国外,由于国情不同,中国的网络访问国外官方镜像网速一向很慢,而且往往还会遭遇断网的窘境,所以说我们要想正常使用docker的镜像,那么我们就不得不配置相应的国内镜像. 2. 可以使用的国内镜像有哪些 Docker可以配置的国内镜像有很多可供选择,比如说:阿里云,网易蜂巢,DaoC

  • docker创建redis镜像的方法

    本文介绍了docker创建redis镜像的方法,分享给大家,具体如下: 直接pull redis 镜像 创建redis的镜像有几种方式,可以直接从仓库中拉取. 首先说说docker的生命周期 1.docker的创建方式,有两种方式: 1)可以直接run ,跳过上面的步骤.举个栗子: 在构建镜像,要提供访问的端口,-p为端口映射的 1.创建并启动,设置端口映射 docker run -p 127.0.0.1:6379:6379 redis docker run 备注:docker run命令:重新

  • 定时清理docker私服镜像的方法

    使用CI构建docker镜像进行发布极大促进了大家的版本发布效率,于是镜像仓库也就急速膨胀.为了缓解磁盘压力,我们需要设置一些清理策略. 对于不同docker镜像的清理策略应该是不同的.比如,默认保留最近5个版本的镜像,对于工具类的image保留全部,对于业务类的image保留一个月之类的. 简单保留5个image的方式如下: 下载 https://github.com/mlabouardy/nexus-cli , 使用cli来执行删除. 下载 wget https://s3.eu-west-2

  • 使用dockerfile构建nginx镜像的方法示例

    Dockerfile介绍 Docker通过读取Dockerfile里面的内容可以自动build image,Dockerfile是一个包含了build过程中需要执行的所有命令的文本文件.也可以理解为Dockfile是一种被Docker程序解释的脚本,由一条一条的指令组成,每条指令对应Linux系统下面的一条命令,由Docker程序将这些Dockerfile指令翻译成真正的Linux命令.Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefil

  • Docker 删除及清理镜像的方法

    目录 一.通过标签删除镜像 二.通过ID删除镜像 三.删除镜像的限制 四.清理镜像 一.通过标签删除镜像 通过如下两个都可以删除镜像: docker rmi [image] 或者: docker image rm [image] 支持的子命令如下: -f, -force: 强制删除镜像,即便有容器引用该镜像: -no-prune: 不要删除未带标签的父镜像: 例如,我们想删除上章节创建的 allen_mysql:5.7 镜像,命令如下: docker rmi allen_mysql:5.7 从上

  • docker prune命令可定时清理不常用数据的实现

    目录 docker system df docker system prune 如何清理none对象 修剪镜像 清理无容器使用的镜像 修剪容器 修剪卷 修剪网络 修剪一切 场景:使用docker引擎服务时间久了,会发现磁盘空间越来越大,现在要删除关于docker相关不用的数据来释放磁盘空间 先看下docker system命令 docker system 目前拥有四个子命令,分别是: docker system df docker system events docker system info

  • 浅谈使用Maven插件构建Docker镜像的方法

    本文介绍了使用Maven插件构建Docker镜像的方法,分享给大家,具体如下: 工具 工欲善其事,必先利其器.笔者经过调研,有以下几款Docker的Maven插件进入笔者视野: 插件名称 官方地址 docker-maven-plugin https://github.com/spotify/docker-maven-plugin docker-maven-plugin https://github.com/fabric8io/docker-maven-plugin docker-maven-pl

  • docker registry私服搭建的方法

    目前为止,docker官方的registry镜像分为两个版本,v2和v2以前的版本,我管它叫v1,v1使用python编写的,之后的v2用的go语言,而且它们的API也不一样,本文将分别搭建基于SSL和登录认证的以上两个版本的docker私服. registry(v2) 搭建环境:172.16.71.52 (contos7,docker1.8) 首先下载镜像 docker pull resigtry:2 创建证书 mkdir -p certs && openssl req \ -newke

  • Docker Dockerfile 定制镜像的方法

    使用 Dockerfile 定制镜像 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么无法重复的问题.镜像构建透明性的问题.体积的问题就都会解决.这个脚本就是 Dockerfile. Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. 此处以定制 nginx 镜像为例,使用 Dockerfile

  • 通过Dockerfile构建Docker镜像的方法步骤

    Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. Dockerfile支持Shell类的行尾添加"\"的命令换行方式,以及行首"#"进行注释的格式. 使用Dockerfile构建Docker镜像时注意事项: (1).尽量选取满足需求但较小的基础系统镜像; (2).清理编译生成文件.安装包的缓存等临时文件; (3).安装各个软件时候要指定准确的版本号,并避免引入不

随机推荐