问题标签 [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 回答
756 浏览

docker - 缺少来自 linux/arm64 平台的 /v8 变体

我将 buildx 用于我的多架构 Docker 构建。

基础镜像作为其 OS/archs 之一,但生成的镜像 ( python:3.8.5-alpine)缺少变体,在其清单中创建了一个镜像。linux/arm64/v8corralpeltzer/newtrackon/v8linux/arm64

我对这种差异感到困惑。它会产生兼容性问题吗?我应该尝试用 强制变体docker manifest annotate吗?

有关更多详细信息,请在GitHub 操作中运行。这是 buildx 命令的一部分:

这个问题似乎来自 buildx 构建器可用的拱门:

0 投票
2 回答
2712 浏览

docker - 通过 buildx 将缓存推送到不安全的注册表

如何将缓存推送到不安全的注册表?我已经将它添加到我的 docker 配置中,并且可以通过docker login. 这是我的码头工人命令:

并得到错误信息:

我试图添加--output=type=image,push=true,registry.insecure=true但同样的错误。也尝试添加--allow security.insecure但得到:failed to solve: rpc error: code = Unknown desc = granting entitlement security.insecure is not allowed by build daemon configuration

Docker版本:Docker版本19.03.8,构建afacb8b

谢谢大家。

0 投票
1 回答
702 浏览

docker - 在 GitLab CI 中使用 BuildKit 和挂载的`/var/run/docker.sock`

我有gitlab-runner一个docker执行人注册。当它运行时.gitlab-ci.yml

/var/run/docker.sock安装,它失败了:

当我包括

.gitlab-ci.yml删除/var/run/docker.sock挂载(因此将守护进程更改为子容器而不是主机的),它成功了。

这是Dockerfile

是否与 BuildKit / 实验语法和使用主机的 docker 套接字不兼容?我让它通过使用自己的套接字与子容器一起工作dind,但我希望通过安装套接字来成功。

0 投票
0 回答
50 浏览

docker - 在并行 buildkit 构建后手动组织 overlay2 docker 层

我正在使用带有 buildkit 和多阶段构建的 docker 来并行创建许多 conda 环境,然后将它们复制到我的最后阶段。许多层具有大量复杂的依赖关系,并且将每个环境复制到最后阶段需要很长时间。

一个例子:

我知道中间层没有重叠的文件,并且希望将它们直接“挑选”到最后阶段的历史记录中,而无需使用COPY --from=...命令。使用 docker 或 buildkit 工具可以进行这种类型的低级 overlay2 操作吗?

0 投票
1 回答
1972 浏览

docker - Docker BuildX 图像未在 docker image ls 中显示

我目前正在尝试使用 BuildKit/BuildX 构建多平台映像(x86_64、arm64、armv7、armv6),并且似乎构建成功,但我似乎无法找到映像所在的位置。它与我之前为 x86_64 构建的版本相比并没有改变,当尝试将它送到我的仓库时,它说所有层都已经存在,并且只有一个平台存在。我用来构建图像的命令是:

构建后我从终端得到的最后一行是:

0 投票
2 回答
1982 浏览

docker - 无根 buildkitd 在容器内引发权限错误

我决定使用无根版本的 Buildkit 从 Kubernetes 的容器中构建 Docker 映像并将其推送到 GCR(Google Container Registry)。

我偶然发现了这个错误:

我正在buildkitd作为deployment链接到buildkit 文档service指定的链接运行 这些资源在托管在 Google Kubernetes Engine 上的 Kubernetes 集群中运行。

我正在使用以下 YAML 进行部署和服务

它与没有设置 TLS 证书的buildkit 文档相同。

然后,我在另一个 Pod 中使用以下命令联系 Buildkit Daemon:

buildkitd容器成功接收请求但抛出上述错误。

buildctl命令的输出如下:

这是守护程序的错误。

令我印象深刻的是,我能够使用完全相同的 YAML 文件在集群buildkitd内进行容器化:minikube

我在内部部署服务和部署,minikube并使用以下命令转发服务端口,以便能够访问外部部署minikube

通过该设置,我可以buildctl毫无问题地执行我的命令(图像构建并推送到 GCR)。

我想了解为什么它可以在 Google Kubernetes Engine 上运行minikube而不是在 Google Kubernetes Engine 上运行。

如果有任何帮助,这是容器启动日志

0 投票
1 回答
1366 浏览

docker - 正常构建时如何忽略docker buildkit标志

我有一个 docker 容器,有时我想用buildkit构建它,其他时候用标准 docker build 构建。假设我们有一个容器,例如:

--mount=type=ssh当我们从我们的私有存储库 pip 安装东西时,我们使用该标志告诉 buildkit 在此处使用 ssh 密钥。当您使用 Buildkit 使用以下命令进行构建时,一切正常:

但是,我们不能再使用标准 docker 命令构建这个容器,例如:

因为--mount无法识别标志。无论如何都可以使用相同的 Dockerfile 而不用 buildkit 和通常编辑它?可以告诉 Docker 忽略这些标志吗?

0 投票
2 回答
371 浏览

docker - 为什么 docker-compose build 运行我的步骤两次?

我正在使用带有 Dockerfile 的多阶段构建,如下所示:

我也有一个像这样的 docker-compose.yml:

这里涉及的两个图像,web-clientserver完全独立的。我想利用多阶段构建并行化。

当我运行时docker-compose build(我在 docker-compose 1.27.4 上),我得到这样的输出

请注意,我的测试 ( npm run test:ci) 运行了两次(服务器目标的步骤 6/24,然后 Web 客户端目标的步骤 6/11 再次运行)。我想了解为什么会发生这种情况,但我想这不是一个大问题,因为至少它在第二次进行测试时被缓存了。

当我尝试并行运行构建时,这将成为一个更大的问题。现在我得到这样的输出:

很明显,测试现在运行了两次,因为现在我正在并行运行构建,它们没有机会缓存​​。

谁能帮我理解这一点?我认为 docker 多阶段构建的优点之一是它们是可并行的,但这种行为对我来说没有意义。我有什么误解?

注意 我还尝试为 docker-compose 启用 BuildKit。我很难理解输出。我不相信它会运行两次,但我也不确定它是否在并行化。我需要更深入地研究它,但我的主要问题是:我希望了解为什么多阶段构建不会以我期望的方式在没有BuildKit 的情况下并行运行。

0 投票
2 回答
2241 浏览

docker - “docker build”只需要 1 个参数

我只想从不同的目录构建一个 dockerfile,我尝试了以下命令

docker build -f C:/Users/XXXX/XXXX/XXXX/XXXX/XXXX/Dockerfile

docker build -f C://Users/XXXX/XXXX/XXXX/XXXX/XXXX/Dockerfile

它们都产生相同的错误

"docker build" requires exactly 1 argument.

我错过了什么吗?

0 投票
1 回答
313 浏览

docker - Travis CI 上的 Docker buildx

我正在尝试在我们的企业 Travis CI 实例上通过 Docker Buildx 和 Buildkit 为平台 ppc64le 构建映像。

.travis.yml:

构建将因错误而失败:

看起来 Buildx 扩展未启用,但 Docker 信息将显示 Experimental_cli 已启用。

关于如何在 Travis 上启用 buildx 的任何想法?