Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么Docker Hub在构建镜像时不缓存自动构建存储库?

为什么Docker Hub在构建镜像时不缓存自动构建存储库?
EN

Stack Overflow用户
提问于 2014-08-03 06:32:55
回答 2查看 2.5K关注 0票数 20

注意:似乎我问题的前提不再有效,因为新的Docker Hub似乎支持缓存。我还没有亲自测试过这个。请参阅new answer below

Docker Hub的自动化构建存储库似乎不缓存图像。在构建过程中,它会删除所有中间容器。这是它想要工作的方式,还是我做错了什么?如果不需要为每一个小的改变重新构建所有的东西,那就太好了。我认为这应该是docker最好的优势之一,而他们的构建器却不使用它,这似乎很奇怪。那么为什么它不缓存图像呢?

更新:我已经开始使用Codeship构建我的应用程序,然后在我的DigitalOcean服务器上运行远程命令,以复制构建的文件并运行docker build命令。我仍然不确定为什么Docker Hub不缓存。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-31 20:27:23

免责声明:我是Quay.io的首席软件工程师,这是一个私有的Docker容器注册表,所以这是一个有根据的猜测,基于我们在我们自己的构建系统实现中所面临的相同问题。

根据我使用Dockerfile构建系统的经验,我怀疑Docker Hub不支持缓存,因为缓存是在Docker引擎中实现的。Docker构建的缓存通过将要运行的命令与在内存中找到的现有层进行比较来操作。

例如,如果Dockerfile的格式为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FROM somebaseimage
RUN somecommand
ADD somefile somefile

然后Docker构建代码将:

  1. 检查是否存在与somebaseimage匹配的镜像
  2. 检查是否存在父镜像为上一个镜像的RUN somecommand命令的本地镜像
  3. 检查是否存在父镜像为上一个镜像的本地镜像ADD somefile somefile +<代码>D10的哈希(以确保在somefile更改时该镜像无效)

如果上述任一步骤匹配,则在Dockerfile构建过程中将跳过该命令,而使用缓存的镜像本身。然而,这个过程的一个关键问题是,它要求缓存的图像在构建机器上是的,以便查找和验证匹配。在构建节点上对每个人的映像进行将是非常低效的,这使得这个问题更难解决。

在Quay.io,我们通过创建Docker缓存代码的变体来解决缓存问题,该代码可以预先计算这些命令/散列,然后向注册表请求缓存层,只有在我们找到最有效的缓存集之后才将它们下载到机器上。这需要在我们的注册表代码中对数据模型进行重大更改。

如果您想了解更多信息,我们在此演讲中对如何做到这一点进行了技术概述:https://youtu.be/anfmeB_JzB0?list=PLlh6TqkU8kg8Ld0Zu1aRWATiqBkxseZ9g

票数 26
EN

Stack Overflow用户

发布于 2018-12-27 13:47:18

新的Docker Hub推出了一个新的自动化构建系统,支持构建缓存。

https://blog.docker.com/2018/12/the-new-docker-hub/

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

https://stackoverflow.com/questions/25102272

复制
相关文章
GitHub+Docker Hub实现自动构建镜像
版权声明:欢迎交流,菲宇运维!
菲宇
2019/06/12
5.4K0
GitHub+Docker Hub实现自动构建镜像
GitHub Actions 自动构建镜像 并发布到 Docker Hub
当 docker-push-release.yml 触发运行时, docker-push-beta 并不会触发运行,(因此不用担心发布release时, 错误push两次)
yiyun
2022/04/01
2.4K0
GitHub Actions 自动构建镜像 并发布到 Docker Hub
在 Gitlab 中构建 Docker 镜像
有了 Gitlab CI 的脚本能力,又有容器镜像仓库的支持,自然的一个想法就是,在 Gitlab 上构建容器镜像,并推送到镜像仓库之中。
崔秀龙
2019/07/22
2.3K0
在 Gitlab 中构建 Docker 镜像
Docker 构建镜像
Dockerfile由一系列指令和参数组成。每条指令都必须为大写字母,切后面要跟随一个参数。Dockerfile中的指令会按照顺序从上到下执行,所以应该根据需要合理安排指令的顺序。每条指令都会创建一个新的镜像层并对镜像进行提交。Docker大体上按照如下流程执行Dockerfile中的指令。
程序员果果
2019/05/28
1.3K0
docker构建镜像
Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。
超蛋lhy
2018/10/09
8810
构建 docker 镜像
通过 Dockerfile 可以快速构建镜像,而通过 commit 生成镜像可以解决应用在部署过程中有大量交互内容以及难以通过 Dockerfile 构建的问题。
chen1900s
2020/05/29
1K0
构建 docker 镜像
记录一次在docker构建镜像时的错误
具体错误是在Dockerfile文件执行到第三步时候出的错,此时你去问度娘,大多数都会告诉你Dockerfile的路径不能是**../父类目录,需要放在上一层之类的**,这样做虽然也可以避免错误,能正常执行。
晓果冻
2022/09/08
1.4K0
记录一次在docker构建镜像时的错误
谈谈 Docker 镜像构建
容器化部署越来越多的用于企业的生产环境中,如何构建可靠、安全、最小化的 Docker 镜像也就越来越重要。本文将针对该问题,通过原理加实践的方式,从头到脚帮你撸一遍。
iMike
2019/07/24
1.3K0
谈谈 Docker 镜像构建
docker构建镜像- Dockerfile
ps :cmd 会被外部参数覆盖,add只能解压tar包 busybox测试镜像打包 dockerfile 配置 FROM busybox MAINTAINER ops.attacker.club
以谁为师
2019/05/30
1.2K0
Docker构建Tomcat镜像+Nginx镜像
Dockerfile是由一组指令组成的文件,每条指令对应linux中一条命令,Docker程序将读取Dockerfile中的指令生成指定镜像。 Dockerfile大致结构:基础镜像信息、维护者信息、镜像操作指令、容器启动时执行指令。每行支持一条指令,每条指令可以携带多个参数,支持以 # 开头的注释。 Dockerfile操作指令:
星哥玩云
2022/07/19
2.9K0
Docker构建Tomcat镜像+Nginx镜像
​Docker 数据卷的管理及自动构建docker镜像
https://github.com/CentOS/CentOS-Dockerfiles
全栈程序员站长
2022/07/19
7980
​Docker 数据卷的管理及自动构建docker镜像
​Docker 数据卷的管理及自动构建docker镜像
https://github.com/CentOS/CentOS-Dockerfiles
码农编程进阶笔记
2021/07/20
6720
​Docker 数据卷的管理及自动构建docker镜像
Docker 镜像的创建与构建私有库
一、Docker镜像的创建方法 docker镜像是除了docker的核心技术之外,也是应用发布的标准格式。一个完整的docker镜像可以支撑一个docker容器的运行,在docker的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用服务,如果要把已经安装的服务进行迁移,就需要把环境及搭建的服务生成新的镜像。
小手冰凉
2019/11/29
7970
构建docker镜像部署rocketmq
而docker默认隔离性不足,获取系统内存得到的是宿主机内存大小,导致内存不足启动失败(例如宿主机内存32G则计算结果为8G)
路过君
2020/12/31
1.8K0
构建docker镜像部署rocketmq
5-docker镜像构建
RUN、CMD 和 ENTRYPOINT 这三个 Dockerfile 指令看上去很类似,很容易混淆。简单的说他们的区别:
jackxiao
2021/11/16
6900
GitHub Actions构建Docker镜像
本教程假定您知道docker的工作原理,并有一个使用它的项目。确保您Dockerfile 在项目的根文件夹中。这里使用的示例项目是一个非常基本的项目,只有一个Python文件。完整的代码可以从github仓库中下载。
DevOps云学堂
2020/05/22
2.5K0
GitHub Actions构建Docker镜像
使用Docker构建ZooKeeper镜像
这篇文章中我们将使用 Docker 创建 Zookeeper 镜像,包括如何将 Zookeeper 安装到容器,如何配置 ZooKeeper 应用程序以及如何在宿主机和容器之间共享数据卷。
smartsi
2020/08/31
2.9K0
Docker 构建 Tengine 2.2.2 镜像
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
緣來
2020/01/02
2.9K0
Docker 构建私有镜像仓库
在使用Docker一段时间后,往往会发现手头积累了大量的自定义镜像文件,这些文件通过公有仓库进行管理并不方便,另外有时候只是希望在内部用户之间进行分享,不希望暴露出去.这种情况下,就有必要搭建一个本地私有镜像仓库,本小结将具体介绍两个私有仓库的搭建,其中包括Registry,以及Vmware的Harbor企业仓库.
微软技术分享
2022/12/28
1.5K0
构建django的docker镜像
采用centos镜像作为地板镜像,然后安装python3、pip3,再安装django即可。
Devops海洋的渔夫
2019/05/31
1.7K0

相似问题

EB:从Docker Hub自动部署新的Docker镜像构建

12

Docker在本地构建基础镜像时搜索存储库

115

在远程存储库人工构建Docker镜像

18

通过自动构建推送镜像时,如何将Dockerfile上传到Docker Hub?

116

Docker如何在构建镜像时使用缓存

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文