容器镜像生命周期管理

1.什么是容器镜像生命周期管理

容器的使用离不开镜像。以Docker为代表的容器技术,可以将应用打包成标准格式的镜像,并且应用会以容器的方式再度启用运行。在真正的生产环境中,我们会需要大量的镜像,第三方或者是自建的;大量镜像伴随而来的是需要保存、分发、使用、升级更新等管控工作。

如果没有有效的容器镜像生命周期管理,那么种类繁多的容器镜像升级更新对于运维人员来说简直是灾难。

为了使大家在CICD场景中,对容器镜像生命周期管理有一个更加直观的观察。请看下图:

图1-1 企业级——开发、持续集成、持续部署流程

  1. 经过单元测试之后,代码打包形成第一个“APP镜像”。

  2. “APP镜像”进行集成测试

  3. “APP镜像”进行SIT测试

  4. “APP镜像”进行UAT测试

  5. “APP镜像”经过上述四轮测试成功之后,运维管理员将“APP镜像”从开发测试仓库PUSH到生产仓库,最后通过生产CPAAS平台拉取启动容器,提供服务。

  6. 最后,APP进行版本迭代更新之后,将旧版本镜像打上版本标签、一段时间过后删除销毁。

  7. 完成镜像的整个生命流程。

2.如何进行容器镜像生命周期管理

容器镜像生命周期管理图2-1 容器镜像生命周期流程图

3.在大规模使用容器作为服务运行载体的情况下,如果基础镜像升级了,如何保证子镜像版本也能够升级。

2.1 方案一

图2.1-1 方案一

该方案如上图所示:

  1. 每一层级的容器镜像通过Dockerfile相关联。

  2. Dockerfile在每一次BaseImage升级更新中,不用做任何更改。

  3. 更新BaseImage之后,执行docker tag 命令,将旧版本的子镜像重命名为其他版本,如v5。

  4. 通过docker rmi 命令删除旧版镜像tag标签。

  5. 重新执行 docker build命令,构建latest版本镜像。

构建镜像目录如下:

../build-docker├── MysqlImage│   ├── Dockerfile│   └── mysql.tar.gz├── RedisImage│   ├── Dockerfile│   └── Redis.tar.gz├── TomcatImage│   ├── Dockerfile│   └── tomcat-8.tat.gz└── update.sh3 directories, 7 files

执行自动化脚本,更新“基础镜像”:

#!/bin/bashif [ -n \"$1\" ];thenimageVersion=$1elseimageVersion=oldestfidocker tag rhel7.5:latest  rhel7.5:$imageVersiondocker rmi rhel7.5:latest

可执行自动化脚本,构建“基础平台镜像”:

#!/bin/bashif [ -n \"$1\" ];thenimageVersion=$1elseimageVersion=oldestfidirs=(\"MysqlImage\"\"RedisImage\"\"TomcatImage\")for dir in ${dirs[@]}do    docker tag $dir:latest $dir:$imageVersion    docker rmi $dir:latest    docker build -t $dir:latest \"./$dir\"done

场景一:BaseImage进行了更新

docker tag rhel7.5:latest rhel7.5:oldestdocker rmi rhel7.5:latest docker load -i new-rhel.tar./update.sh

直接执行上述命令即可,也可以将上述命令放入脚本中,在更新基础镜像的时候执行脚本。

场景二:tomcat进行了更新

如果是tomcat中间件进行了更新,那只要将<图2.1-2> 中的tomcat-8.tar.gz 进行更新即可。然后通过执行docker build即可。可脚本自动化。

场景三:APP1 进行了更新

同上

场景四:如果在基础镜像更新之后,未来得及更新tomcat镜像,而APP使用了旧版的tomcat镜像

无需担心,APP中的Dockerfile 写的是 FROM tomcat:latest,发现tomcat基础镜像更新之后,执行一次容器构建,然后拉取启动新的镜像,然后销毁旧版容器即可。

2.2 方案二

图2.2-1 方案二

该方案如上图所示:

  1. 所有镜像都FROM 基础镜像,都通过dockerfile与基础镜像相关联。

  2. 当基础镜像更新之后,所有的APP的镜像拉取最新的基础镜像构建应用镜像。

原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/32913.html

Like (0)
EBCloud的头像EBCloud
Previous 2024年4月2日 下午3:28
Next 2024年4月2日 下午3:28

相关推荐

  • 怎么判断一个域名是否被墙外访问,如何判断域名

    如果您确实需要访问被阻止的域名,请考虑使用VPN(虚拟专用网络)来执行此操作。 VPN 会隐藏您的真实IP 地址并帮助您绕过封锁。但使用VPN也可能违反当地法律法规,请谨慎使用。 …

    行业资讯 2024年5月9日
    0
  • 搬瓦工ipv6,搬瓦工服务器被墙

    2020年Bricklayer的IP被封的情况又如何呢? 陌陌是一家随着互联网行业的发展而备受关注并受到用户支持的云服务器提供商。但近年来,Bricklayer的IP地址频频被封,…

    行业资讯 2024年5月8日
    0
  • 万能点击神器

    你是否曾经为了提高点击率而苦恼?是否曾经在搜索引擎优化的道路上一筹莫展?不要担心,今天我将为你介绍一款“万能点击神器”,它能够帮助你解决点击率低下的难题。什么是搜索引擎优化?点击率…

    行业资讯 2024年3月28日
    0
  • 服务器托管一般多少钱

    云服务器行业近年来发展迅速,越来越多的企业和个人选择将服务器托管给专业的服务商,以获得更好的网络服务。但是,大家都想知道的问题是:服务器托管一般多少钱?这个问题涉及到很多因素,下面…

    行业资讯 2024年3月20日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注