问题标签 [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.
docker - 带有 tmpfs 挂载的 Docker BuildKit 构建第二次失败
这有效:
从某种意义上说,非 root 用户myuser
能够写入 tmpfs 挂载并且 GO 构建成功完成。
但是,如果我在上面添加前面的内容,则 dockerfile 中的另一条指令会挂载相同的 tmpfs,例如
然后令人惊讶的是,GO构建失败了
tmpfs 挂载似乎在第二次挂载时没有适当的权限。有人有同样的经历吗?这是一个错误吗?
docker - Docker buildkit 缓存大小限制
我的光盘报告几乎已满。
原来 buildkit 缓存已经吃掉了我的大部分磁盘空间。修剪解决了这个问题,但将来我想将缓存大小限制为固定数量的块或总磁盘空间的百分比。
有没有办法做到这一点?
docker - Docker RUN 指令,在 Exec 表单中安装了 Secret
RUN
a 中的指令的正确语法是什么Dockerfile
,需要以exec形式安装一个秘密?
换句话说,如果 aDockerfile
看起来像:
RUN
上面的指令如何从shell形式转换为exec形式?这里的官方文档中似乎没有示例。
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 & file或Windows Docker Dockerfile COPY file inside folder。
docker - 使用 BuildKit 构建 Docker 映像时不使用 --no-cache safe 来传递秘密
在使用 Docker Buildkit(导出 DOCKER_BUILDKIT=1)构建 Docker 映像时,这两个命令之间的机密安全性是否有任何区别。
使用或不使用缓存
命令取自:https ://docs.docker.com/develop/develop-images/build_enhancements/
docker - 在 docker-compose 文件中启用“progress plain”
当我使用 运行构建时docker-compose build --progress plain
,它会在构建期间显示比默认的 BuildKit 输出更多有用的信息。
有没有办法将普通进度选项嵌入到 docker-compose.yml 文件本身中,这样我就可以调用docker-compose build
并仍然获得更好的输出?
我尝试添加这些构建参数,但它们似乎都不起作用:
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。
尺寸急剧增加的原因是什么?
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
我需要在自己的行中包含某个包注册表文件吗?据我所知,我的构建应该几乎是即时的,而不是需要几分钟才能完成。
docker - AWS Codebuild 仅在未进行任何更改时使用缓存的 Docker 层
我正在使用 AWS Codebuild 构建 Docker 映像。我最近添加了 buildkit 来使用构建缓存(在此之前,根本没有使用缓存)。我的 buildspec 文件中的构建命令是这样的:
如果我触发了整个 Codepipeline 的重建,而不更改上次构建的代码,则它对大多数层使用缓存。我通过调查构建日志并找到这样的行看到了这一点#35 CACHED
。但是如果我在构建之前对代码进行任何更改,所有缓存似乎都已失效。我预计只有受更改影响的层以及之后的层必须重建。
我想就如何解决这个问题提出一些建议。