计算机系统应用教程网站

网站首页 > 技术文章 正文

10条编写Dockerfile的最佳实践 docker 编程

btikc 2024-09-27 01:13:28 技术文章 5 ℃ 0 评论

创建短暂的容器

你定义的图像Dockerfile应该生成尽可能短暂的容器。通过“短暂”,我们的意思是容器可以被停止和销毁,然后重建并用绝对最小的设置和配置替换。

了解构建上下文

发出docker build命令时,当前工作目录称为构建上下文。默认情况下,假定Dockerfile位于此处,但您可以使用文件flag(-f)指定其他位置。无论Dockerfile实际存在的位置如何,当前目录中的所有文件和目录的递归内容都将作为构建上下文发送到Docker守护程序。

通过stdin管道Dockerfile

Docker能够通过stdin与本地或远程构建上下文管道Dockerfile来构建映像。 通过stdin管道Dockerfile对于执行一次性构建非常有用,无需将Dockerfile写入磁盘,或者在生成Dockerfile的情况下,并且之后不应该持久化。

排除.dockerignore

要排除与构建无关的文件(不重构源存储库),请使用.dockerignore文件。此文件支持与.gitignore文件类似的排除模式。

使用多阶段构建

多阶段构建允许您大幅减小最终image的大小,而无需减少中间层和文件的数量。

由于image是在构建过程的最后阶段构建的,因此可以通过利用构建缓存来最小化image层。

避免安装不必要的包

为了降低复杂性,依赖性,文件大小和构建时间,请避免安装额外的或不必要的软件包,只是因为它们可能“很好”。

解耦应用程序

每个容器应该只关注一个问题。将应用程序分离到多个容器中可以更容易地水平扩展和重用容器。

最小化层数

  • 只有说明RUN,COPY,ADD创建图层。其他指令创建临时中间图像,并不增加构建的大小。
  • 在可能的情况下,使用多阶段构建,并仅将所需的工件复制到最终图像中。这允许您在中间构建阶段中包含工具和调试信息,而不会增加最终图像的大小。

对多行参数进行排序

只要有可能,通过按字母顺序排序多行参数来缓解以后的更改。这有助于避免重复包并使列表更容易更新。这也使PR更容易阅??读和审查。

利用构建缓存

构建映像时,Docker会逐步Dockerfile执行您的指令, 按指定的顺序执行每个指令。在检查每条指令时,Docker会在其缓存中查找可以重用的现有image,而不是创建新的(重复)image。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表