Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update docker to latest #122

Open
marcodallago opened this issue May 1, 2024 · 12 comments
Open

Update docker to latest #122

marcodallago opened this issue May 1, 2024 · 12 comments

Comments

@marcodallago
Copy link

Hi, thanks for all the job done.

Successfully managed to install docker 20.10.15 for OS5 by @JediNite o my EX2Ultra. Is there a chance to release the latest .bin file with latest docker available? Had a few error with some docker install since docker-compose is now deprecated.

Thanks a lot!

Cheers

@JediNite
Copy link
Collaborator

JediNite commented May 13, 2024

@marcodallago, that is the last build I have been able to get working. Versions after used a newer version of Debian during the build process and it never worked. The binaries generated always coredumped. Tried to find a work around but never got very far.

Check out #85

@JediNite
Copy link
Collaborator

JediNite commented May 13, 2024

@marcodallago, scratch what I said before. I just tried using the standard docker binaries available from https://download.docker.com/linux/static/stable/armhf/ on my EX4100 and they worked fine, so there was no need to compile them. I am not sure if this would be the same for the EX2Ultra though, but maybe worth trying.

root@WDMyCloudEX4100 docker # docker version
Client:
Version: 26.1.2
API version: 1.45
Go version: go1.21.10
Git commit: 211e74b
Built: Wed May 8 13:59:49 2024
OS/Arch: linux/arm
Context: default

Server: Docker Engine - Community
Engine:
Version: 26.1.2
API version: 1.45 (minimum version 1.24)
Go version: go1.21.10
Git commit: ef1912d
Built: Wed May 8 13:28:49 2024
OS/Arch: linux/arm
Experimental: false
containerd:
Version: v1.7.15
GitCommit: 926c9586fe4a6236699318391cd44976a98e31f1
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0

@marcodallago
Copy link
Author

Hey @JediNite thanks for the reply!! Managed to compile latest docker using this guide
##111 (comment)

At last, couldn't install immich because I discovered they ditch arm7 support. But docker works great!

@akanoodles
Copy link

akanoodles commented Jun 11, 2024

Hey @JediNite @marcodallago, So can Portainer be updated to the latest (beyond 1.24.1) on the WD MyCloudPR4100?

@JediNite
Copy link
Collaborator

JediNite commented Jun 11, 2024 via email

@chriss-89
Copy link

chriss-89 commented Jun 15, 2024

@JediNite @marcodallago Can you explain how I can get the latest Docker version on my Ex2 Ultra? I don't quite understand 🙈😅
I have built it using the instructions
https://github.com/WDCommunity/wdpksrc/issues/111#issuecomment-1360915995
but I get the version 20.10.12 out again. Do I have to adjust something in the .sh files so that it pulls the latest Docker version and if so which ones?
@JediNite What is meant by using the standard binaries? I have unpacked the latest version, but have no idea what to do with the files.

Edit: ah I see you have released 26.1.2 on your GitHub site. Thank you very much

@mk-pmb
Copy link

mk-pmb commented Oct 26, 2024

I tried the docker_26.1.2_EX2Ultra.bin but installation fails with message "Unable to upload app package for installation. Please check your network connection and try again." Sounds like some download failed somewhere. Can we make it so that the install script in this case fakes success enough to at least be able to show a proper, actionable error message? If there is a failed download, maybe I can provide the file manually and have the script retry.

Edit: In order to "Please check your network" I tried MyCloudEX2Ultra_docker_20.10.14.bin and that one installed fine.

Edit 2: I got it to work. At least somewhat. At least for old versions of docker images. Tutorial

@Copyrght
Copy link

I tried the docker_26.1.2_EX2Ultra.bin but installation fails with message "Unable to upload app package for installation. Please check your network connection and try again." Sounds like some download failed somewhere. Can we make it so that the install script in this case fakes success enough to at least be able to show a proper, actionable error message? If there is a failed download, maybe I can provide the file manually and have the script retry.

Edit: In order to "Please check your network" I tried MyCloudEX2Ultra_docker_20.10.14.bin and that one installed fine.

Edit 2: I got it to work. At least somewhat. At least for old versions of docker images. Tutorial

I think, its because files owner in the package are docker:docker. I make package for myself with root:root owner and all works fine

@mk-pmb
Copy link

mk-pmb commented Nov 28, 2024

Thanks for that observation! That might be helpful for others. Nonetheless I'd love to see more useful messages in case of an error.

@markw65
Copy link

markw65 commented Mar 3, 2025

I was also interested in a newer version of docker, and docker compose in particular, so I took a stab:

docker compose

Modifying the install script to install the latest docker compose plugin worked perfectly, without updating docker at all, both on my pr4100 (x64) and my ex4100 (arm7l). The commit is here.

docker-x64

  • 28.0.0 and 28.0.1 almost work, but anything that requires port mapping fails, because docker relies on the system having iptables-raw, and the pr4100 (which is what I was testing on) doesn't have that.
  • backing down to 27.5.1 seems to work perfectly.

docker-arm7l

  • 27.5.1 dockerd seems to work, but this version has a runc binary that crashes on startup (appears to be the same issue that has affected various versions of dockerd), so you can't actually run a container.
  • 26.1.4 both dockerd and runc seem to work correctly, and portainer starts and runs correctly
  • many images don't work. In particular hello-world crashes on startup (just like dockerd did in certain earlier versions). I'd never run docker on my ex4100 before, so I tried the current release, and found it has the same issue.
  • I've tried to dig into why various binaries don't work, and haven't had much luck. It doesn't appear to be the previously mentioned libseccomp issue - or if it is, the previously mentioned workarounds don't work.
  • I've tried running the binary from the hello-world image directly on my ex4100, and it crashes on startup in exactly the same way. I've tried debugging it with gdb, and gdb just tells me that it crashes during startup, and after debugging that, I found that it doesn't even get to the first instruction in the binary - something in the kernel is rejecting it.
  • many images do work. arm32v7/ubuntu:bionic and everything I've tried running inside it works. arm32v7/ubuntu:latest does not.

I've split things into 3 commits: https://github.com/markw65/wdpksrc/tree/version-upgrade

I think the first commit, to add docker compose support, should be uncontroversial. It just adds the latest docker compose, it works without any other changes, and seems unlikely to break anything (I added a docker-compose script that just invokes docker compose to avoid breaking scripts).

The second commit updates to 27.5.1 for x86 and 26.1.4 for armv7l. This works at least as well as the old version for me - but I'm not a huge user of docker - so for more complex setups, maybe there are new issues.

The third commit was a set of changes I added to help me debug the install process. It's not needed, but I found it useful.

If any of this looks worthwhile, let me know and I'll make pull requests.

@mk-pmb
Copy link

mk-pmb commented Mar 6, 2025

The kernel rejecting binaries in too-new images is probably a (g)libc(6) issue. (I'm not sure when to add or omit the "g" or the "6".)

@markw65
Copy link

markw65 commented Mar 8, 2025

The kernel rejecting binaries in too-new images is probably a (g)libc(6) issue

I don't think that's it. The docker hello binary is statically linked (and I think it uses musl rather than glibc). Static linking is supposed to ensure that it works "anywhere", regardless of the installed libraries - but clearly there's some other issue...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants