镜像创建到推送[不依赖docker环境]

文章介绍了名为jib的工具,这是一个跨平台的命令行工具,用于构建docker或OCI类型的镜像,无需依赖Docker环境。jib支持Windows、Linux和macOS,可将应用程序镜像推送到各种仓库,并能生成tar格式文件。文章提供了工具的使用方法和JSON配置文件示例,特别适合在CICD流程中使用。此外,该工具已集成到AntDeploy一键发布工具中,提供VS插件支持。
摘要由CSDN通过智能技术生成

59bc60a5512143f0cfcc704c38ba4d4e.png

工具开发背景

如今,docker镜像常用于工具的分发,demo的演示,第一步就是得创建docker镜像。一般入门都会安装docker,然后用dockerFile来创建镜像,除此以外你还想过有更高效的方式吗?

a76eec8d5675875c1509abae8c9e5f24.png
image

Google开发的jib不依赖docker环境也能创建docker或者OCI类型的镜像,但是可惜它只为java应用而生,其他类型的比如nodejs,.net应用都无法用,而且它是作为maven/gradle的插件形式来工作的,而不是一个纯粹独立构建镜像的工具。

介于上述原因,来介绍我开发的这款工具,名字也叫jib,只不过它是一个纯粹构建镜像工具,支持win,linux,osx三个平台

我的口号是:

Build container images for your any applications.

功能包含:

  • 构建镜像推送到镜像仓库(dockerhub/aliyun/tencent共有仓库,harbor等私有仓库)

  • 构建镜像推送到本地docker环境

  • 构建镜像生成tar格式镜像文件到本地

工具地址:https://github.com/yuzd/jib

367b08580032bd87201bb4b9a796f175.png
image
工具使用

它是一个纯粹构建镜像命令行工具,根据不同的功能有不同的参数,如下图

windows平台
3d8b87bdd5b0fe8b2e758db45b9ab9fb.png
image
macos平台
c48c140e02896b8113ce0544740ac51a.png
image

作为一个纯粹的构建镜像工具,它不需要依赖docker环境,只需要读取一个json配置文件,根据配置生成镜像

json配置文件
命令:jib.exe -push --configfile=demo.json

推送到镜像仓库的配置示例(从阿里云镜像仓库拉取base镜像+我要加的目录=新的镜像并推送到私有仓库):

{
  "BaseHttpProxy": "",
  "BaseImage": "ccr.ccs.tencentyun.com/dotnet-core/aspnet:2.2",
  "BaseImageCredential": {
    "UserName": "aaaaaaaa",
    "Password": "xxxxx"
  },
  "TargetHttpProxy": "",
  "TargetImage": "http://127.0.0.1:5000/test1",
  "TargetTags": [
    "1.0.1"
  ],
  "TargetImageCredential": {
    "UserName": "aaaa",
    "Password": "xxxx"
  },
  "ImageFormat": "Docker",
  "ImageLayersFolder": "E:\\workspace\\demo\\publish",
  "ImageWorkingDirectory": "/publish",
  "Entrypoint": [
    "dotnet"
  ],
  "Cmd": [
    "/publish/RazorTestProject.dll"
  ],
  "ApplicationLayersCacheDirectory": "E:\\workspace\\cache",
  "SkipExistingImages":true,
  "IgnoreList":[
    "支持正则"
  ]
  "Env":{
      "env1":"value1"
  },
  "Ports":[
    {
        "port":8080,
        "protocol":"tcp"
    }
  ],
  "Volumes":[
    "/var/log",
    "/var/log2"
  ]
}
字段名含义备注
BaseHttpProxy代理拉取基础镜像的时候看你需要,格式 ip:port
BaseImage基础镜像地址完整地址,包含了版本,如果仓库地址没有https,请在最前面加上http://
BaseImageCredential拉取基础镜像如果要登录账户名+密码
TargetHttpProxy代理只有在推送到远程镜像且你有需要,才需要配置 格式ip:port
TargetImage目标镜像要推送的目标镜像仓库地址,不包含版本,如果仓库地址没有https,请在最前面加上http://
TargetTags镜像标签可以理解为版本号
TargetImageCredential如果目标镜像仓库要登录账户名+密码
ImageFormat镜像仓库构建格式Docker和OCI两种
ImageLayersFolder要打包进镜像仓库的目录通常这就是你的项目成果物
ImageWorkingDirectory打包的目标仓库的工作目录如果设置那你的文件们都会在这个目录下工作
Entrypoint镜像启动的入口比如dotnet
Cmd镜像启动执行的参数供Entrypoint使用
ApplicationLayersCacheDirectory程序在运行时候会产生缓存目录来加快下次构建速度可以不指定,会用temp目录
Env环境变量可以不指定,容器启动指定也行
Ports端口可以不指定,容器启动指定也行
Volumes共享目录可以不指定,容器启动指定也行
SkipExistingImages如果目标仓库有一模一样的镜像就不会上传比对的是镜像sha256
IgnoreList要打包的目录里面可以排除某些文件正则表达式
tar格式镜像文件本地生成
命令:jib.exe -tar --configfile=demo.json --outfile=demo.tar

示例

{
  "BaseHttpProxy": "",
  "BaseImage": "ccr.ccs.tencentyun.com/dotnet-core/aspnet:2.2",
  "BaseImageCredential": {
    "UserName": "aaaaaaaa",
    "Password": "xxxxx"
  },
  "ImageFormat": "Docker",
  "ImageLayersFolder": "E:\\workspace\\demo\\publish",
  "ImageWorkingDirectory": "/publish",
  "Entrypoint": [
    "dotnet"
  ],
  "Cmd": [
    "/publish/RazorTestProject.dll"
  ]
}

json配置参数就少了推送相关的参数

本地tar文件的镜像,可以通过docker load命令在装载到docker环境中。

推送镜像到本机的docker环境
命令:jib.exe -deamon --configfile=demo.json

json配置和tar差不多

写到最后

该工具支持多平台(linux、win、mac) 17M左右大小,不依赖docker环境,独立构建镜像速度很快,除了第一次基础镜像的拉取需要时间,有缓存的话只需要几秒搞定 适用于在CICD流水线中使用。

我也集成到了我的AntDeploy一键发布工具中, 开源地址:https://github.com/yuzd/AntDeploy.net应用可以下载AntDeploy Vs插件, 可以在vs中一键发布镜像推送到镜像仓库功能,还支持一键部署到iis,windows/linux服务 欢迎试用~

关于我
056db90f6e71045db8b2abaa203c8af8.png
image

微软最有价值专家(MVP),.NET 技术专家,热爱开源,关注并喜欢研究前沿技术,热衷于技术和经验分享,长期撰写技术博客,活跃于开源社区。

173a0dfe5d171f111fee555cab23cb0c.png
image

微软最有价值专家是微软公司授予第三方技术专业人士的一个全球奖项。27年来,世界各地的技术社区领导者,因其在线上和线下的技术社区中分享专业知识和经验而获得此奖项。

MVP是经过严格挑选的专家团队,他们代表着技术最精湛且最具智慧的人,是对社区投入极大的热情并乐于助人的专家。MVP致力于通过演讲、论坛问答、创建网站、撰写博客、分享视频、开源项目、组织会议等方式来帮助他人,并最大程度地帮助微软技术社区用户使用Microsoft技术。

更多详情请登录官方网站https://mvp.microsoft.com/zh-cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值