问题标签 [docker-buildkit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
95 浏览

docker - 带有 tmpfs 挂载的 Docker BuildKit 构建第二次失败

这有效:

从某种意义上说,非 root 用户myuser能够写入 tmpfs 挂载并且 GO 构建成功完成。

但是,如果我在上面添加前面的内容,则 dockerfile 中的另一条指令会挂载相同的 tmpfs,例如

然后令人惊讶的是,GO构建失败了

tmpfs 挂载似乎在第二次挂载时没有适当的权限。有人有同样的经历吗?这是一个错误吗?

0 投票
0 回答
57 浏览

docker - Docker buildkit 缓存大小限制

我的光盘报告几乎已满。

原来 buildkit 缓存已经吃掉了我的大部分磁盘空间。修剪解决了这个问题,但将来我想将缓存大小限制为固定数量的块或总磁盘空间的百分比。

有没有办法做到这一点?

0 投票
1 回答
117 浏览

docker - Docker RUN 指令,在 Exec 表单中安装了 Secret

RUNa 中的指令的正确语法是什么Dockerfile,需要以exec形式安装一个秘密?

换句话说,如果 aDockerfile看起来像:

RUN上面的指令如何从shell形式转换为exec形式?这里的官方文档中似乎没有示例。

0 投票
2 回答
7583 浏览

docker - Docker 构建无法计算缓存键

我有以下项目结构

我有一个bin directory同名的目录是app.publish.

我的 Dockerfile 如下所示:

在我运行下面的命令从这个 docker 文件构建图像之后

我收到以下错误

我的问题是为什么我得到这个错误?以及如何解决?

Docker Engine Community 20.10.6使用Windows 10 20H2 19042.964

我看到Docker - failed to compute cache key: not found - 在 Visual Studio一些内部链接中运行良好,但没有找到任何有用的东西。

我正在解决我的问题并发现一些相同的问题,例如Dockerfile can't copy specified local directory & fileWindows Docker Dockerfile COPY file inside folder

0 投票
0 回答
146 浏览

docker - 使用 BuildKit 构建 Docker 映像时不使用 --no-cache safe 来传递秘密

在使用 Docker Buildkit(导出 DOCKER_BUILDKIT=1)构建 Docker 映像时,这两个命令之间的机密安全性是否有任何区别。

使用或不使用缓存

命令取自:https ://docs.docker.com/develop/develop-images/build_enhancements/

0 投票
1 回答
1381 浏览

docker - Kaniko 和 BuildKit/Buildx 有什么区别?

据我了解:

  • 它们都是构建容器镜像的工具
  • 构建本身在容器中运行
  • 构建可以在远程节点上进行,例如在 Kubernetes 集群(KanikoBuildKit)中
  • 它们都提供高级功能,例如层缓存

我可以收集的差异:

  • 安全模型(Kaniko
  • BuildKit 利用了最新的发展,例如缓存清单和清单列表
  • BuildKit 支持多种架构

我不清楚的是两组工具之间的重叠程度以及何时应该使用其中一个而不是另一个。例如,这两种工具似乎都很好地涵盖了在 Kubernetes 集群上自行托管远程映像构建场的用例。

0 投票
2 回答
2390 浏览

docker - 在 docker-compose 文件中启用“progress plain”

当我使用 运行构建时docker-compose build --progress plain,它会在构建期间显示比默认的 BuildKit 输出更多有用的信息。

有没有办法将普通进度选项嵌入到 docker-compose.yml 文件本身中,这样我就可以调用docker-compose build并仍然获得更好的输出?

我尝试添加这些构建参数,但它们似乎都不起作用:

0 投票
0 回答
194 浏览

docker - 为什么使用多个 Dockerfile 会产生比多阶段构建更小的镜像?

该存储库jupyter/docker-stacks为 Jupyter Notebook 映像提供了多个 Dockerfile。这些 Dockerfile 以下列形式相互构建:

这个 Dockerfile 是jupyter/base-notebook

这个 Dockerfile 是jupyter/minimal-notebook

这个 Dockerfile 是jupyter/scipy-notebook

最后,这个 Dockerfile 是jupyter/tensorflow-notebook

我使用以下命令在本地(使用 BuildKit)构建了每个图像:

在这里,最终图像大小jupyter/tensorflow-notebook为 3.17 GB

然后,我将所有以前的 Dockerfile 合并到以下多阶段构建 Dockerfile 中:

此映像的大小为 14.61 GB,拆分的 Dockerfiles 构建大 11 GB。

尺寸急剧增加的原因是什么?

0 投票
0 回答
166 浏览

docker - 在带有 buildkit 并运行 --mount 的 docker 中,为什么 cabal install 正在下载缓存的包?

我正在创建一个可以构建 haskell 程序的 Dockerfile。Dockerfile 使用 ubuntu focus 作为基础镜像,安装 ghcup,然后构建一个 haskell 程序。我这样做有多种原因;它可以支持低配置的 CI 环境,并且可以帮助尝试构建复杂项目的新开发人员。

为了加快构建时间,我将 docker v20 与 buildkit 一起使用。我有一系列这样的事件(这是一个很长的文件,但这段摘录是相关的部分):

但是当我在中更改一些非代码文件(例如 README.md)application并构建我的 docker 映像时...

...这需要相当多的时间,并且来自 cabal install的输出cabal build 包括很多Downloading [blah]随后的Building/ Installing/消息。Completed

但是,当我进入容器并输入cabal build时,它会快得多(它已经构建好了):

我希望它在前一种情况下也一样快。由于我并没有真正更改代码文件,并且依赖项都已下载,并且由于我使用的是RUN --mount.

是否有我的--mount=type=cache条目未涵盖的文件?--mount=type=cache我需要在自己的行中包含某个包注册表文件吗?据我所知,我的构建应该几乎是即时的,而不是需要几分钟才能完成。

0 投票
0 回答
331 浏览

docker - AWS Codebuild 仅在未进行任何更改时使用缓存的 Docker 层

我正在使用 AWS Codebuild 构建 Docker 映像。我最近添加了 buildkit 来使用构建缓存(在此之前,根本没有使用缓存)。我的 buildspec 文件中的构建命令是这样的:

如果我触发了整个 Codepipeline 的重建,而不更改上次构建的代码,则它对大多数层使用缓存。我通过调查构建日志并找到这样的行看到了这一点#35 CACHED。但是如果我在构建之前对代码进行任何更改,所有缓存似乎都已失效。我预计只有受更改影响的层以及之后的层必须重建。

我想就如何解决这个问题提出一些建议。