问题标签 [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 投票
2 回答
16938 浏览

docker - 在 Docker 中使用 BuildKit 时,如何查看 RUN 命令的输出?

使用 构建 Docker 映像时DOCKER_BUILDKIT=1,有一个非常酷的进度指示器,但没有命令输出。如何查看命令输出以调试我的构建?

0 投票
2 回答
3595 浏览

docker - 在 Google Cloud Build 上使用 Docker Buildkit

我正在尝试在 Google Cloud Build 上将 BuildKit 与 Docker 一起使用,以便最终可以使用 --secret 标志。我使用Docker 的 Build Enhancements作为参考。

当我使用以下命令时,它可以在我的笔记本电脑上运行:DOCKER_BUILDKIT=1 docker build -t hello-world:latest .

当我在 Cloud Build 上运行它时,我收到错误“docker.io/docker/dockerfile:experimental not found”。

知道如何让它在 Cloud Build 上运行吗?

这是设置(注意:我还没有使用 --secret 标志):

Dockerfile:

cloudbuild.yaml:

云构建日志:

笔记本电脑 Docker 版本:

云构建 Docker 版本:

更新:我注意到我使用的是#syntax=docker/dockerfile:experimental,而链接的文章有#syntax=docker/dockerfile:1.0-experimental。使用 1.0-experimental 时出现同样的错误。

0 投票
2 回答
3005 浏览

docker - AWS EKS kubernetes 集群中的守护进程不支持 docker buildkit

我正在使用 Build Toolkit 为每个微服务构建 docker 映像。

./build.sh

这适用于我的带有 docker (18.09.2) 的机器。

但是,它不适用于 Jenkins,我设置如下:

  • EKS 配备了 Terraform 模块

    /li>
  • Jenkins通过这个Helm Chart部署在 EKS( v1.12.10-eks-ffbd9, ) 上。docker://18.6.1

  • helm release 中定义的 Jenkins 插件:

    • Kubernetes:1.18.1
    • 工作流作业:2.33
    • 工作流聚合器:2.6
    • 凭据绑定:1.19
    • 混帐:3.11.0
    • 蓝海:1.19.0
    • bitbucket-oauth:0.9
  • Jenkins Pipeline 是声明式的,它使用容器镜像所在的 Pod 模板,docker:18-dind容器名称为dind.

  • 这是我的詹金斯文件

    }

当 Jenkins 执行这个管道时,它会显示这个错误:

我不确定我应该升级哪些软件才能使 docker-buildkit 工作?和哪个版本?

  • 现在是 5.0.0 的 Terraform eks 模块?

或者

  • docker:18-dind 图像,其行为类似于临时 Jenkins 奴隶的环境?

或者

  • 詹金斯插件kubernetes:1.18.1
0 投票
2 回答
16986 浏览

docker - 如何使用 docker-compose 启用 BuildKit?

export DOCKER_BUILDKIT=1我在命令之前尝试过docker-compose build,但没有看到预期的 BuildKit 输出。我错过了什么?

0 投票
1 回答
809 浏览

docker-buildkit - Buildctl 命令标记多个图像

我正在使用 Buildkit 来构建和推送图像。我想在 buildctl 命令中的图像上添加多个标签。例如 buildctl build --frontend=dockerfile.v0 --local context=。--本地码头文件=。--output=type=image,name=test/repo:tag1,test/repo:tag2,push=true

上述命令失败。请建议我如何使用 buildctl 命令用 tag1 和 tag2 标记图像并推送它

使用导出器不起作用它报告导出器已被弃用

0 投票
0 回答
328 浏览

docker - 如何向我的 docker buildx 构建器添加对 mips 的支持?

我创建了一个 buildx 构建器,但它缺少mipsel支持。我认为它也应该支持所有拱形qemu支撑。

为什么mipsel(我感兴趣的架构)不在列表中?

0 投票
0 回答
485 浏览

r - 使用带有 R 包的 docker buildkit 缓存

我正在尝试使用 docker buildkit 方法来缓存包以加快将包添加到 docker 容器中。我从python 和 apt-get 包的说明以及关于在构建 Docker 时缓存 python 包的有用 Stackexchange 答案中了解了它。对于 Python 和 apt-get 我可以让它工作,但我不能让它为 R 包工作。

在 Python 的 Dockerfile 中,我可以更改:

to (并且需要 Dockerfile 顶部的注释)

然后,当我将包添加到requirements.txt文件中时,而不是重新下载和构建包,pip 能够重新使用它所做的所有工作。所以 buildkit 缓存挂载在 docker 的镜像层之外增加了一层缓存。这是一个巨大的节省时间。我希望为 r-packages 设置类似的东西。

这是我尝试过的适用于 apt-get 但不适用于 r-packges 的方法。我也尝试过使用install2.r脚本。

我想我不明白:

  1. buildkit 的工作原理。它是否在容器内构建容器?即缓存路径在“构建容器”上?
  2. 需要指定什么作为 R 的目标,以注意到它已经下载(并且可能已构建)。

我怀疑它与keep.source安装 R 包时的命令有关,如本问题所述

0 投票
1 回答
6594 浏览

docker - Docker run --mount 在 RUN 期间使所有文件在不同的文件夹中可用

我想在RUN声明期间使主机上的文件夹可用。也就是说,类似于容器运行的效果-v

在容器中,这给了我/path/in/container所有文件/文件夹在path/on/host.

为此,我正在尝试来自https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md的实验性挂载选项:

这给了我一个文件/path/on/hostRUN

然后我有两个问题:

  1. 我可以ls在里面归档/path/on/host,但不能使用它们(例如cat它们)。我尝试在https://devops.stackexchange.com/questions/6078/in-a-dockerfile-is-there-a-way-to-avoid-copying-files-to-make-type中更改为 egcache并使用sourcelike them-accessible-t,但我无法使其工作。

  2. 我无法弄清楚如何在“RUN图像”中有不同的路径,也就是说,/path/in/container而不是/path/on/host.

0 投票
3 回答
8241 浏览

docker - 使用远程代理转发时 docker buildkit mount ssh

我使用--sshdocker buildkit 功能,它在本地运行良好。我想在远程服务器上构建 Docker,为此我使用该-A标志来转发我的本地 github 密钥,例如:

然后在服务器终端中运行:

我收到“Hello user”消息,这意味着密钥转发工作正常。
(在服务器上,$SSH_AUTH_SOCK确实是设置的,我可以git clone

现在,在本地构建时,我使用:

哪个工作正常。
但是在服务器中,私钥在 ~/.ssh/id_rsa 中不存在。那么我怎样才能将它转发到 docker build 呢?在服务器上试过这个:

但它不起作用。错误是:

即使SSH_AUTH_SOCK已设置

码头工人版本:19.03

0 投票
0 回答
226 浏览

docker - 您如何查看 buildkit 构建的 docker 构建缓存?

我已经使用新的DOCKER_BUILDKIT=1构建器构建了一个图像,特别是使用--mount=cache. 构建图像几次后,我注意到缓存使用量已经超过 3Gb,我想查看缓存中对象的大小,以确定是因为我缓存了太多东西还是只有多个正在存储的版本。但是,docker cli 没有任何机制来探索缓存问题。