Installation steps for the latest Raspberry Pi OS 64-bit

Hi, I’d like to install Docker Engine on the latest Raspberry Pi 5, running on the latest Raspberry Pi OS 64-bit:
Release date: December 5th 2023
System: 64-bit
Kernel version: 6.1
Debian version: 12 (bookworm)

Will the installations steps in this URL work?
https://docs.docker.com/engine/install/debian/

If not, could someone provide the correct steps, please?

Or could a Docker Captain update this URL to include the installations steps on Raspberry Pi OS for not only 32-bit, but also for 64-bit, please?
https://docs.docker.com/engine/install/raspberry-pi-os/

Best,
JGC

1 Like

Sorry to disappoint, but I am not a Docker captain. I am merely a community member who just happen to know one or two things that I learned using docker over the last 9 years.

I can only assume that the 64bit Pi OS is still too new to be already covered by the docs. You might want to raise an issue and specifically ask for the RPi OS 64bit support.

1 Like

It seems you don’t know what a Docker captain is. In case you want to know more about them:

So they are not Docker Staff members and hey will not update the official documentation.

Regarding your question, if yo are not sure the installation steps work, I suggest you try it. If you have an error message, you can share it. Even if the Debian way works, if it isn’t mentioned in the documentation, it is probably not supported. If you think the documentation should be updated, you can ask for it. You can find a 'Request changes" link in the top right corner on the pages of the documentation. Or you can ask for features in the roadmap.

I also moved the topic to the Docker Engine category as you don’t use Docker Desktop. And finally, please, don’t open a new topic fo the same question if you are not satisfied with the answer :slight_smile: Thank you. I merged the two topics.

1 Like

Hi. I tried the Install Docker Engine on Debian | Docker Docs… My last commands and the GPG error messages are shown below:

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
#Hit:1 http://deb.debian.org/debian bookworm InRelease
#Hit:2 http://deb.debian.org/debian-security bookworm-security InRelease
#Get:3 http://deb.debian.org/debian bookworm-updates InRelease [52.1 kBJ
#Get:4 https://download.docker.com/linux/debian bookworm InRelease [43.3 kB]
#Hit:5 http://archive.raspberrypi.com/debian bookworm InRelease
**Err:4 https://download.docker.com/linux/debian bookworm InRelease**
  **The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8**
Reading package lists... Done
**W: GPG error: https://download.docker.com/linux/debian bookworm InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8**
**E: The repository 'https://download.docker.com/linux/debian bookworm InRelease' is not signed.**
**N: Updating from such a repository can't be done securely, and is therefore disabled by default.**
**N: See apt-secure(8) manpage for repository creation and user configuration details.**

@rimelek, thanks for your reply with clarification/correction/suggestion.

How to overcome this GPG error so I can proceed to the next step, please?

Please share the output of this code block:

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

The root cause for your problem must be within these commands.

1 Like
$ sudo apt-get install ca-certificates curl gnupg
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
ca-certificates is already the newest version (20230311).
curl is already the newest version (7.88.1-10+deb12u4).
gnupg is already the newest version (2.2.40-1.1).
0 upgraded, 0 newly installed, 0 to remove and 19 not upgraded.
$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/debian/gpg| sudo gpg -dearmor -o /etc/apt/keyrings/docker.gpg
File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
$
$
$ sudo apt-get update
Hit:1 http://deb.debian.org/debian bookworm InRelease
Hit:2 http://deb.debian.org/debian-security bookworm-security InRelease
Hit:3 http://deb.debian.org/debian bookworm-updates InRelease
Get:4 https://download.docker.com/linux/debian bookworm InRelease [43.3 kB]
Err:4 https://download.docker.com/linux/debian bookworm InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
Hit:5 http://archive.raspberrypi.com/debian bookworm InRelease
Reading package lists... Done
W: GPG error: https://download.docker com/linux/debian bookworm InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
E: The repository https://download.docker.com/linux/debian bookworm InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
$
$

And below is the output of sudo apt-get update command that ran yesterday:

Get:1 http://deb.debian.org/debian bookworm InRelease [151 KB]
Get:2 http://deb.debian.org/debian-security bookworm-security InRelease [48.0 kB]
Get:3 http://deb.debian.org/debian bookworm-updates InRelease [52.1 kB]
Get:4 http://archive.raspberrypi.com/debian bookworm InRelease [23.6 kB]
Get:5 http://deb.debian.org/debian bookworm/main armhf Packages [8,197 kB]
Get:6 http://deb.debian.org/debian bookworm/main arm64 Packages [8,685 kB]
Get:7 http://deb.debian.org/debian bookworm/main Translation-en [6,109 kB]
Get:8 http://deb.debian.org/debian bookworm/contrib arm64 Packages [45.6 kB]
Get:9 http://deb.debian.org/debian bookworm/contrib arwhf Packages [42.9 KB]
Get:10 http://deb.debian.org/debian bookworm/contrib Translation-en [48.7 kB]
Get:11 http://deb.debian.org/debian bookworm/non-free armhf Packages [55.9 kB]
Get:12 http://deb.debian.org/debian bookworm/non-free arm64 Packages [75.4 kB]
Get:13 http://deb.debian.org/debian bookworm/non-free Translation-en [66.8 kB]
Get:14 http://deb.debian.org/debian bookworm/non-free-firmware arm64 Packages [5,824 B]
Get:15 http://deb.debian.org/debian-security bookworn-security/main arm64 Packages [103...
Get:16 http://deb.debian.org/debian-security bookworm-security/main armhf Packages [101...
Get:17 http://archive.raspberrypi.com/debian bookworm/main arm64 Packages [351 kB]
Get:18 http://archive.raspberrypi.com/debian bookworm/main armhf Packages [360 kB]
Fetched 24.8 MB in 11s (2,199 kB/s)
Reading package lists... Done
N: Repository 'http://deb.debian.org/debian bookworm InRelease' changed its 'Version' v...

Thank you for helping on this!

-dearnor ??? It is supposed to be --dearmor. Two dashes and “dearmor” with “m” not “n”.

The GPG key is possibly in a base64 format and if that is the case the “asc” extension would be required instead of “gpg”. Fix the parameter and try to save the gpg file again. I’m surprised you didn’t get an error message for using an invalid parameter.

Any other suggestions to fix this GPG error, please?
I ran again and same error persists:

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
$
$
$ echo \
> "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
> $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
> sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
Hit:1 http://deb.debian.org/debian bookworm InRelease
Hit:2 http://deb.debian.org/debian-security bookworm-security InRelease
Get:3 https://download.docker.com/linux/debian bookworm InRelease [43.3 kB]
Hit:4 http://deb.debian.org/debian bookworm-updates InRelease
Err:3 https://download.docker.com/linux/debian bookworm InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
Hit:5 http://archive.raspberrypi.com/debian bookworm InRelease
Reading package lists... Done
W: GPG error: https://download.docker com/linux/debian bookworm InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
E: The repository 'https://download.docker.com/linux/debian bookworm InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
$
$

@rimelek , @meyay , it always had been typed/executed -dearmor.
Note: I edited/corrected my yesterday’s reply to correct the typo (by the OCR used to capture the text directly from my display).

If the GPG key is (possibly) in a base64 format, could you provide the command line for the “asc” extension (instead of “gpg” extension), please?

Any other suggestions to fix this GPG error, please?

Test if it is. I usually use the “less” command just because it tells me if the file is binary and it shows the content if it is not. But if you really passed the right parameter, it must be in the correct format.

I never installed Docker on Rasberry PI, never even used Rasberry PI. The 64 bit Rasberry PI is not supported by Docker officially, so since I don’t know what else could be the problem, can I suggest asking your question on a Rasberry forum as well? There could be someone who managed to install Docker on it.

Have you also tried to search for the “Docker rasberry 65 bit” keywords on Google?

I don’t know what rasberry changes in the base Debian distro but if they change anything related to how gpg keys are handled that could be your problem. People usually wrote on stackoverflow and other places the problem was that the GPG key was not readable. So make sure it is and also check the content of the docker.list file . You can share that here if you are not sure if it is correct or not.

Yes, the file is binary, and the right parameter had been passed.

Thank you for the suggestion: I just posted on Raspberry Pi forum as well:
https://forums.raspberrypi.com/viewtopic.php?p=2168043

Hello, so I have followed the instructions here: Install Docker Engine on Debian | Docker Docs and it worked for me. So if the problem with GPG was on Docker’s side, they seem to have fixed it.

Hi.
Did you install it on a Rasberry Pi 4, or Raspberry Pi 5 ?
I manage to install Docker on a fresh new Raspberry Pi OS 64bit, on my Raspberry Pi4, using the convenience script.

But when I do it on my Raspberry Pi5 (still fresh new image deployed, on the same 1TB SSD), after some time & steps passed I get an error, “filesystem is read-only”.
Everything’s locked, impossible to pass a single SSH command.
It happens more or less during the big apt-get install commands. I flashed again a fresh image, and retried, many times…still getting the same issue.

After googling it, I bought an official Raspberry Pi5 power supply : still getting exactly the same error.

If you have any idea which can help me a bit, you’re highly welcome :smile: !

1 Like

I installed Docker on my Pi5 PiOS Bookworm using

and

1 Like

Hi, it was Raspi 5, 8GB with the desktop version of OS 64bit. I installed it through SSH from my actual PC. I only tried the docker apt repository way, and it worked. I mostly stay away from the convenience script, because I am too lazy to think about the implications. By the looks of it, @cyclicalobsessive also used the repository way as described in docker docs.

Hi !

I finally managed to troubleshoot the issue…sort of.
I tried installing docker on a USB key, using same USB 3.0 port where the SSD was, and it worked like a charm.

So it is definitely my SSD, or the USB 3.0 case/interface that I use, which is not compatible with the raspberry Pi 5.

Thanks for your help :slight_smile: !

-------- Message d’origine --------

Hey guys, I am getting this error on Pi 5 64-bit:

sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

The following packages have unmet dependencies:
docker-ce : Depends: iptables but it is not installable
Recommends: docker-ce-rootless-extras but it is not going to be installed
Recommends: git but it is not installable
Recommends: libltdl7 but it is not installable
Recommends: pigz but it is not installable
E: Unable to correct problems, you have held broken packages.

Are you using a clean install of Rasberry pi os? Iptables shouldn’t be not installable… I just installed docker last night on a rpi5 without issues. I would reinstall RPi OS and try again…

I just tried this on my Pi 5 running Pi OS Lite (64-bit)
Everything worked but when I run the last line
docker run hello-world
I get the output

docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

I didn’t have this problem on the same device running ubuntu server but I want to get it working on Pi OS Lite

Then run it as root (sudo docker) or add your user to the docker group. Assuming the socket is owned by that group on RPI as well. But the problem itself doesn’t seep related to RPI you should find many solution on Google, so I assume you tried to search and didn’t work?

Sorry I got confused and posted the wrong error.

If I run

sudo docker run hello-world

I get

Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/library/hello-world/manifests/sha256:d000bc569937abbe195e20322a0bde6b2922d805332fd6d8a68b19f524b7d21d": dial tcp [2600:1f18:2148:bc00:8d61:9b62:40aa:8bb8]:443: connect: network is unreachable.
See 'docker run --help'.