jlesage / docker-jdownloader-2

Docker container for JDownloader 2
MIT License
818 stars 71 forks source link

no matching manifest for linux/arm/v8 in the manifest list entries. #142

Closed dnnp362 closed 3 months ago

dnnp362 commented 1 year ago

latest: Pulling from jlesage/jdownloader-2 docker: no matching manifest for linux/arm/v8 in the manifest list entries.

Hi,

thank you in advance, I get this error about the manifest when trying to pull the image.

is this some metadata you could add to the container? or is an architecture limitation? I'm trying to run it on a Raspberry Pi 4 8GB

This is my kernel: Linux kodi 6.1.12 #1 SMP Tue Feb 28 04:39:00 UTC 2023 aarch64 GNU/Linux

jlesage commented 1 year ago

You seems to run a 64bits OS. The requested platform should be "linux/arm64/v8", not "linux/arm/v8"...

dnnp362 commented 1 year ago

Yes, thank you, but afaik 'arm64/v8' doesn't exist, it is 'arm/v8' that can handle 32/64bits and it looks that my docker doesn't like current tags.

https://en.wikichip.org/wiki/arm/armv8#AArch64

would it be possible to add arm/v8 for those that are 64 bit capable to the container? Thank you again.

jlesage commented 1 year ago

but afaik 'arm64/v8' doesn't exist, it is 'arm/v8' that can handle 32/64bits

I'm 100% sure that arm64/v8 exists. This is in fact the only 64-bits ARM platform supported by Docker.

arm/v8 would mean 32-bits arch with the v8 variant, which is not a combinaison I've ever seen. With 32-bits ARM, the variants are either v6 or v7.

Note that the Raspberry 4 can run 32-bits or 64-bits OS. This is dictating which version of the image it will pull. This container supports only 64-bits ARM, thus you must use a 64-bits OS.

Finally, simply running docker pull jlesage/jdownloader-2 on you Raspberry should be enough for Docker to select the correct image. I'm not sure why in your case it tries to select something different.

jlesage commented 1 year ago

Here is what I get on my Raspberry 4 B, running the Raspberry OS 64-bits:

$ uname -a
Linux raspberrypi 5.15.74-v8+ #1595 SMP PREEMPT Wed Oct 26 11:07:24 BST 2022 aarch64 GNU/Linux

$ docker pull jlesage/jdownloader-2
Using default tag: latest
latest: Pulling from jlesage/jdownloader-2
3760b48202b3: Already exists
4f4fb700ef54: Pull complete
2720bcbf0eeb: Pull complete
14e529422b99: Pull complete
4b4428c35aab: Pull complete
3baf4fd1031a: Pull complete
017a64d4a562: Pull complete
2e3f86452590: Pull complete
f4ccd836ed1b: Pull complete
cc9a6af94887: Pull complete
af3afc1fd636: Pull complete
02b212437706: Pull complete
9061467774c7: Pull complete
c19d7ce880de: Pull complete
b8acab9834ff: Pull complete
fe5256cf3b0b: Pull complete
aea5ab45c2b6: Pull complete
9c76e5351801: Pull complete
7f50fcfdc9c7: Pull complete
52f1c2dfba07: Pull complete
8c21c9190299: Pull complete
9031ad421fe7: Pull complete
90cb12d716ff: Pull complete
9af0f86d3a66: Pull complete
18c22aa3d8bc: Pull complete
e6c955f5f8bc: Pull complete
129eb5d9cca5: Pull complete
9f4ab91273bf: Pull complete
4883b2140c83: Pull complete
4b6a2ac0d941: Pull complete
0986e0d531d9: Pull complete
Digest: sha256:756ecb628ad3fb629480fd5781f3f0b08126581d2daa2e6ae1472579dc7915e7
Status: Downloaded newer image for jlesage/jdownloader-2:latest
docker.io/jlesage/jdownloader-2:latest
timoknapp commented 1 year ago

Hi @jlesage,

I am having a similar issue on both of my Raspberry Pi 4s. (one linux/arm/v8 64bit and one linux/arm/v7 32bit). I just tried it myself and it neither worked on my machines. Since one machine requires to be running in an 32bit environment I would be really happy if you would add the corresponding platform to your GitHub action.

I already forked your repo, updated it accordingly and I am now able to run the container! :)

I will create created a PR (https://github.com/jlesage/docker-jdownloader-2/pull/145) soon, so would be amazing if you could have a look into it.

Here are logs showing the failure:

Raspberry Pi 4 (Pi OS 32 bit)

uname -a
Linux raspberry 5.15.32-v7l+ #1538 SMP Thu Mar 31 19:39:41 BST 2022 armv7l GNU/Linux

docker pull jlesage/jdownloader-2
Using default tag: latest
latest: Pulling from jlesage/jdownloader-2
no matching manifest for linux/arm/v7 in the manifest list entries

Raspberry Pi 4 (Pi OS 64 bit)

uname -a
Linux raspberry 5.10.103-v8+ #1529 SMP PREEMPT Tue Mar 8 12:26:46 GMT 2022 aarch64 GNU/Linux

docker pull jlesage/jdownloader-2
Using default tag: latest
latest: Pulling from jlesage/jdownloader-2
no matching manifest for linux/arm/v8 in the manifest list entries

Regards, Timo

jlesage commented 1 year ago

32-bit ARM image is not available because of the lack of optimized Java support. See https://github.com/jlesage/docker-jdownloader-2/issues/131. While it's possible to build an image, the execution is too slow to be usable.

For the 64-bit ARM image, it seems that for some reason Docker is not requesting to correct architecture. On a 64-bit OS, it should request the arm64 architecture, not arm (which is 32-bit).

As mentioned earlier, I don't see the issue on my Raspberry Pi 4B running the latest Raspberry Pi OS (64-bits). What version of docker are you using ?

Here is what I have:

uname -a
Linux raspberrypi 6.1.19-v8+ #1637 SMP PREEMPT Tue Mar 14 11:11:47 GMT 2023 aarch64 GNU/Linux
docker version
Client: Docker Engine - Community
 Version:           23.0.2
 API version:       1.42
 Go version:        go1.19.7
 Git commit:        569dd73
 Built:             Mon Mar 27 16:16:13 2023
 OS/Arch:           linux/arm64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.2
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.7
  Git commit:       219f21b
  Built:            Mon Mar 27 16:16:13 2023
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.19
  GitCommit:        1e1ea6e986c6c86565bc33d52e34b81b3e2bc71f
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
jlesage commented 1 year ago

Also, on your 64-bit OS, if you manually set the platform, does it work?

docker run --rm --platform linux/arm64/v8 jlesage/jdownloader-2
timoknapp commented 1 year ago

32-bit ARM image is not available because of the lack of optimized Java support. See #131. While it's possible to build an image, the execution is too slow to be usable.

This is not entirely true. I adapted the code like in the PR and built the docker image for linux/arm/v7 myself and all works fine. Of course performance could be better, but JDownloader functions as expected without any issue.

As mentioned earlier, I don't see the issue on my Raspberry Pi 4B running the latest Raspberry Pi OS (64-bits). What version of docker are you using ?

On my 64 bit Pi you are right, it seems that it is not resolving the architecture correctly:

docker version
Client: Docker Engine - Community
 Version:           23.0.1
 API version:       1.42
 Go version:        go1.19.5
 Git commit:        a5ee5b1
 Built:             Thu Feb  9 19:47:20 2023
 OS/Arch:           linux/arm
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.1
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.5
  Git commit:       bc3805a
  Built:            Thu Feb  9 19:47:20 2023
  OS/Arch:          linux/arm
  Experimental:     false
 containerd:
  Version:          1.6.18
  GitCommit:        2456e983eb9e37e47538f59ea18f2043c9a73640
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Manually setting the platform works though. Thanks! So the image works at least on my 64 bit environment.

Would it be fine for you to still merge the support for a 32 bit environment?

jlesage commented 1 year ago

On my 64 bit Pi you are right, it seems that it is not resolving the architecture correctly

Did you install the 64bit version of Docker ? You can verify the binary with:

$ file /usr/bin/docker

/usr/bin/docker: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=a4568564499cfd8941d4e77a4eb1bad6a8f3ccde, for GNU/Linux 3.7.0, with debug_info, not stripped

Would it be fine for you to still merge the support for a 32 bit environment?

Last time I tried it was too slow. At least the initial installation was interminable. I will build arm/v7 again and have another try to see.

dnnp362 commented 1 year ago

Also, on your 64-bit OS, if you manually set the platform, does it work?

docker run --rm --platform linux/arm64/v8 jlesage/jdownloader-2

Hi, that worked for me. Thank you.

timoknapp commented 1 year ago

Did you install the 64bit version of Docker ? You can verify the binary with:

It seems that I did not. I will reinstall it accordingly.

Last time I tried it was too slow. At least the initial installation was interminable. I will build arm/v7 again and have another try to see.

I mean it is definitely slow and the initial setup takes a while. But for an application which you rarely use, I find it totally acceptable. And since its technically working, I see no reason in not providing a corresponding Docker image. ☺️

Toshibuck commented 1 year ago

Hello, I am in the same situation as above, I can't use your jdownloader image on a raspberry 4.

uname -a Linux superpi4 6.1.25-v8+ #1647 SMP PREEMPT Wed Apr 26 17:39:08 BST 2023 aarch64 GNU/Linux

I use the 32bits version of docker, but I don't see how I can change that, I used the method given in the doc by adding the repository.

file /usr/bin/docker /usr/bin/docker: ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=e6ade23dc898cc3c9afceb1257a67a6ef69c314b, for GNU/Linux 3.2.0, with debug_info, not stripped

I also manage to download the image via the command : docker run --rm --platform linux/arm64/v8 jlesage/jdownloader-2

Although I see the container running via portainer, there is no IP address assigned or even port opened although I mentioned it in the docker-compose.

Is there any known solution? Thanks in advance

jlesage commented 1 year ago

Which method did you use to install Docker ?

Toshibuck commented 1 year ago

Good evening,

I used the method given in the docker doc using the apt repository. https://docs.docker.com/engine/install/debian/#install-using-the-repository

jlesage commented 1 year ago

And which OS did you install on your raspberry ?

Toshibuck commented 1 year ago

Hello, I didn't bother too much, I used Raspberry Pi Imager to write on a ssd and I used Raspberry Pi OS

lsb_release -a Distributor ID: Raspbian Description: Raspbian GNU/Linux 11 (bullseye) Release: 11 Codename: bullseye

jlesage commented 1 year ago

Ok, I'm not sure why it installed the 32-bits version... Maybe you can try to re-install Docker using this guide: https://raspberrytips.com/docker-on-raspberry-pi/

jlesage commented 1 year ago

Last time I tried it was too slow. At least the initial installation was interminable. I will build arm/v7 again and have another try to see.

I tried again an arm/v7 version: on a Raspberry 4B, it took more than 10 min to perform the initial JDownloader setup. Also, the restart of JD was too slow, causing the container to stop instead. @timoknapp, do you see similar behaviours ?

Toshibuck commented 1 year ago

Ok, I'm not sure why it installed the 32-bits version... Maybe you can try to re-install Docker using this guide: https://raspberrytips.com/docker-on-raspberry-pi/

Good morning, I come to make a small return on the basic concern: I reinstalled Pi OS because I realized that I had the x64 desktop version installed and not the headless version. I reinstalled docker the same way as the first following the documentation, and this time I do have a x64 version of docker and the JDownloader image works great.

Maybe with a desktop version it's a 32bit version of docker that is installed.

THANKS

mathrb commented 10 months ago

Hello For some like me that did not have time reinstalling a full 64 OS, there's a way to make it work thanks to the other docker base gui images available here https://github.com/jlesage/docker-baseimage-gui Edit the docker file to replace the alpine image with ubuntu 20.04 (also update the commands that are os dependent) and it will works like a charm

jlesage commented 3 months ago

Closing this issue. Please re-open is needed.