Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Why Do ARMv8 and ARMv9 Images Both Appear Only as arm64?

Đang mở
#6,568 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Lỗi
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Công nghệ
docker, go
Lĩnh vực
build-system, cli

Hướng nghiên cứu

Không có tệp nguồn hoặc bài kiểm thử nào được nêu tên. Hãy bắt đầu bằng cách tái hiện các lệnh docker build và buildx build được hiển thị với linux/arm64, linux/arm64/v8 và linux/arm64/v9, sau đó kiểm tra metadata của manifest đã được push và cảnh báo về nền tảng trùng lặp. Được xem là hoàn tất khi hành vi của biến thể ARM được giải thích hoặc một bản sửa lỗi đã được xác nhận và có phạm vi cụ thể được xác định.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

kind/bug status/0-triage
Description

System Information

Gracehopper
~$ lscpu
Architecture:             aarch64
  CPU op-mode(s):         64-bit
  Byte Order:             Little Endian
CPU(s):                   72
  On-line CPU(s) list:    0-71
Vendor ID:                ARM
  Model name:             Neoverse-V2


~$ hostnamectl
Operating System: Ubuntu 22.04.5 LTS                  
          Kernel: Linux 6.8.0-1025-nvidia-64k
    Architecture: arm64
 Hardware Vendor: Supermicro
  Hardware Model: ARS-111GL-NHR

~$ docker --version
Docker version 28.0.4, build b8034c0

~$ which docker
/usr/bin/docker

$ snap list docker
error: no matching snaps installed
Jetson
~$ hostnamectl
Operating System: Ubuntu 22.04.5 LTS                  
          Kernel: Linux 5.15.136-tegra
    Architecture: arm64
 Hardware Vendor: NVIDIA
  Hardware Model: NVIDIA Jetson AGX Orin Developer Kit

~$ lscpu
Architecture:            aarch64
  CPU op-mode(s):        32-bit, 64-bit
  Byte Order:            Little Endian
CPU(s):                  12
  On-line CPU(s) list:   0-11
Vendor ID:               ARM
  Model name:            Cortex-A78AE

~$ docker --version
Docker version 28.4.0, build d8eb465

~$ which docker
/usr/bin/docker

~$ snap list docker
error: no matching snaps installed

Building Images

Jetson
$ docker build -t my-alpine-app .
$ docker tag my-alpine-app dockerhubuser/test-alpine:jetsonV8
$ docker push dockerhubuser/test-alpine:jetsonV8
Gracehopper
$ docker build -t my-alpine-app .
$ docker tag my-alpine-app dockerhubuser/test-alpine:gracehopperNeoverseV2
$ docker push dockerhubuser/test-alpine:gracehopperNeoverseV2

Both images were built from the same simple Dockerfile shown below:

$ cat Dockerfile 
FROM alpine:3.18
WORKDIR /app
COPY . /app

DockerHub

Image

On Docker Hub, both images appear simply as linux/arm64, without specifying a variant.
But when I check official images such as Alpine, the variant is shown as v8.

  • Since Gracehopper uses ARMv9 (Neoverse V2), why isn’t the variant reflected (e.g., v9)?
  • Is v8 currently considered the default for arm64, and v9 not yet officially recognized by Docker Hub/OCI specs?
  • Is there a way to explicitly set or detect the v9 variant when building and pushing images?

Multi-Architecture Build

I also experimented with a multi-architecture build targeting three platforms: amd64, Gracehopper (ARMv9), and Jetson (ARMv8).

System Information for x86-64
~$ hostnamectl
Operating System: Ubuntu 24.04.1 LTS              
          Kernel: Linux 6.8.0-60-generic
    Architecture: x86-64
 Hardware Vendor: Dell Inc.

~$ lscpu
Architecture:             x86_64
  CPU op-mode(s):         32-bit, 64-bit
  Address sizes:          43 bits physical, 48 bits virtual
  Byte Order:             Little Endian
CPU(s):                   64
  On-line CPU(s) list:    0-63
Vendor ID:                AuthenticAMD
  Model name:             AMD EPYC 7282 16-Core Processor

~$ docker --version
Docker version 28.1.1, build 4eba377

~$ which docker
/usr/bin/docker

~$ docker buildx version
github.com/docker/buildx v0.23.0 28c90ea
Building Images
docker buildx build   --target oai-lmf   --tag dockerhubuser/oai-lmf:gh-jetson   --platform linux/amd64,linux/arm64/v8,linux/arm64   --file docker/Dockerfile.lmf.ubuntu   --builder gh-jetson-multiarchbuilder   --progress=plain   --push . 2>&1 | tee LMF_log_multiarch_buildx.log

When explicitly specifying platforms like this:

--platform linux/amd64,linux/arm64/v8,linux/arm64/v9

the build ran for about 45 minutes (roughly 3× longer than the same Dockerfile on a single architecture) before failing.

If I instead use:

--platform linux/amd64,linux/arm64/v8,linux/arm64

Even though this warning appears, the build still completes and the image is pushed to Docker Hub — but without any variant being shown (only linux/arm64).

1 warning found (use docker --debug to expand):
 - Duplicate platform result requested "linux/arm64"
Reproduce
$ cat Dockerfile 
FROM alpine:3.18
WORKDIR /app
COPY . /app

Build the above image, from both Jetson and Gracehopper; and push to dockerhub

$ docker build -t my-alpine-app .
$ docker tag my-alpine-app dockerhubuser/test-alpine:jetsonV8
$ docker push dockerhubuser/test-alpine:jetsonV8

$ docker build -t my-alpine-app .
$ docker tag my-alpine-app dockerhubuser/test-alpine:gracehopperNeoverseV2
$ docker push dockerhubuser/test-alpine:gracehopperNeoverseV2
Expected behavior

Docker is treating image build on Gracehopper ARM Neoverse v9 as only arm64 and not with the variant

docker version
Gracehopper:


~$ docker version
Client: Docker Engine - Community
 Version:           28.0.4
 API version:       1.48
 Go version:        go1.23.7
 Git commit:        b8034c0
 Built:             Tue Mar 25 15:07:33 2025
 OS/Arch:           linux/arm64
 Context:           default


Jetson


~$ docker version
Client: Docker Engine - Community
 Version:           28.4.0
 API version:       1.51
 Go version:        go1.24.7
 Git commit:        d8eb465
 Built:             Wed Sep  3 20:58:58 2025
 OS/Arch:           linux/arm64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          28.4.0
  API version:      1.51 (minimum version 1.24)
  Go version:       go1.24.7
  Git commit:       249d679
  Built:            Wed Sep  3 20:58:58 2025
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.7.27
  GitCommit:        05044ec0a9a75232cad458027ca83437aae3f4da
 runc:
  Version:          1.2.5
  GitCommit:        v1.2.5-0-g59923ef
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
docker info
Gracehopper


$ docker info
Client: Docker Engine - Community
 Version:    28.0.4
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.22.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.34.0
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 2
  Running: 2
  Paused: 0
  Stopped: 0
 Images: 35
 Server Version: 28.0.4
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: runc io.containerd.runc.v2 nvidia
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 753481ec61c7c8955a23d6ff7bc8e4daed455734
 runc version: v1.2.5-0-g59923ef
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.8.0-1025-nvidia-64k
 Operating System: Ubuntu 22.04.5 LTS
 OSType: linux
 Architecture: aarch64
 CPUs: 72
 Total Memory: 478.5GiB


Jetson:


~$ docker info
Client: Docker Engine - Community
 Version:    28.4.0
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.27.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.39.2
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 1
  Running: 1
  Paused: 0
  Stopped: 0
 Images: 13
 Server Version: 28.4.0
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 CDI spec directories:
  /etc/cdi
  /var/run/cdi
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 nvidia runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 05044ec0a9a75232cad458027ca83437aae3f4da
 runc version: v1.2.5-0-g59923ef
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.15.136-tegra
 Operating System: Ubuntu 22.04.5 LTS
 OSType: linux
 Architecture: aarch64
 CPUs: 12
 Total Memory: 61.37GiB
Additional Info

No response

Ngôn ngữ chính
Go
Star
6.1k
Fork
2.2k
Merge trung bình
1 ngày 17 giờ
Pull request đã merge (30 ngày)
28

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của docker/cli

Tất cả issue của docker/cli

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.