Docker Community Forums

Share and learn in the Docker community.

Docker on Raspbian 64 bit with arm64v8 image


I am trying do deploy an image, which is build on CentOS 8 for arm64v8 (pulled from docker hub). The container keeps on exiting and I don’t get any errors, other than error code 159, which seems to suggest issues with the OS architecture.

docker logs nameOfContainer

Doesn’t show anything either.

I have Raspbian Buster 64 bit installed. It was 32 bit first and then I upgraded with

sudo rpi-update

I have reinstalled docker with

sudo apt-get purge docker-ce docker-ce-cli
sudo reboot
sudo apt-get install docker-ce docker-ce-cli


docker version


Client: Docker Engine - Community
Version:           19.03.13
API version:       1.40
Go version:        go1.13.15
Git commit:        4484c46
Built:             Wed Sep 16 17:07:02 2020
OS/Arch:           linux/arm
Experimental:      false

Should it be of concern, that it still reads linux/arm instead of something more 64bity?

Any more ideas on how to troubleshoot this exits with not error message issues?


The problem is still there, but it’s easier to reproduce now that the Raspberry Pi Foundation provides an aarch64 kernel. To repro on Raspbian Buster:

Install Docker CE.

Run sudo rpi-update to download the latest 64-bit kernel.

Edit /boot/config.txt add the line arm_64bit=1, ideally under the [pi4] section if this is being tested on a Pi 4.

Reboot, and confirm uname -m shows you’re now running an aarch64 kernel.

pi@raspberrypi:~ docker run -it arm64v8/debian pi@raspberrypi:~ echo $?
LXC, systemd-nspawn, or plain chroot do not have this problem. They are able to seamlessly jump from a 32-bit userland to a 64-bit container/chroot.

If there is a fundamental reason that this cannot work with Docker’s design, it should be documented and the command should provide a more informative message than null output with return code 159.

64-bit Docker containers on Raspberry Pi have a number of use-cases. At this time it seems that it’s only practical to run these on non-Raspbian distros that possess a native 64-bit userland.

The middle of your post I didn’t fully understand

I confirmed, that

uname -m


then I did

docker run -it arm64v8/debian

It pulled the image, before running it. The result though

CONTAINER ID        IMAGE                                     COMMAND             CREATED             STATUS                            PORTS               NAMES
13670ac1beb0        arm64v8/debian                            "bash"              24 seconds ago      Exited (159) 5 seconds ago                            stoic_dirac

That is what you (didn’t) want to see, right?