当前位置: 首页 > news >正文

如何提高40%的Docker构建时间

1. 背景

在产品开发中构建docker镜像,随着时间的推移,会变得越来越大,构建时间也越来越长。我的目标是构建时间不超过 5 分钟。

2. 遵循Dockerfile的最佳实践

我们首先确保Dockerfile文件遵循Docker官方的最佳实践,具体做法有:

  • 尽量使用官方的基础镜像,Docker推荐使用Alpine的镜像。
  • 使用多阶段构建
  • 使用.dockerignore去除无关的文件
  • 创建临时容器
  • 不要安装不用的包
  • 解耦应用程序
  • 利用缓存构建镜像
  • 拆分复杂的RUN命令为多行,并用 / 分割

更多详细的最佳实践可以参考官方文档:https://docs.docker.com/develop/develop-images/instructions/

我们在此基础上做了2个修改,极大的缩短了构建时间。

首先介绍下两个工具:Buildkit 与 Buildx

3. Buildkit 与 Buildx

3.1 Buildit

Buildit是一个改进过的用来取代传统的Docker构建器的工具,从Docker 23.0开始成为默认构建器。它包含以下一些功能:

  • 改进的缓存能力
  • 并行构建不同的层
  • 基础镜像的懒加载

使用buildit的时候,会发现比docker build的输出更简洁。

Docker 23.0前的版本要使用bui

http://www.lryc.cn/news/223007.html

相关文章:

  • 真正解决jellyfin硬解码转码
  • 声音训练数据集哪里找?中文、英文
  • springboot中如何同时操作同一功能
  • YOLOWeeds: 用于棉花生产系统中多类杂草检测的 YOLO 目标检测器的新基准
  • Vue3:自定义图标选择器(包含 SVG 图标封装)
  • NIO讲解
  • react中jest配置,解决node_modules报错esm无法解析的问题
  • Qt6,使用 UI 界面完成命令执行自动化的设计
  • Apache Maven;会话技术
  • Azure - 机器学习:使用自动化机器学习训练计算机视觉模型的数据架构
  • 【C++】stack | queue | priority_queue | deque
  • 华为gre带验证key案例
  • Java算法(三): 判断两个数组是否为相等 → (要求:长度、顺序、元素)相等
  • 基于STM32的设计智慧超市管理系统(带收银系统+物联网环境监测)
  • 深入浅出理解ResNet网络模型+PyTorch实现
  • 【C++】万字一文全解【继承】及其特性__[剖析底层化繁为简](20)
  • 微信小程序之自定义组件开发
  • MCU系统的调试技巧
  • 【机器学习基础】机器学习概述
  • Python Selenium 执行 JavaScript
  • HTML的表单标签和无语义标签的讲解
  • 8.spark自适应查询-AQE之自适应调整Shuffle分区数量
  • 【Java 进阶篇】Java Filter 快速入门
  • Pytorch R-CNN目标检测-汽车car
  • 【PG】PostgreSQL13主从流复制部署(详细可用)
  • 学习pytorch15 优化器
  • [算法日志]图论刷题 沉岛思想的运用
  • Web服务器的搭建
  • 如何使用 GTX750 或 1050 显卡安装 CUDA11+
  • 跟着森老师学React Hooks(1)——使用Vite构建React项目