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

docker - 通过 Docker 将 .net 应用程序部署到 Kubernetes

我正在尝试将 .net 应用程序部署到 Digital Ocean Kubernetes,但没有成功。创建简单的 web.yml 部署时,我看到状态日志返回ERROR,并且在 pod 上运行日志时,我看到以下内容:

我围绕这个错误做了一些研究,似乎我的架构不匹配。但是,我 99.999% 的架构是我的 Digital Ocean 集群是 AMD,我从以下 Dockerfile 构建的映像是 linux/arm64/v8。

我有以下 Dockerfile:

docker compose build我通过标准命令构建并推送到我的 docker hub 。

我查看了一些关于如何将其构建为 AMD 或其他的在线参考资料,但我目前似乎无法参考可行的潜在解决方案。

我有以下 docker-compose.yaml 文件:

我已经看到有关 buildkit 的主题......但我还没有真正理解为 .net 核心构建不同的拱形映像需要采取的确切步骤。

我运行docker manifest inspect --verbose mcr.microsoft.com/dotnet/aspnet:6.0它给了我可以使用 AMD64 的提示:

任何专业提示都会很棒!

0 投票
0 回答
22 浏览

docker - 通过 az acr build 在 Azure 上使用 Docker Buildkit

我正在寻找一种将 docker buildkit 与 az acr build 一起使用的方法。我知道它可能与 azure 管道一起使用,但如何将它与 azure cli 一起使用?

问候, 于尔根

0 投票
0 回答
26 浏览

kubernetes - 使用 buildx 的 kubernetes docker 私有注册表问题

我正在尝试建立一个没有运气的 docker 注册表。这里有一些细节:

  • 具有 x86_64 和 arm64 节点的 k3s 混合集群
  • docker-registry 部署运行,服务暴露在 5000 端口

docker-buildx 检查脚本的结果:

buildkitd 配置文件如下所示:

作为准备,我首先创建一个从集群到我的开发机器的转发:

然后我可以使用以下成功的命令进行测试:

标记和推送图像也可以:

问题来自docker buildx(版本:)Docker version 20.10.7, build 20.10.7-0ubuntu5~20.04.2

docker-registrypod 上,这种推送尝试会生成以下日志条目:

如何进一步分析此错误并修复它?

0 投票
0 回答
13 浏览

docker - 如何使用 docker compose 和 docker build 保护构建和运行时的敏感数据?

我正在尝试保护在两个上下文(本地开发、云部署)中在 docker 容器中运行的 api-server 的敏感数据(密码、令牌等),并且正在寻找有关如何做到这一点的建议,给定以下约束:

  • 在构建时需要一些敏感数据,在运行时需要一些敏感数据。

  • docker compose在本地,为了开发,docker 容器是通过yaml 文件创建的(以及其他需要的容器) 。

  • 对于远程部署(在 Google Cloud Platform 的 - GCP - “Cloud Run”上),容器是使用 GCP 的“Cloud Build”服务创建的:本质上是一个远程运行的包装器docker build和我的 Dockerfile。

  • 容器不在集群中运行,因此使用创建/管理的“秘密”docker secret不是一个选项。

在本地,我可以使用docker compose文件的“每个服务”文件机密机制(请参阅此处的文档)将敏感信息放置到一个静默创建、安全许可的/run/secrets/目录中,该目录在容器内持久可用。这解决了运行时需要的敏感数据或者在运行时和构建时需要) - 但是在构建时需要的敏感数据呢?似乎还没有(见这里)支持安全的构建时特定的秘密(即没有类似于/的docker composedocker buildBuildKit--secret参数);只是标准的构建参数,它可以(不安全地)出现在构建输出中,并在构建后保留在构建工件中。

远程(在 GCP 的“云构建”的上下文中)我可以使用docker build/BuildKit--secretargs 获取仅构建时间的敏感信息(基于此处的提示),但我还没有看到如何处理运行时所需的敏感信息-时间,因为(不像docker compose),docker build不会默默地创建一个持久的,严格许可的/run/secrets/目录......我可以手动创建和(也许?)收紧在我的 Dockerfile 中/run/secrets/使用的目录的权限 - 但是(和相关操作)将在构建输出,并会导致可能不安全的中间构建工件。COPYCOPY

总而言之:docker compose似乎为运行时提供了解决方案,但不是构建时(即“文件机密”,放置在 中/run/secrets),而docker build/BuildKit似乎为构建时(即--secret参数)提供了安全解决方案,但不是运行时

这是准确的吗?有没有人发现这个困境,即想出如何使用 docker compose来保护构建时数据,以及在使用时如何保护运行时数据docker build

我知道有 3rd-party 秘密存储(VaultSecret Manager等),但想知道如果引入这种额外的复杂性/依赖层,什么是/将是可能的......

如果不可能同时拥有安全的构建时机密和安全的运行时机密:考虑到上述上下文,从安全角度来看,哪个更重要?

谢谢。