问题标签 [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.
docker - 如何在创建清单时修复来自 Docker Hub 的“拒绝:请求访问资源被拒绝”错误
我正在尝试为我的 docker hub 存储库创建一个清单,以便我拥有一个多平台图像。
我的程序如下:
- 我首先创建了一个空存储库并将两个图像推送到其中,一个用于 amd64,一个用于 arm64。这些图像可以在这里预览:https ://hub.docker.com/repository/docker/shadash/docker-multiarch-glusterfs-plugin
- 我使用 CLI 登录到我的 docker hub 帐户。我尝试了以下方法,响应是“登录成功”:
- 我尝试创建一个清单:
结果是:
错误:拒绝:请求的资源访问被拒绝未经授权:需要身份验证
- 我尝试使用清单工具(https://github.com/estesp/manifest-tool)
someimage.yaml:
结果:
FATA [0001] 检查图像“shadash/docker-multiarch-glusterfs-plugin:x86_64”失败并出现错误:错误:拒绝:请求的资源访问被拒绝未经授权:需要身份验证
因此,问题似乎与我现有图像的检查有关。但是,我可以很好地下载和安装这些插件(在 3 台不同的机器上测试),并且当我启动使用此卷驱动程序的堆栈时它们也可以工作:
我真的被困在这里,我不知道为什么我不能根据这些图像创建清单图像。我已成功为 jenkins 创建了清单映像,请参阅https://hub.docker.com/repository/docker/shadash/docker-multiarch-jenkins
docker - Multi-Arch Dockerfile - 有没有办法根据架构选择要复制的源
是的,RUN yum install
两者都适用,但如果你想执行COPY gosu /usr/bin/gosu
,有没有办法根据目标架构选择性地复制 gosu-arm64 和 gosu-armv7 ?
我看了看,没有找到任何东西,现在正在寻找臭鼬解决方案......
docker - 使用 docker-compose 构建两个不同标记的 docker 镜像
我目前正在使用 Docker 和 K8s 部署 Java 应用程序。当我使用 Raspberry Pi Kubernetes 集群时,我想生成两个图像,一个用于 x86 平台,一个用于 arm32v7(用于在 Raspberry 集群上进行测试)。目标是使用一个 Dockerfile 生成两个不同标记的 docker 镜像,并将生成的镜像推送到 Docker Hub。我使用以下 Dockerfile。
我的docker-compose.yml
样子是这样的:
使用docker build .
工作,但结果是两个未命名的、未标记的图像。我尝试了很多事情,比如硬编码 dockerfile 的路径等等。尽管付出了努力,但我得到了一个非常未定义的错误:
任何想法都值得赞赏。
编辑:我从这里得到了这个想法
docker - GitLab CI/CD:构建多架构 Docker 镜像
我想要一种在 GitLab 运行器中构建多架构 Docker 映像的简单方法。简单来说,我的意思是我只需要在我的项目中添加一个 .gitlab-ci.yml 就可以了。
这是我写的 .gitlab-ci.yml。它使用 buildx 构建多架构映像,然后将其推送到 GitLab 注册表:
问题是 linux/arm64 平台不可用。
以下是我构建 cl00e9ment/buildx 映像的方式(强烈灵感来自snadn/docker-buildx):
这是 Dockerfile:
...添加这里是用于构建和推送 cl00e9ment/buildx 映像的 .gitlab-ci.yml 文件:
那么发生了什么?
- 在构建结束时,在 Dockerfile 中,我运行
docker buildx inspect --bootstrap
以列出可用平台。它给linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
. 所以一切都很好。 - 之后,我再次运行它(就在构建之后和推送之前),它仍然给出
linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
. - 但是,在测试阶段,当在干净的环境中从 Docker Hub 新下载映像时,它会提供
linux/amd64, linux/386
.
为什么?
sql - 由于“未满足的依赖项”,无法在 Ubuntu 上安装 SQL Server 命令行工具
按照文档成功安装Sql Server后,无法在 Ubuntu 20.04 上安装SQL Server 命令行工具。努力导致了以下命令和结果:
好的
deb [arch=amd64] https://packages.microsoft.com/ubuntu/18.04/prod仿生主
点击:1 http://dl.google.com/linux/chrome/deb stable InRelease
获取:2 http://security.ubuntu.com/ubuntu focus-security InRelease [107 kB]
点击:3 http://x .archive.ubuntu.com/ubuntu焦点 InRelease
Hit:4 http://x.archive.ubuntu.com/ubuntu focus-updates InRelease
Hit:5 http://x.archive.ubuntu.com/ubuntu focus-backports InRelease
命中:6 ...包。微软。com/ubuntu/18.04/mssql-server-2019 仿生 InRelease
Hit:7 ... 包。微软。com/ubuntu/20.04/prod 焦点 InRelease
Hit:8 ... 下载。去吧 组织发布
命中:9 ...包。微软。com/ubuntu/18.04/prod 仿生 InRelease 获取:10 ... 安全性。Ubuntu的。com/ubuntu focus-security/main amd64 DEP-11 元数据 [21.3 kB]
获取:11 ... 安全性。Ubuntu的。com/ubuntu focus-security/universe amd64 DEP-11 元数据 [31.5 kB]
在 17 秒内获取 160 kB (9,288 B/s)
读取包列表...完成
正在读取包列表...完成构建依赖关系树
正在读取状态信息...完成 mssql-tools 已经是最新版本(17.5.2.1-1)。某些软件包无法安装。这可能意味着您请求了一种不可能的情况,或者如果您使用的是不稳定的发行版,一些必需的软件包尚未创建或已从 Incoming 中移出。以下信息可能有助于解决这种情况:以下软件包具有未满足的依赖关系: mssql-tools : Depends: msodbcsql17 (>= 17.3.0.0) 但不会安装 unixodbc-dev : Depends: unixodbc (= 2.3.7) Depends: odbcinst1debian2 (= 2.3.7 ) 但它不会被安装 E: 无法纠正问题,您持有损坏的软件包。
我尝试按照依赖失败树手动安装未满足的依赖项,但在最后一步安装失败:
正在读取包列表...完成 构建依赖关系树
正在读取状态信息...完成 包 multiarch-support 不可用,但被另一个包引用。这可能意味着该软件包丢失、已过时或只能从其他来源获得E: 包 'multiarch-support' 没有安装候选
您将如何解决这些问题以最终安装命令行?
docker - 在 ARM 上构建 X86 docker 映像?
我已经在构建 .NET Core 应用程序的ARM设备上设置了构建管道。构建管道的最后一步是将编译后的 .NET Core 应用程序存储在 docker 映像中。
是否可以将应用程序存储在X86的 .NET Core 运行时映像中?
我希望 .NET Core 应用程序不关心系统架构,只要部署了 .NET 框架。并且那个 docker 不需要启动 X86 镜像来生成新的镜像:
docker - docker manifest create annotate and push in a script
我有 DockerHubx86_64
为我的项目构建映像。图像具有以下命名:myname/project:version_architecture
; 比如foo/bar:1.0.0_x86_64
。
然后我aarch64
在 RPi4: 上构建图像foo/bar:1.0.0_aarch64
,然后将其推送到 DockerHub。
现在我想要一个包含它们的清单,以便我可以foo/bar:1.0.0
在任何地方使用它并且它可以工作。
AFAIK,以下命令应该可以工作(在 RPi 上运行):
但由于某种原因,该annotate
步骤有时会失败:
而以下解决方法(通常)可以代替:
我错过了什么吗?
raspberry-pi - 如何配置 Clion 在启动前运行 gdb 命令?
我可以使用vscode
配置说远程调试 RapberryPi 应用程序
CLion 中的等效设置是什么?我需要set architecture arm_any
在连接后运行gdb-multiarch
。
docker - Docker linuxserver.io/jellyfin multiarch 207:“执行格式错误”
我有一个问题,我不知道去哪里寻找问题。我正在运行 debian:buster 并且正在尝试将其设置为 jellyfin 服务器。
我添加了必要的架构(amd64)。
我根据 linuxserver.io/jellyfin 文档中的示例创建了一个 docker-compose 文件。
当我这样做时sudo docker-compose up
,容器正在尝试重新启动并且容器的日志显示:
standard_init_linux.go:207: exec user process caused "exec format error"
当我查看守护程序的日志时,它具有以下内容:
我在网上看到有人说它与架构有关,我也看到有人建议它与 dockerfiles 中的入口点有关。我已经尝试过使用谷歌搜索,但我缺少有效执行此操作的必要参考框架。
这里出了什么问题?
docker - Docker buildx mulitarch armv6
我需要的:
x86_64 机器上用于 raspberry pi 零的测试容器,可与armv6l的 qemu 仿真一起使用。
到目前为止我得到了什么:
带有测试代码的 Dockerfile
使用以下命令构建图像:
docker buildx build --platform linux/arm/v6 -t test/hello --push .
在为 linux/arm/v6 上传和构建后,我尝试使用以下命令运行它:
我已经像他们在 github 页面上所说的那样设置了 qemu 和 binfmt: https ://github.com/docker/buildx#building-multi-platform-images
我不明白为什么输出是 armv7l,因为我做了所有事情来制作 armv6l 图像。不知道是否需要对 docker 或者 qemu 本身进行调整。我对 docker 的 buildx 系统以及如何在 qemu 下模拟容器非常陌生,所以如果有人能帮助我解决这个问题,我将非常感激。
编辑:
多亏了Peter,容器才知道被迫使用 armv6l。