问题标签 [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 - 在 Docker 中使用 BuildKit 时,如何查看 RUN 命令的输出?
使用 构建 Docker 映像时DOCKER_BUILDKIT=1
,有一个非常酷的进度指示器,但没有命令输出。如何查看命令输出以调试我的构建?
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 时出现同样的错误。
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
?
docker - 如何使用 docker-compose 启用 BuildKit?
export DOCKER_BUILDKIT=1
我在命令之前尝试过docker-compose build
,但没有看到预期的 BuildKit 输出。我错过了什么?
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 标记图像并推送它
使用导出器不起作用它报告导出器已被弃用
docker - 如何向我的 docker buildx 构建器添加对 mips 的支持?
我创建了一个 buildx 构建器,但它缺少mipsel
支持。我认为它也应该支持所有拱形qemu
支撑。
为什么mipsel
(我感兴趣的架构)不在列表中?
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
脚本。
我想我不明白:
- buildkit 的工作原理。它是否在容器内构建容器?即缓存路径在“构建容器”上?
- 需要指定什么作为 R 的目标,以注意到它已经下载(并且可能已构建)。
我怀疑它与keep.source
安装 R 包时的命令有关,如本问题所述
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/host
夹RUN
。
然后我有两个问题:
我可以
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
并使用source
like them-accessible-t,但我无法使其工作。我无法弄清楚如何在“
RUN
图像”中有不同的路径,也就是说,/path/in/container
而不是/path/on/host
.
docker - 使用远程代理转发时 docker buildkit mount ssh
我使用--ssh
docker buildkit 功能,它在本地运行良好。我想在远程服务器上构建 Docker,为此我使用该-A
标志来转发我的本地 github 密钥,例如:
然后在服务器终端中运行:
我收到“Hello user”消息,这意味着密钥转发工作正常。
(在服务器上,$SSH_AUTH_SOCK
确实是设置的,我可以git clone
)
现在,在本地构建时,我使用:
哪个工作正常。
但是在服务器中,私钥在 ~/.ssh/id_rsa 中不存在。那么我怎样才能将它转发到 docker build 呢?在服务器上试过这个:
但它不起作用。错误是:
即使SSH_AUTH_SOCK
已设置
码头工人版本:19.03
docker - 您如何查看 buildkit 构建的 docker 构建缓存?
我已经使用新的DOCKER_BUILDKIT=1
构建器构建了一个图像,特别是使用--mount=cache
. 构建图像几次后,我注意到缓存使用量已经超过 3Gb,我想查看缓存中对象的大小,以确定是因为我缓存了太多东西还是只有多个正在存储的版本。但是,docker cli 没有任何机制来探索缓存问题。