在华中农业大学科研支持下,耀明生物科技完成近亿元天使轮融资
06-18
现在容器化技术发展很快,以Docker镜像为基石,构建镜像的技术也在快速发展。 Docker去年推出的Buildki技术试图解决传统镜像构建过程中存在的问题:多个系统、架构的Docker镜像难以统一、构建过程难以缓存。
为了解决上述问题,基于buildkit的Docker CLI插件buildx引入了--platform --cache-from --cache- to等参数,下面我们就开始CODING DevOps持续集成中如何使用Buildx构建Docker镜像。登录或注册 CODING DevOps 创建项目 -> 模板 选择 DevOps 项目 项目名称 自己填写一个名称。
您可以将其他选项留空。单击完成以创建新的 Dockerfile。
选择代码仓库->快速初始化仓库->勾选启用README.md文件初始化仓库。 -> 点击快速初始化按钮,点击右上角三个点 -> 新建 -> 文件 -> 进入 Dockerfile -> 点击创建,写入以下内容 代码语言:txt Copy FROM alpineRUN set -x \ && sed -我“s/dl- cdn.alpinelinux.org/mirrors.aliyun.com/g”/etc/apk/repositories \ && apk add --no-cache curl git gccARG GIT_COMMIT="unknow"LABEL org.opencontainers.image。
revision=$GIT_COMMITCMD [" sh","-c","uname","-a"]点击提交启用持续集成,选择持续集成->构建计划->创建持续集成任务(新建构建计划配置)- >输入计划名称->选择使用静态配置的Jenkinsfile->选择一个简单的模板->点击确定coding_.jpgCODING DevOps持续集成使用Jenkins,通过Jenkinsfile配置。点击流程配置 -> 文本编辑器 -> 输入以下内容(搜索fix me,替换成自己的内容) -> 点击保存代码语言:txt copy pipeline { Agent Anyenvironment { // PLATFORM = "linux/ amd64,linux/arm64,linux/arm/v7" PLATFORM = "linux/amd64" DOCKER_PASSWORD = "${env.DOCKER_PASSWORD}" // 修复我 DOCKER_USERNAME = "your_username" DOCKER_CLI_EXPERIMENTAL = "enabled" BUILDX_IMAGE= "dockerpracticesig/buildkit: master-tencent" // 修复这里我们使用腾讯云容器服务的 Docker 仓库 DOCKER_REGISTRY= "ccr.ccs.tencentyun.com" // 修复 DOCKER_REPO_NAMESPACE= "your_namespace" } stages { stage('checkout') { steps { checkout([$ class: 'GitSCM', Branches: [[name: env.GIT_BUILD_REF]], userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialId: env.CREDENTIALS_ID]]]) } } stage('将 docker 更新为最新'){ 步骤{ sh "docker 版本" sh "d奥克信息“sh”curl -fsSL | sudo apt-key add -" sh" sudo add-apt-repository \"deb [arch=amd64] \$(lsb_release -cs) stable\"" sh "sudo apt update" sh "sudo apt install docker-ce docker- ce-cli containerd.io -y" sh "docker 版本" sh "docker info" } } stage('setup-buildx'){ 步骤 { sh "docker run --rm --privileged docker/binfmt:a42ee2dcd6cff44b9b95f08dad64 | true" sh "docker buildx create --use --name mybuilder --driver-opt image=${BUILDX_IMAGE}" sh "docker buildx ls" sh "docker buildxspect --bootstrap" } } stage('登录仓库') { 步骤 { sh "echo ${DOCKER_PASSWORD} | docker login -u ${DOCKER_USERNAME} --password-stdin ${DOCKER_REGISTRY}" } } stage('构建镜像') { steps { sh“docker build -t ${DOCKER_REGISTRY}/${DOCKER_REPO_NAMESPACE}/demo --build-arg GIT_COMMIT 。
” sh "docker push ${DOCKER_REGISTRY}/${DOCKER_REPO_NAMESPACE}/demo" } } stage('Build Image-buildx' ) { steps { sh "docker buildx build \ -t ${DOCKER_REGISTRY}/${DOCKER_REPO_NAMESPACE}/demo: buildx \ --platform linux/amd64 \ \$(if [ -f '/root/docker_build_cache/index.json' ];then \ echo ' --cache-from=type=local,src=/root/docker_build_cache '; \ fi) \ --cache-to=type=local,dest=/root/docker_build_cache \ --build-arg GIT_COMMIT \ --push 。" } } }}coding_.jpg 新增环境变量 环境变量可以存储 Docker 注册表密码和其他私有内容选择变量和缓存->进程环境变量->添加环境变量变量名DOCKER_PASSWORD。
默认值是您自己的 Docker 注册表密码。检查机密性 -> 单击“确定”coding_.jpg 以设置构建缓存。
选择变量和缓存 -> 缓存目录 -> 输入 /root/docker_build_cache -> 点击保存更改并点击 Return -> 点击 Build Now 查看结果 点击 Build List -> 点击构建过程中的每个步骤,查看构建结果输出并对比构建镜像和构建 image-buildx 的执行时间,发现两者第一次构建所花费的时间相差不大,而后续每次构建构建 image-buildx 所花费的时间为更短(30 秒 vs 8 秒)。结论 CODING DevOps 的免费版本提供每周 30 分钟/次的配额。
由于国内访问Docker Hub速度较慢,所以上面使用的Docker仓库更换为腾讯云容器服务提供的Docker仓库。用于创建Buildx实例的Buildkit镜像将镜像源替换为腾讯云的dockerpracticesig/buildkit:master-tencent。
可以发现使用buildx构建镜像有很多优点。然而传统的Docker镜像仓库不提供buildx构建,因此使用CODING DevOps构建镜像并推送到仓库是一个不错的选择。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-08
06-18
06-18
06-18
06-17
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用