【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: 在主机上执行的命令

构建日志

打包流程

  1. 提交代码
  2. jenkins每分钟检测git仓库分支的代码变动
  3. 若有代码提交记录,触发下一步构建
  4. 构建过程调用项目的make.sh文件,执行镜像打包上传

参考

https://docs.docker.com/engine/reference/commandline/build/

目录
相关文章
|
3天前
|
运维 前端开发 Devops
云效产品使用报错问题之流水线打包docker镜像时报网络代理有问题如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
15天前
|
应用服务中间件 Docker 容器
docker 镜像常用命令
docker 镜像常用命令
35 0
|
15天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
26 0
|
22天前
|
存储 Kubernetes API
Docker拉取镜像或者kubectl出现的这个解决方案x509: certificate signed by unknown authority
Docker拉取镜像或者kubectl出现的这个解决方案x509: certificate signed by unknown authority
55 2
|
24天前
|
Linux Docker 容器
Linux彻底卸载Docker包括运行拉取的镜像
Linux彻底卸载Docker包括运行拉取的镜像
24 1
|
27天前
|
NoSQL 关系型数据库 MySQL
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
265 1
|
28天前
|
Docker 容器
docker删除镜像
docker删除镜像
51 0
|
1月前
|
运维 安全 Devops
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
在数字化转型的浪潮中,企业对于IT基础设施的要求越来越高,不仅需要快速响应市场变化,还要确保系统的稳定与安全。本文深入探讨了如何通过融合DevOps文化和容器化技术来构建一个高效、稳定且易于管理的云基础设施。通过实际案例分析,阐述了持续集成/持续部署(CI/CD)流程的优化、自动化测试、监控以及日志管理等关键环节的实施策略,旨在为运维专业人员提供一套切实可行的解决方案。
28 3
|
1月前
|
运维 Kubernetes Devops
构建高效可靠的云基础设施:DevOps与容器化技术融合实践
【2月更文挑战第30天】 在当今快速迭代和竞争激烈的软件开发领域,传统的IT运维模式已难以满足业务发展的需要。本文将探讨如何通过整合DevOps文化和容器化技术,构建一个既高效又可靠的云基础设施。文章首先回顾了DevOps的核心理念及其对运维工作流的影响,接着深入讨论了容器化技术的优势和挑战,并提出了一套结合两者的实施方案。最后,通过案例分析展示了该方案在实际环境中的应用效果和潜在益处。
|
9天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器技术融合实践
【4月更文挑战第15天】 在当今快速发展的信息技术时代,传统的IT运维模式已难以满足业务敏捷性的需求。本文旨在探讨如何通过整合DevOps理念和容器技术来构建一个高效的自动化运维体系。文章将详细阐述DevOps的核心原则、容器技术的基础知识,以及两者结合的优势。此外,文中还将分享一系列实践经验,包括持续集成/持续部署(CI/CD)流程的搭建、微服务架构的应用,以及监控和日志管理策略的优化,以期帮助企业实现快速、可靠且安全的软件交付过程。