-
Notifications
You must be signed in to change notification settings - Fork 18.9k
Description
Description
Running an armv7l container on aarch64 host fails to show armv7l used.
Similarly running an i386 container on x86_64 host fails to show i386 used.
Steps to reproduce the issue:
- On a x86_64 host
Use this Dockerfile:
FROM debian:buster
CMD uname -m
docker buildx build --platform linux/386 -t 386-build . --loaddocker run --platform linux/386 --rm 386-build
Describe the results you received:
x86_64
Describe the results you expected:
i686
Output of docker version:
Client: Docker Engine - Community
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d
Built: Fri Jul 30 19:53:57 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d8
Built: Fri Jul 30 19:52:06 2021
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: 1.4.9
GitCommit: e25210fe30a0a703442421b0f60afac609f950a3
runc:
Version: 1.0.1
GitCommit: v1.0.1-0-g4144b63
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Output of docker info:
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.6.1)
scan: Docker Scan (Docker Inc., v0.8.0)
Server:
Containers: 8
Running: 8
Paused: 0
Stopped: 0
Images: 16
Server Version: 20.10.8
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: e25210fe30a0a703442421b0f60afac609f950a3
runc version: v1.0.1-0-g4144b63
init version: de40ad0
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 5.13.5-051305-generic
Operating System: Ubuntu 21.04
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 47.01GiB
Name: cheekon
ID: Q5DS:AESB:UPDQ:ZCAM:6TTS:UUG2:DDCV:ZXK2:6LAM:LLSI:4K56:G7PP
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: true
Insecure Registries:
Live Restore Enabled: false
And for aarch64:
docker info:
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.6.1)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 25
Server Version: 20.10.8
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
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 logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: e25210fe30a0a703442421b0f60afac609f950a3
runc version: v1.0.1-0-g4144b63
init version: de40ad0
Security Options:
seccomp
Profile: default
cgroupns
Kernel Version: 5.10.52-v8+
Operating System: Debian GNU/Linux 11 (bullseye)
OSType: linux
Architecture: aarch64
CPUs: 4
Total Memory: 7.63GiB
Name: rpi4b
ID: EPIN:334T:BCVZ:RY5G:II3S:YFNA:O3D4:MJHI:AAVX:MTMA:3UMF:DZGA
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: true
Live Restore Enabled: false
WARNING: No memory limit support
WARNING: No swap limit support
docker version:
Client: Docker Engine - Community
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d
Built: Fri Jul 30 19:55:21 2021
OS/Arch: linux/arm64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d8
Built: Fri Jul 30 19:53:34 2021
OS/Arch: linux/arm64
Experimental: true
containerd:
Version: 1.4.9
GitCommit: e25210fe30a0a703442421b0f60afac609f950a3
runc:
Version: 1.0.1
GitCommit: v1.0.1-0-g4144b63
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Additional environment details (AWS, VirtualBox, physical, etc.):
I can't seem to get the platform feature working to run arm/v7 on the aarch64 host either.
Loosely following the instructions here: https://www.docker.com/blog/multi-platform-docker-builds/
Using the same Dockerfile:
FROM debian:buster
CMD uname -m
Initial setup:
curl -Ls https://github.com/docker/buildx/releases/download/v0.6.1/buildx-v0.6.1.linux-arm64 -o ~/.docker/cli-plugins/docker-buildx
chmod +x ~/.docker/cli-plugins/docker-buildx
docker pull tonistiigi/binfmt
docker run --privileged --rm tonistiigi/binfmt --uninstall qemu-*
docker run --privileged --rm tonistiigi/binfmt --install all
Then:
docker buildx build --platform linux/arm/v7 -t arm-build . --load
[+] Building 0.7s (5/5) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 133B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/debian:buster 0.2s
=> CACHED [1/1] FROM docker.io/library/debian:buster@sha256:cc58a29c333ee594f7624d968123429b26916face46169304f0758 0.0s
=> exporting to image 0.2s
=> => exporting layers 0.0s
=> => writing image sha256:ea14390799f31110d3d42dcbd41a97bf1ff57ae3392595335be9b8d1db358fc0 0.2s
=> => naming to docker.io/library/arm-build 0.0s
Now let's try to run this arm/v7 container:
docker run --rm arm-build
WARNING: The requested image's platform (linux/arm/v7) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
aarch64
That doesn't seem right. Let's force platform?
docker run --platform linux/arm/v7 --rm arm-build
aarch64
That doesn't look right either.
docker inspect arm-build | grep Architecture
"Architecture": "arm",
That seems right, so maybe this is a docker problem and not a build problem?
docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
default * docker
default default running linux/arm64, linux/arm/v7, linux/arm/v6, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386
That seems right, no?
Here's more info about the system:
Running on RPi4B with RPI kernel and current docker:
uname -a:
Linux rpi4b 5.10.52-v8+ #1441 SMP PREEMPT Tue Aug 3 18:14:03 BST 2021 aarch64 GNU/Linux
Originally reported at docker/buildx#725