【DevOps】第二步:Docker镜像打包上传至仓库
镜像仓库
镜像仓库有好些地方可以存,大部分的公有云均提供免费的镜像仓库,常见如下:
- 腾讯云:https://console.cloud.tencent.com/tke2/registry/user/self?rid=1(需登录)
- 阿里云: https://cr.console.aliyun.com/cn-hangzhou/instances/repositories(需登录)
- 自建私有仓库,参考之前的一篇文章docker私有仓库搭建
- Docker Hub:不涉及私密的或者你想公开的镜像可以上传到https://hub.docker.com/。
打包上传shell脚本
统一打包流程,每个项目中添加make.sh脚本文件,一个典型的make文件如下:
#!/bin/sh echo "开始制作镜像..." image_tag=`date +%Y%m%d` #_%H%M echo "当前时间:$image_tag" docker build -t ccr.ccs.xxx.com/abc/api:v${image_tag} . echo "制作镜像成功!" echo "登录" docker login echo "镜像版本提交" docker push ccr.ccs.xxx.com/abc/api:v${image_tag} echo "镜像最新版本提交" docker tag ccr.ccs.xxx.com/abc/api:v${image_tag} ccr.ccs.xxx.com/abc/api:latest docker push ccr.ccs.xxx.com/abc/api:latest
注:Dockerfile和make.sh在同一目录下。
docker build 命令用法
docker build [OPTIONS] PATH | URL | -
- 命令参数
命令, 缩写 | 描述 |
---|---|
--add-host | 增加自定义主机和IP映射(host:ip) |
--build-arg | 设置构建时的变量 |
--cache-from | 用于缓存资源的镜像 |
--cgroup-parent | 可选的容器上层cgroup |
--compress | 使用gzip 压缩构建context |
--cpu-period | 限制CPU CFS(完全公平调度程序)周期 |
--cpu-quota | 限制CPU CFS(完全公平调度程序)配额 |
--cpu-shares , -c | CPU共享(相对权重) |
--cpuset-cpus | 允许执行的CPU (0-3, 0,1) |
--cpuset-mems | 允许使用的内存 (0-3, 0,1) |
--disable-content-trust true | 忽略镜像验证 |
--file , -f | Dockerfile名称 (默认 ‘PATH/Dockerfile’) |
--force-rm | 始终移除中间容器 |
--iidfile | 镜像ID写入文件 |
--isolation | 容器隔离技术 |
--label | 设置镜像metadata信息 |
--memory , -m | 内存限制 |
--memory-swap | 交换限制等于内存加交换,“-1”:启用无限制交换 |
--network | 在生成期为RUN指令设置网络模式 (API 1.25+) |
--no-cache | 不使用缓存 |
--output , -o | 输出(格式:type=local,dest=path) (API 1.40+) |
--platform | 如果支持多平台,则设置 (experimental (daemon)API 1.32+) |
--progress | 默认auto,设置进度输出类型 (auto, plain, tty). |
--pull | 总是尝试拉取最新的镜像版本 |
--quiet , -q | 不输出构建过程,成功时直接打印镜像ID |
--rm | 默认true,构建成功后删除中间容器 |
--secret | API 1.39+ Secret file to expose to the build (only if BuildKit enabled): id=mysecret,src=/local/secret |
--security-opt | Security options |
--shm-size | Size of /dev/shm |
--squash | experimental (daemon)API 1.25+ Squash newly built layers into a single new layer |
--ssh | SSH agent socket or keys to expose to the build (only if BuildKit enabled) |
--stream | (experimental (daemon)API 1.31+ ) Stream attaches to server to negotiate build context |
--tag , -t | 镜像名和tag,格式为‘name:tag’ |
--target | Set the target build stage to build. |
--ulimit | Ulimit 选项 |
参考已有的范例,Dockerfile和shell脚本只需要简单熟悉一下即可编写。
这一步很关键,是自动打包的根本。make.sh脚本灵活,可执行配置文件的替换,多镜像版本的生成等自定义操作。相比自动化构建平台基于Dockerfile和git commit来构建更具灵活性。
jenkins job配置
源码管理
jenkins会将git项目拷贝至job目录下。
构建触发器
jenkins定时检测代码变动(这里是每分钟检测一次),如果发现有代码提交记录,则触发下一步的构建。
构建
构建包括2部分:
- SSH site: SSH的主机地址
- Command: 在主机上执行的命令
构建日志
打包流程
- 提交代码
- jenkins每分钟检测git仓库分支的代码变动
- 若有代码提交记录,触发下一步构建
- 构建过程调用项目的make.sh文件,执行镜像打包上传
参考
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
运维编排系列场景-----批量释放实例
应用场景 因某些原因临时创建一些实例,使用完成后无需在继续保留这些实例,因此需要批量释放实例。或某些特殊的原因需要批量释放实例。 解决方案 模版功能:功能一:只要输入实例就可以批量释放所有的实例,释放实例时可以选择是否释放状态为Running的实例。功能二:系统无法删除预付费实例,因此想要删除预付费实例时,首先将其转换成按量付费才能删除。 一、打开控制台,找到运维编排 二、查找模版1.批量删除非预付费实例由于系统已经给了此公共模版,因此可以直接在公共模版中搜寻此模版ACS-ECS-BulkyDeleteInstanceByInstanceIds,此模版主要是删除非预付费实例。 2.批量删除预付费实例搜索公共模版ACS-ECS-BulkyDeletePrepaidInstanceByInstanceIds,此模版将预付费转换为按量付费,并实现批量删除,所需输入参数与批量删除实例基本相同。 三、创建执行搜索到模版后,点击创建执行,准备执行此模版 四、输入参数当执行模版前,需要首先输入参数,根据实际的需要来选择参数,参数输入完毕后点击下一步:确认创建,如下图所示。 五、执行模版当所有的填充内...
- 下一篇
阿里云虚拟主机、ECS云服务器和轻量应用服务器的区别及如何选择?
阿里云虚拟主机、ECS云服务器和轻量应用服务器有什么区别?这些主机都能建站,那么在使用环境和实际操作中区别还是很大的。魏艾斯博客从技术、性能等方面详细讲解这三者的区别。 1、云虚拟主机不需要用户参与服务器运维,权限低,适用于入门级建站;2、ECS服务器需要用户根据业务需要自行搭建环境,权限高,支持弹性扩容,技术门槛要求一些;3、轻量应用服务器介入二者之间,有提供一键搭建环境功能,适合想使用ecs云服务器但是又不懂的用户入手。 名称 独享虚拟主机 ECS服务器 轻量应用服务器 产品特点 每台独享虚机的CPU内存、带宽、硬盘均为独享,具有独立 IP 一个虚拟的计算环境,包含了 CPU、内存、操作系统、磁盘、带宽等最基础的服务器组件 在云服务器基础上增加了很多一键安装、运行的功能,本质上还是云服务器 适用人群 独享资源,空间超大,可视化控制面板,预装网站环境,入门新手和小微企业建站首选 技术能力强的IT创业公司/互联网公司对服务器有大量资源需求的传统行业企业PaaS和SaaS的开发者和企业 需要一个快速进入开发状态的资源集合的个人项目开发者需要创建个人应用(如个人博客,个人云盘等)技术业余爱...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS6,CentOS7官方镜像安装Oracle11G