Skip to content

manifest list (multiarch) picks wrong arch on ARMv7 #34875

@jcberthon

Description

@jcberthon

Description

With the "new" manifest list for multi-arch support, there is a corner case on ARM where the picked-up architecture is not ideal. On a ARMv7 CPU running Docker (e.g. a Raspberry Pi 2/3), the architecture is armhf (so with floating point hardware support). However when pulling an image such as the official Debian, the "armel" variant is pulled. This is compatible with ARMv7 but emulates floating point operations instead of using the underlying hardware.

Steps to reproduce the issue:

  1. on a ARMv7 SoC (e.g Raspberry Pi 2 or 3), install Linux + Docker CE
  2. do docker run --rm -it debian dpkg --print-architecture

Describe the results you received:

It displays armel. Meaning it has pulled the suboptimal image.

Describe the results you expected:

It should display armhf. Meaning it has pulled the adequate image.

Additional information you deem important (e.g. issue happens only occasionally):

See @tianon tweet (and the rest of the thread for more info): https://twitter.com/tianon/status/909084978515927040

Output of docker version:

Client:
 Version:      17.06.2-ce
 API version:  1.30
 Go version:   go1.8.3
 Git commit:   cec0b72
 Built:        Tue Sep  5 20:08:20 2017
 OS/Arch:      linux/arm

Server:
 Version:      17.06.2-ce
 API version:  1.30 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   cec0b72
 Built:        Tue Sep  5 20:01:53 2017
 OS/Arch:      linux/arm
 Experimental: false

Output of docker info:

Containers: 7
 Running: 5
 Paused: 0
 Stopped: 2
Images: 157
Server Version: 17.06.2-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
init version: 949e6fa
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.12.10-v7-lowlat-rtc1307+
Operating System: Raspbian GNU/Linux 9 (stretch)
OSType: linux
Architecture: armv7l
CPUs: 4
Total Memory: 968.7MiB
Name: pi2-01.lan.berthon.eu
ID: (redacted)
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

Additional environment details (AWS, VirtualBox, physical, etc.):

n/a

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions