首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >docker构建nginx(Ingress Nginx)镜像的速度很慢,如何加速

docker构建nginx(Ingress Nginx)镜像的速度很慢,如何加速
EN

Stack Overflow用户
提问于 2021-10-26 02:07:59
回答 2查看 117关注 0票数 2

有时我们会遇到一些nginx漏洞,所以我们需要修复ingress nginx内部的nginx漏洞,但是docker构建-t镜像太慢了。原因是dockerfile内部会进行编译和制作安装过程。如何添加一些参数可以使docker构建过程更快?

尽管docker构建过程会提示make添加-j参数以增加线程数来加速该过程,但dockerfile中没有make相关的参数。直接修改dockerfile不是一个好主意。

dockerfile文件的Source

EN

回答 2

Stack Overflow用户

发布于 2021-10-26 07:02:54

这可能取决于许多事情。这就是为什么我要发布社区wiki的答案,以提供尽可能多的解决方案建议,参考各种教程。

有一些技巧可以用来加快构建Docker镜像的速度。首先,我将向您介绍Google cloud的解决方案

提高Docker镜像构建速度的最简单方法是指定可用于后续构建的缓存镜像。您可以通过在构建配置文件中添加--cache-from参数来指定缓存的镜像,这将指示Docker使用该镜像作为缓存源进行构建。

你可以在这里阅读更多关于Docker Layer Caching的内容。

另一种方式是Structure your Dockerfile instructions like an inverted pyramid

Dockerfile文件中的每个指令都会导致创建一个图像层。Docker使用层来重用工作,并节省带宽。如果满足以下条件,层将被缓存,并且不需要重新计算:

所有之前的层都是拷贝指令的大小写: the files/

  • is unchanged.
  • In case of所有其他指令:命令文本不变。

为了更好地利用Docker缓存,一个好主意是尝试将需要进行大量缓慢工作的层放在Dockerfile早期更改不频繁的层中,并将快速变化和快速变化的层放在最后。结果就像一个倒金字塔。

您也可以使用Only copy files which are needed for the next step

看看这些关于加速构建Docker镜像的很棒的教程:

-5 Tips to Speed up Your Docker Image Build -Speed Up Your Development Flow With These Dockerfile Best Practices -Six更快构建Docker镜像的方法(甚至在几秒钟内)(#更快地构建Docker镜像的六种方法(甚至在几秒钟内)

在最后,我将向您介绍这里描述的另一种方法-- How to speed up your Docker image build?,您可以使用工具构建工具包。

随着Docker18.09的发布,

发布了一个新的构建器。它被称为Buildkit。默认情况下不使用它,所以我们中的大多数人仍然使用旧的。问题是,即使对于如此简单的图像,Buildkit也要快得多!在70年代构建的图像上,差异大约是18秒。这是一个很大的数字,几乎33%!

希望它能有所帮助;)

票数 1
EN

Stack Overflow用户

发布于 2021-10-27 02:57:37

docker版本: docker-ce.20.10

由buildkit制作的镜像的实际测试

如果它们在内部涉及到大量的编译过程,那么实际上可能对提高制作图像的效率几乎没有什么作用。

也许基于官方的阿尔卑斯山基地图像,

考虑在dockerfile中添加-j nproc参数来增加线程,这将是一个很好的方向。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69716689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档