翻译docker官方文档(残缺版)

2023-10-30 22:50

本文主要是介绍翻译docker官方文档(残缺版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Build with docker(使用 Docker 技术构建应用程序或系统镜像)

Overview (概述)

介绍(instruction)

层次结构(Layers)

The order of Dockerfile instructions matters. A Docker build consists of a series of ordered build instructions. Each instruction in a Dockerfile roughly translates to an image layer. The following diagram illustrates how a Dockerfile translates into a stack of layers in a container image.

Dockerfile指令的顺序很重要。Docker构建由一系列有序的构建指令组成。Dockerfile中的每条指令都大致对应为一个镜像层次。下图说明了Dockerfile如何转换为容器镜像中的层堆栈。

缓存层(Cached Layers)

当你运行构建(build)时,构建器(builder)会尝试重用之前构建的层。如果镜像的某个层自上次构建以来没有变化,构建器会从构建缓存中获取该层。但是,如果某个层在上次构建后发生了变化,那么该层及其后续的所有层都必须重新构建

在上一节的示例中,Dockerfile 首先使用 COPY . . 指令将所有项目文件复制到容器中。然后,在下一步中,它使用 RUN go mod download 命令下载应用程序的依赖项。如果你修改了任何项目文件,例如添加、修改或删除文件,它将使得 COPY的缓存无效,并且也会使得所有后续的层的缓存无效。

当缓存无效时,Docker 将重新构建受影响的层和所有后续的层。这确保新的更改在生成的镜像中正确反映出来。在使用 Docker 时,需要注意这种缓存行为,以确保你的更改在构建过程中得到正确应用。

由于 Dockerfile 指令的当前顺序,构建器必须重新下载 Go 模块,尽管自上次构建以来没有任何包发生更改。

更新指令顺序(Update the instruction  order)

你可以通过重新排列Dockerfile中的指令来避免这种冗余。将指令的顺序更改为在将源代码复制到容器之前下载和安装依赖项。这样,构建器可以从缓存中重用“dependencies”层,即使你对源代码进行了更改。

Go使用两个文件,称为go.mod和go.sum,来跟踪项目的依赖关系。这些文件对于Go来说就像package.json和package-lock.json对于JavaScript一样重要。为了让Go知道要下载哪些依赖项,你需要将go.mod和go.sum文件复制到容器中。在运行`RUN go mod download`之前添加另一个`COPY`指令,这次只复制go.mod和go.sum文件。

现在,如果你编辑了源代码,构建镜像不会导致构建器每次都下载依赖项。`COPY . .` 指令出现在包管理指令之后,因此构建器可以重用 `RUN go mod download` 层。

总结(Summary)

正确地排序你的DockerFile指令 会帮你在构建时避免不必要的工作。

相关信息:

  • 使用缓存优化构建(build)
  • Dockerfile 最佳实践

这篇关于翻译docker官方文档(残缺版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/311096

相关文章

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Python使用python-docx实现自动化处理Word文档

《Python使用python-docx实现自动化处理Word文档》这篇文章主要为大家展示了Python如何通过代码实现段落样式复制,HTML表格转Word表格以及动态生成可定制化模板的功能,感兴趣的... 目录一、引言二、核心功能模块解析1. 段落样式与图片复制2. html表格转Word表格3. 模板生

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

ubuntu系统使用官方操作命令升级Dify指南

《ubuntu系统使用官方操作命令升级Dify指南》Dify支持自动化执行、日志记录和结果管理,适用于数据处理、模型训练和部署等场景,今天我们就来看看ubuntu系统中使用官方操作命令升级Dify的方... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

debian12安装docker的实现步骤

《debian12安装docker的实现步骤》本文主要介绍了debian12安装docker的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录步骤 1:更新你的系统步骤 2:安装依赖项步骤 3:添加 docker 的官方 GPG 密钥步骤

浅谈Redis Key 命名规范文档

《浅谈RedisKey命名规范文档》本文介绍了Redis键名命名规范,包括命名格式、具体规范、数据类型扩展命名、时间敏感型键名、规范总结以及实际应用示例,感兴趣的可以了解一下... 目录1. 命名格式格式模板:示例:2. 具体规范2.1 小写命名2.2 使用冒号分隔层级2.3 标识符命名3. 数据类型扩展命