问题标签 [multiarch]

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 投票
1 回答
338 浏览

docker - 如何使用 docker buildx 顺序构建镜像

当我想使用 docker 创建多架构构建时,我使用以下命令:

这工作得很好,但似乎正在同时构建图像。在大多数情况下,这可能是可以接受的,但在其他一些情况下,这似乎太重了,需要太多 RAM 并导致网络故障(并行连接太多)。

有没有办法按顺序构建图像?

我找到的唯一解决方案是分别为每个拱门构建,然后使用“docker manifest create”来组装:

这可能很好,但似乎每个图像都应该被推送到注册表以便“docker manifest create”能够组装。这不是很好,因为它污染了我不想要的标签图像列表。

是否可以在本地图像上使用“docker manifest create”,而无需将每个图像单独上传到注册表?有没有更好的方法来简单地按顺序构建图像?谢谢!

0 投票
1 回答
302 浏览

linux - 从 Windows 构建 arm Docker 映像在目标计算机上不起作用

我正在linux/arm/v7从 Windows 10 构建一个映像,以在运行 32 位操作系统的 Raspberry Pi 上运行。

Dockerfile

构建和推送

在 Windows 上,我运行:

docker inspect image harvzor/nginx-multi-arch-cross-compile在构建的图像上运行会产生:

Docker Hub 将映像识别为arm基于。

https://hub.docker.com/repository/docker/harvzor/nginx-multi-arch-cross-compile

拉动并运行(错误!)

然后我在 Raspberry Pi 上拉下相同的图像并尝试运行它,这是输出:

细节

我的图像基于nginx:1.19.8-alpine,它有一个linux/arm/v7OS/ARCH。

在 Windows 上检查 buildx 会产生:

如果我尝试在 Windows 上运行此映像,它运行良好(尽管我认为它不应该,因为它是为 arm 构建的)。

Windows Docker 版本

问题

我究竟做错了什么?为什么图像在 Windows 而不是目标平台上工作?

0 投票
1 回答
52 浏览

sql-server - 是否可以在kali linux中使用所有终端工具安装mssql

去年我安装了 Kali Linux 用于学习目的,但现在我爱上了这个 Linux 发行版和 vim,因为我是 linux 的新用户,根据我的知识,我已经尝试了所有可能的方法来安装 Microsoft SQL Server Kali Linux,但我无法安装,我已经https://packages.microsoft.com/config/通过这个。我想 Kali Linux 是一个基于 debian(测试)的发行版,所以我尝试这样做,但我没有看到任何改进。请开发人员帮我解决这个问题

0 投票
0 回答
84 浏览

java - 如何为原生代码构建 Docker 多架构镜像

我一直在为 Java 应用程序构建一些多架构镜像,基于其他人的多架构基础镜像,该镜像运行良好,因为基础镜像包含适用于架构的正确原生 Java 版本。我所要做的就是添加与平台无关的JAR 文件,并且我有一个可以在我的 Windows 笔记本电脑和我的 rPi Kubernetes 集群上运行的多架构映像。

不过,现在我正在试验 GraalVm,​​我想创建一个我自己的多架构基础镜像,我的项目都将使用它。这意味着我需要弄清楚如何创建一个多架构 Docker 映像,其中不同的架构需要不同的安装。amd64 Dockerfile 需要安装 amd64 版本的 GraalVm,​​arm Dockerfile 需要安装 GraalVM 的 arm 版本。

我过去曾使用带有 --build-arg 的 Dockerfile ARG 来计算为 GraalVm 安装程序下载的 URI,但我一直坚持如何使用“buildx”来执行此操作。

似乎我观看的每个演示/教程都使用了一个简单的示例,其中他们添加的文件不是特定于架构的。因此,无论构建的平台如何,他们都可以添加它们。人们如何解决这个问题?buildx 不适合这个问题吗?

manifest 方法似乎更适合这个问题(尽管更冗长),因为我可以为每个架构创建一个图像,然后将它们组合起来,从而让我有机会以不同的方式构建它们。这只是工具的限制吗?如果可以的话,我宁愿用 buildx 来做。

0 投票
0 回答
242 浏览

docker - 如何在 docker buildx 中使用临时映像

我想用 buildx 构建一个多架构映像。这是我的 GitLab CI 管道。第一步我构建代码库:最新图像。此映像具有困难的构建过程,但最终仅包含静态文件。我想在构建 $CI_REGISTRY_IMAGE/nginx:latest 和 $CI_REGISTRY_IMAGE/php:latest 图像时使用这些文件。

当我使用简单的 docker build 时,它的工作正常:

但是,当我使用 buildx 时出现错误。

我该如何解决这个问题?

.gitlab-ci.yml

./.deploy/nginx/Dockerfile

0 投票
1 回答
112 浏览

docker - 您可以将来自 docker 的单独构建组合起来吗?

我正在使用 circleci 部署应用程序,我部署到 amd 和 arm 架构,所以我的构建是多架构的,我一直在使用 docker buildx。借助 circleci 的新手臂支持,我能够将这个过程的时间从使用 quemu 的 3 小时缩短到大约 20 分钟,方法是在各自的构建环境中分别构建(在目标上构建时无需使用 quemu拱)。我遇到的是,当我运行 buildx 命令时,一个构建将完成,将其结果推送到存储库,然后另一个完成并覆盖以前的构建。我想要实现的是将构建的图像组合到一个清单中,以将它们组合在一起,就像我同时构建它们一样。有没有办法在不直接修改清单文件的情况下实现我的尝试?实现这一点所需的命令示例将非常有帮助!

提前致谢!

0 投票
0 回答
44 浏览

docker - 构建多架构 Docker 映像时强制架构

似乎 Docker(可能是 qemu)在某些情况下会退回到本机执行,即使架构不相同。例如,qemu 在 x64 上运行时似乎不模拟 x86。例如,当平台设置为 linux/386 时,这会导致我在构建 Docker 多架构映像时出现问题,因为 uname 返回 x86_64。当平台设置为 armv7 并且我在 arm64 上运行时,可能会发生同样的情况。

假设这是正确的:是否可以强制 Docker(或 qemu)模拟确切的拱门?我需要 uname 来返回确切的拱门,否则某些构建过程可能会失败。是否可以禁用此行为(如果暂时更好)?

0 投票
0 回答
80 浏览

docker - docker save not working for multi platform or cpu architectures based images

I've built a sample docker image to post on SO using buildx:

Now when I save/export it on linux/amd, it captures image only for that os/cpu platform And there are no documented cmd options to make it include all the images(or manifest list)

And when I load it in linux/arm64 based instance,

it fails at runtime

0 投票
0 回答
55 浏览

docker - 如何使用 Docker Content Trust 对使用 docker buildx 构建的多架构镜像进行签名?

我正在尝试使用带有 Notary 的 Harbor 注册表构建、签名和推送多架构容器映像。按照https://www.cncf.io/blog/2021/07/28/enforcing-image-trust-on-docker-containers-using-notary/中的步骤,我能够获得DOCKER_CONTENT_TRUST_SERVER指向的简单示例我的公证服务器的 URL。

但是,当我尝试构建和推送多架构映像时,我没有收到有关信任元数据的提示,并且似乎完全跳过了签名步骤。我正在运行以构建和推送多架构映像的命令是:

是否需要一些额外的步骤来启用 D​​ocker 内容信任buildx?也许我缺少一个标志或构建器需要一些额外的配置?

0 投票
1 回答
259 浏览

docker - Docker:随机 Alpine 软件包无法安装

语境

我有一个 jenkins,它为树莓派 2 构建了一个 docker 映像。它在构建过程中使用 buildx 来模拟​​ ArmV7 环境。这一直很好,直到最近我在安装 apk 包时遇到了随机错误。

Dockerfile

构建管道

詹金斯输出

如您所见,在安装 abuild、bash、dbus、docbook-xml 和 docbook-xsl 时出现错误,但这些错误并不一致,在运行之前它只是 docbook-xsl(唯一一致的错误)在运行之后, abuild 和 dbus 安装成功。

我不确定是什么导致了问题,或者如何获取有关错误的更多信息。当然,直接在树莓派上运行构建是可行的,因此错误似乎位于多架构配置中的某个位置,但我不确定会发生什么变化。