我们有一个用例,我们的目标是构建一个多架构映像,因为该映像将在树莓(arm)或我们的一台本地机器(甚至是虚拟机)中执行。最终目标是在Azure DevOps管道中运行映像创建。
这个想法是使用docker的buildx实验特性,这似乎是一个好主意。管道代理在内部网络中托管在Azure上的Ubuntu VM中运行管道。
然而,这方面存在一些问题。首先也是最重要的是,我们用来构建我们自己的映像的人工基础映像位于公司证书的后面,这导致在获取它们时出现一些问题。
命令如下:
docker buildx build --no-cache --platform linux/arm/v7,linux/arm64/v8,linux/amd64 ~/.docker/test/.
和结果,用"hello world"Dockerfile:
Dockerfile:1
--------------------
1 | >>> FROM company.private.registry/ubuntu:20.04
2 |
3 | RUN echo 'we are running some # of cool things'
--------------------
error: failed to solve: company.private.registry/ubuntu:20.04: failed to do request: Head "https://company.private.registry/v2/ubuntu/manifests/20.04": x509: certificate signed by unknown authority
同时,docker build命令是拉图像没有问题,问题是只有当使用buildx
是否有人使用过多架构图像构建?是不是有什么我不该考虑的事?
Thanks in advance
来晚了,
linux/arm64/v8
<—这可能是你的问题,我相信ArmV8的清单就是linux/arm64
Platforms: linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
<——buildx inspect
在ArmV8上运行时的输出设备