翻译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 最佳实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/102009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openmp 通用核心 学习 2 数据环境—任务-内存模型

目录 openmp 数据环境 子句: 在上述三个子句中也可以传入指针和数组 openmp 任务: openmp内存模型: openmp 数据环境 子句: shared(list) private(list)//默认构造 值未被初始化 对于图6-5: //File #1 int tm…

数据挖掘实战(3):如何对比特币走势进行预测?

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…

深度学习基础知识 最近邻插值法、双线性插值法、双三次插值算法

深度学习基础知识 最近邻插值法、双线性插值法、双三次插值算法 1、最近邻插值法 1、最近邻插值法 *最邻近插值:将每个目标像素找到距离它最近的原图像素点,然后将该像素的值直接赋值给目标像素 优点:实现简单,计算速度快缺点&…

【C++】【自用】STL六大组件:算法

文章目录 🔺sortstable_sort🔺reverse🔺swap🔺find🔺max/min🔺next_permutation/prev_permutation 全排列binary_searchlower_bound/upper_bound 求下界和上界set_union/set_intersection/set_difference 求…

JNI中调用Java函数

文章目录 一、JNI 注册二、JNI 调用 Java 函数1、实例2、总结3、参考 三、JNI 数据传递四、JNA五、图像传递 一、JNI 注册 JNI 分成静态注册和动态注册 静态注册 cpp 实现 JNIEXPORT jstring JNICALL Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv *env, jobject…

【深蓝学院】手写VIO第7章--VINS初始化和VIO系统--笔记

0. 内容 1. VIO回顾 整个视觉前端pipeline回顾: 两帧图像,可提取特征点,特征匹配(描述子暴力匹配或者光流)已知特征点匹配关系,利用几何约束计算relative pose([R|t]),translation只有方向&…

EsayExcel让不同标题有不同的颜色

今天我在github社区的时候遇见了这个issues,我有看了下百度发现很多人需要这个问题的解决方案,接下来我就写一份这个问题的解决方案。 您的需求: ​ 您好我了解到您的需求,您的需求是为每一个标题设置不同的颜色。 我的解决方案…

Linux Centos7 下使用yum安装的nginx平滑升级

1. 查看当前nginx版本 1nginx -v2. 查看centos版本 1cat /etc/redhat-release3. 创建一个新的文件nginx.repo,其中第三行的7是因为我的centos版本是7点多的,你看自己是多少就改多少 1vim /etc/yum.repos.d/nginx.repo23[nginx]4namenginx repo 5baseu…

Unity后台登录/获取数据——BestHTTP的使用Get/Post

一、使用BestHTTP实现登录功能(Post) 登录具体的步骤如下: 1:传入你的用户名和密码,这是一条包括链接和用户名密码的链接 2:使用BestHTTP的Post功能将链接传到服务器后台 3:后台拿到了你传送…

2023年中国超导磁体市场规模、需求量及行业竞争现状分析[图]

超导磁体一般是指用超导导线绕制的能产生强磁场的超导线圈,还包括其运行所必要的低温恒温容器。通常电磁铁是利用在导体中通过电流产生磁场,由于超导材料在超导状态下具有零电阻特性,因此可以以极小的面积通过巨大的电流。超导磁体具有场强高…

如何自制一本电子书,安利一个平台

有没有想过把纸质版的书刊制作成图文相结合的电子书,实现随时随地的阅读。其实很多人在实际制作时常常陷入困扰:创意不够,无法找到理想的素材,制作繁琐等等。感觉好难啊! 不过,幸运的是,我发现…

【Method】把 arXiv论文 转换为 HTML5 网页

文章目录 MethodReference https://ar5iv.labs.arxiv.org/ Articles from arXiv.org as responsive HTML5 web pages. 可以将来自 arXiv 的 PDF 论文渲染成 HTML5 网页版本。 Method View any arXiv article URL by changing the X to a 5. 将 arXiv 网址中的 x 换成 5 再回…

教程分享:如何将微信公众号变成淘宝客查券返利机器人自动赚佣金?

教程分享:如何将微信公众号变成淘宝客查券返利机器人自动赚佣金? 在现代社交媒体和电商激烈的竞争中,有一种强大的工具可以帮助你在微信公众号上轻松实现查券和返利功能,而且全自动赚取佣金。这个工具就是"微赚淘客系统3.0&…

补环境框架

GitHub - bnmgh1/node-sandbox: 魔改Node补环境框架 GitHub - fanchangrui/catvm: js逆向环境框架基础(持续补充)(沙盒框架)

201、RabbitMQ 之 Exchange 典型应用模型 之 工作队列(Work Queue)

目录 ★ 工作队列介绍代码演示测试注意点1:注意点2: ★ 工作队列介绍 工作队列: 就是让多个消费者竞争消费同一个消息队列的消息,相当于多个消费者共享消息队列。 ▲ RabbitMQ可以让多个消费者竞争消费同一个消息队列 ▲ 消息队…

thinkphp6 - 超详细使用阿里云短信服务发送验证码功能,TP框架调用对接阿里云短信发验证码(详细示例代码,一键复制开箱即用)

效果图 在thinkphp 5/6 框架(只要不是太低的版本就能用)中,实现接入调用阿里云短信服务详细教程,整个配置过程及示例代码保证小白也能轻松完成! 直接复制就行,改个阿里云参数就能用了。

2023-10-11

昨晚有点事,把日记忘了,今天补一下捏。 昨天回本部办了一些事情,一直搞到了晚上,所以基本啥也没干.... 然后实验太多了,得抓紧把实验报告给写了

了解三层架构:表示层、业务逻辑层、数据访问层

目录 背景: 三层架构 什么是三层: 分层的目的: 三层的结构关系​编辑 三层表现形式:​编辑 三层的优缺点: 总结: 背景: 三层架构是一种软件设计模式,可称为客户端-服务器-架构,把各个功能模块划分…

MySql运维篇---009:分库分表:垂直拆分、水平拆分、通过MyCat进行分片,读写分离:一主一从、 双主双从

3.分库分表 3.1 介绍 3.1.1 问题分析 使用单个数据库存储所有的数据,如果磁盘和内存和内存不足了可以增大磁盘和内存,但是对于一台服务器的磁盘和内存不可能无限制的扩张下去,它是受我们服务器的硬件影响的,如果说数据库所存储…

C语言字符串查找函数和错误信息报告函数(strstr、strtok,strerror)

文章目录 摘要1 strstr1.1 函数使用1.2 模拟实现 2. strtok2.1 函数介绍 3. strerror3.1 函数介绍3.2 strerror 与 perror 摘要 本篇文章介绍了C语言中常用的字符串处理函数,包括字符串查找函数 strstr 和字符串分割函数 strtok,以及错误信息报告函数 s…