问题标签 [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.
jenkins - 将变量添加到 Jenkinsfile 中的 dockerfile{} 部分以启用 docker_buildkit
这是我的代码片段:
现在我想在运行这段代码时添加特殊变量 DOCKER_BUILDKIT=1。例如,在 shell 中,它应该看起来像:“DOCKER_BUILDKIT=1 docker build 。” 我需要它,因为我想在 docker_buildkit 模式下运行我的 docker。我怎样才能做到这一点?
docker - 如何重用来自 `RUN --mount=type=cache` docker build 的缓存?
我正在使用新的实验性 docker buildkit 语法进行多阶段构建,如下所示:
Dockerfile:
重击:
在当地工作得很好。在 CI 上,我每次都会得到一个新的 docker 环境,所以没有缓存。
我可以将文件导出和导入到环境中,但我不知道缓存在哪里。有任何想法吗?
或者我应该通过一些 docker 命令导出/导入缓存吗?我已阅读https://docs.docker.com/engine/reference/commandline/build/#specifying-external-cache-sources和https://github.com/moby/buildkit#export-cache但尚不清楚对我来说,哪个是特定于 buildkit 的,哪个是特定于 docker 的,或者是否真的适用于挂载到 Dockerfile RUN 命令中的缓存。
我在这里添加了一个失败测试的公共要点,展示了我希望的内容: https ://gist.github.com/Mahoney/85e8549892e0ae5bb86ce85339db1a71/6308f1bdb062a8982017193b96d61ec00a7698c5
而这个后来的修订工作,但我对它不满意 - 太多的引导: https ://gist.github.com/Mahoney/85e8549892e0ae5bb86ce85339db1a71
docker - 使用 buildkit 构建时如何附加到中间 docker 容器
我最近听说过 Buildkit,并一直在尝试将它与 Docker 一起使用。
我
DOCKER_BUILDKIT=1 docker build . -t experimental
用来构建我的 Dockerfile。
Dockerfile
由于缺少一些依赖包,我的构建不正确。
我想要做的是附加到最后一个工作的中间容器并使用apt
工具解决问题。
在没有 Buildkit 的情况下进行构建时,可以使用来自终端输出的中间容器的哈希值来实现。
但是,Buildkit 的输出并没有为我提供这样的值。那么,我有什么方法可以访问它们吗?
提前致谢。
docker - 不要使用层缓存,但在使用 docker+buildkit 时使用 mount-cache
使用 buildkit 时,使用 docker cli 前端,有时我不想使用 layer-cache,但确实想依赖较新的 mount-cache 类型。
但是,运行docker build --no-cache
似乎会禁用两者。
有没有办法选择在重建期间只使用 mount-cache ?
macos - Docker BuildKit --mount=type=cache 不工作,为什么?
我正在尝试实现Buildkit 的缓存挂载功能。
我的 Dockerfile 是:
命令:docker build --progress=plain -t abc:1 . --no-cache
首次运行输出:
第二次运行输出:
预期的:
在第二次运行中,我期待pyyaml
从缓存中被选中。
操作系统:Mac OS Catalina (10.15.3)
码头工人版本:
git - 如何在 docker 中使用挂载的 ssh 来执行 Dockerfile 中的后续命令
在使用 CMD 运行我的容器时,我必须执行 git push。但是 ssh 在最后一行(即 CMD 部分)中不可用,无法执行 git push。我可以在这里做什么来获取 git push 的 ssh 密钥?有人请帮助我。
请找到我的Dockerfile
然后我使用以下命令在运行期间传递我的 ssh 密钥
docker - 构建失败时的 Docker 挂载类型绑定
我正在使用 docker build kit 通过 docker image 构建。
我想绑定主机卷来缓存库,我使用的是挂载类型绑定。这是我的码头文件。(参考这里和这里)
语法RUN --mount=type=bind,source=/home/ubuntu/.m2,target=/root/.m2,rw mvn clean dependency:go-offline -B
引发以下错误。
我检查了,路径/home/ubuntu/.m2
存在。语法有问题吗?
我之前用过--mount=type=cache
,效果很好。我想切换到这个的原因是,如果下载的 maven 库存储在它自己的主机文件系统中,那么即使我们这样做docker system prune --all
,我们也不需要再次下载缓存的库。
docker - Docker Buildx 无法从本地提取继承的映像
我的主机( Ubuntu 20.04 )上有 2 个 Dockerfile。我正在运行 docker-ce 版本 Docker 版本 19.03.12,构建 48a66213fe 并启用了实验功能。我能够为 ARM 架构使用“docker buildx”构建它们中的每一个,并在我的嵌入式 Linux ARM 板上成功运行它们。
Dockerfile 1:
Dockerfile 2:
在主机上创建 ARM 兼容映像的构建过程:
在 ARM 上加载图像:
订阅者的步骤相同。
由于图像基本相同,我想将发布者 Dockerfile 更改为以下内容:
Docker 图像显示它在本地:
但我得到如下所示的错误 - 它总是试图从 docker.io 中提取(它显然没有我试图继承的图像):
如何让 buildx 使用本地映像?谢谢。
docker - 使用 Docker Buildkit 构建映像时 --cache-from 参数的顺序是否重要?
假设我正在使用 Docker Buildkit 构建图像。我的图像来自多级 Dockerfile,如下所示:
我现在正在尝试构建这两个图像。假设我将这些推送到 Docker Hub。如果我要使用 Docker Buildkit 的外部缓存功能,那么我想通过在some-expensive-base-image:latest
构建目标时拉入远程映像作为缓存来尝试节省我的 CI 管道上的构建时间some-expensive-base-image
。而且,我想同时提取刚刚构建的some-expensive-base-image
图像和远程my-app:latest
图像作为后一个图像的缓存。我相信我需要两者都是为了防止需要some-expensive-base-image
重建的步骤,因为......嗯......它们很昂贵。
这是我的构建脚本的样子:
我的问题:论点的顺序对--cache-from
第二个很重要docker build
吗?
对于此构建,我的 CI 管道上的结果不一致。在构建后一个映像时会发生缓存未命中,即使没有任何会导致缓存破坏的代码更改。可以毫无问题地拉出 Cache Minefest。有时会拉取缓存映像,但有时需要重新运行后一个目标的所有步骤。我不知道为什么。
碰巧,我应该在我的脚本中运行命令之前尝试docker pull
两个图像吗?docker build
另外,我知道我在示例中提到了 Docker Hub,但在现实生活中,我的应用程序使用 AWS ECR 作为其远程 Docker 存储库。这对适当的 Buildkit 功能有影响吗?