

创建镜像发布到镜像仓库【不依赖docker环境】 - 俞正东
source link: https://www.cnblogs.com/yudongdong/p/17258695.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

创建镜像发布到镜像仓库【不依赖docker环境】 - 俞正东 - 博客园

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

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

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

image
macos平台

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服务 欢迎试用~

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

Recommend
-
93
用友云开发者中心是基于Docker容器进行微服务架构应用的落地与管理。相信各位同学在使用的过程中,会发现随着Docker镜像的增多,占用磁盘空间也约来越多。这时我们需要清理私有镜像仓库中不需要的镜像。但在实际操作时,才会发现这本以为很简单的任务中却暗藏玄机...
-
27
前言 前面讲完了docker 镜像和容器,以及通过Dockerfile 定制属于我们自己的镜像,那那现在就是需要将我们自己定制的镜像存放到仓库中供他们使用。这一套流程才算是正式走完了。从获取镜像,操作镜像容器,定制镜像,上传镜像...
-
24
在使用 Kubernetes 时,我们需要经常访问 gcr.io 镜像仓库,由于众所周知的原因,gcr.io 在中国无法访问。gcr.azk8s.cn 是 gcr.io 镜像仓库的代理站点,原来可以通过 gcr.azk8s.cn 访问 gcr.io 仓库里的镜像,但是目前 *.azk8s.cn 已经仅...
-
9
Harbor官方介绍 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor...
-
9
搭建私有docker镜像仓库 作者: wencst 分类: linux,Uncategorized,
-
6
Harbor企业级私服Docker镜像仓库搭建及应用 Docker Hub作为Docker默认官方公共镜像,如果想要...
-
3
一.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64
-
5
本文记录发布镜像到 DockerHub 和 阿里云镜像仓库。工作中使用的是JFrog Artifactory 和 Harbor,没有太大差别。 发布镜像到DockerHub
-
8
搭建私有Docker镜像仓库学习笔记 搭建没有GUI界面的仓库 通过Docker官方提供的镜像搭建镜像仓库 docker run --name registry --restart=always -p 5000:5000 -d -v registry-data:/var/lib...
-
10
Docker镜像仓库harbor的搭建与使用 2022-12-19 2 分钟阅读 一:我们在公司内部建立了Docker内部镜像仓库: harbor是vmware出的一个docker镜像仓库,本质是一组容器的集合体,算是一个多容器的pod. 数据卷缺省是宿...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK