carpentries-incubator / docker-introduction

Reproducible Computational Environments using Containers
https://carpentries-incubator.github.io/docker-introduction/
Other
44 stars 48 forks source link

Some example images do not support arm64/v8 #124

Open MiddelkoopT opened 3 years ago

MiddelkoopT commented 3 years ago

Arm systems, such as the Raspberry Pi, are not supported. I was unable to run the rocker image in my Ubuntu aarch64 Raspberry Pi 4 2G. This is for Episode 04-docker-hub

ubuntu@upi4:~$ docker pull rocker/tidyverse:3.6.1
3.6.1: Pulling from rocker/tidyverse
844c33c7e6ea: Pull complete 
4f11e4e30170: Pull complete 
a9724dff2655: Pull complete 
f5f3a048c9c3: Pull complete 
a53c4db932de: Pull complete 
bd5da474b8ba: Pull complete 
be9b916e18e7: Pull complete 
b8b469f67972: Pull complete 
Digest: sha256:8163a4bb859f3825c4fb95afb6cd4bae14071cb30b15696f088c0380b8132d7a
Status: Downloaded newer image for rocker/tidyverse:3.6.1
docker.io/rocker/tidyverse:3.6.1
ubuntu@upi4:~$ docker run rocker/tidyverse:3.6.1
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
standard_init_linux.go:228: exec user process caused: exec format error
ubuntu@upi4:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 21.04
Release:    21.04
Codename:   hirsute
ubuntu@upi4:~$ uname -a
Linux upi4 5.11.0-1012-raspi #13-Ubuntu SMP PREEMPT Thu Jun 17 10:44:37 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux
ubuntu@upi4:~$ docker --version
Docker version 20.10.2, build 20.10.2-0ubuntu2

If updating the the examples would be useful I would be willing to do this and do a PR.

aturner-epcc commented 3 years ago

@MiddelkoopT Thanks for raising this. It does not seem to affect all Arm systems. I tested on my Mac with Apple Silicon M1 and it worked fine. I think this needs further investigation to see if the system you tested on is the exception or if Macs are the exception (due to Rosetta).

However, I think this is low priority as most researchers approaching the lesson will either be on x86 or on Mac M1.

Probably the correct solution for the moment is to clarify the requirements for the lesson to note that Arm systems (other than Mac) are not supported at the moment.

(I think the underlying issue here is a general lack of support for images built for Arm in places such as DockerHub rather than an issue with Docker itself. This would be a useful callout to note in the introduction where portability of containers is discussed as this shows a limitation in practice to the theory of portability.)

MiddelkoopT commented 3 years ago

Perhaps just referring to images with known multi-arch would help? The entire lesson has worked with the exception of the rocker image. In addition, the rocker was a HUGE download for a simple "docker pull" example that is not used later.

BTW which architecture is docker running on on the Mac M1? Perhaps it's a x86 VM running docker, and not natively on the M1 hardware since docker requires a Linux kernel and leverages the virtualization aspects of MacOS.