-
Notifications
You must be signed in to change notification settings - Fork 62
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
Docker 20.10.5 on armhf platforms #85
Comments
I found why the mismatch happened, because of the if condition in the install.sh script:
Do you know why later versions are not working? How can I help? |
The dockerd process throws a segmentation fault on the new releases higher than 19.03.8 every time it is called (dockerd -version for example) and this happens with both a compiled version and the one from the docker download site. I only have an EX4100 but may work okay on other arm devices.
Get Outlook for iOS<https://aka.ms/o0ukef>
…________________________________
From: gabrielitos87 ***@***.***>
Sent: Saturday, March 27, 2021 9:27:06 AM
To: WDCommunity/wdpksrc ***@***.***>
Cc: Subscribed ***@***.***>
Subject: Re: [WDCommunity/wdpksrc] Mismatch Docker version? (#85)
I found why the mismatch happened, because of the if condition in the install.sb script:
if [ ${ARCH} != "x86_64" ]; then # Update the "ARCH" to "armhf" so it matches the docker download site # Versions above "19.03.8" do not have a working "dockerd" binary on WD EX4100 ARCH="armhf" VERSION="19.03.8" fi
Do you know why later versions are not working? How can I help?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub<#85 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ADMYAD72EFF73JV4IZEBIRDTFUJ4TANCNFSM4Z4AY34Q>.
|
Thanks for your answer. I made some investigations too. I can confirm that downloading docker-20.10.5.tgz manually in the My Cloud EX2 Ultra and running ./dockerd -v also provides Segmentation Fault. However, I tried something more: I did the same on my Raspberry Pi 3 (which is also armhf) and I get the same Segmentation Fault. Moreover, I tried also docker-20.10.2.tgz , and that also gives Segmentation Fault. I did the last test because Docker 20.10.2 is the one available from the official repositories (through the script get-docker.sh): that works fine! You can appreciate the difference:
Following some Google digging, I found that this debugging can help, but this is above my current level of understanding.
Any guess? |
I created a bug report in the Docker repository: docker/for-linux#1226 |
I got as far as you did with diagnosing it with strace as well. I also tried "gdb", but not an expert in it and not sure it works well for troubleshooting issues with "golang" compiled applications. Cheers, JediNite |
Maybe this discussion and especially the solution at the end might be the way to go: moby/moby#40733 |
Thanks for your answer. I checked the post too, but it seems that was a repository mistake: the Debian instead of the Raspbian package for was used (and those are packages with dynamically linked libraries, so we cannot use them here, right?). I couldn't find how the Raspbian package was compiled: since it is hosted in the official Docker repository, I guess they used the standard source code... |
I tried to compile on my (poor old) Raspberry Pi 3 the whole Docker following the standard procedure (https://oyvindsk.com/writing/docker-build-from-source). After some hours, I obtained some binaries which are still providing Illegal Instruction! I couldn't find how the Raspberry compilation should be treated differently than the normal compilation, and it is not working using the correct procedure from scratch. So I opened an issue on the moby tracker: |
https://github.com/tttapa/RPi-Cpp-Toolchain |
I am currently trying to build the static binaries of dockerd and the rest on my Rpi3 using a manual procedure similar to this: The main difference here is that I am also compiling the go compiler: I hope this makes a difference. As I wrote on the Moby tracker, I compiled the docker using the automatic procedure (make binaries) from their git, but it resulted again in a dockerd providing "Illegal instructions". I managed also to cross compile forcing an armv5 and armv6 versions, but still the same problem. |
I managed to have working binaries! After quite a number of tests, I finally found the winning recipe:
The files that I generated are quite large and are available from my Dropbox. Can we package them in the WD format, @stefaang ? Just for completeness, this is what I also tried but didn't work:
|
Good work in tracking that down. I copied to binaries over to my EX4100 from your dropbox and tried to run "dockerd -v" as well and it works. I used to build binaries for the EX4100 on OS3 because "seccomp" was not enabled in the kernel, so can probably go back and have a go with the changes you have provided as well. Have you updated the issue that you created on moby/moby as well ? Cheers, Jedinite |
Yes, I updated the issue in moby/moby but there was no reaction.. Maybe that's not depending on them, but on the golang buster Docker image. How can the docker binaries be included in the WD package? Shall i just put them in the folder before calling build.sh? |
If you go back and have a look at https://github.com/WDCommunity/wdpksrc/blob/f6ef810c78a75fbb94541e5df4395a104ecf8655/wdpk/docker/install.sh I used to host the bundled binaries I used to build for EX4100 on another Github Repo. You could probably do something similar. Cheers, JediNite |
Added references to gabrielitos87 and WDCommunity/wdpksrc#85
I've updated the old Github repo I had with details based on your findings and a new build procedure and script along with a copy of the binaries. Check it out at https://github.com/JediNite/docker-ce-WDEX4100-binaries. Cheers, JediNite |
Hi all, Commit 9726307 should now address this issue. Cheers, JediNite |
It works! I checked out the commit, I created the package with build.sh and I installed in my EX2 Ultra. The flag --add-host host.docker.internal:host-gateway is accepted, so the version is confirmed! Thanks! |
It should also be possible to run "docker version", "docker --version" and "dockerd -v" and all of these should show version 20.10.5 as well. |
Yes, that shows the correct version too! But I thought that number was hardcoded by this:
What is the procedure now for this issue? Should a pull request be made? |
Great work @gabrielitos87 ! |
Check out the "quick and dirty" build script I made in https://github.com/JediNite/docker-ce-WDEX4100-binaries/blob/master/build.sh. One of the variables it takes in is the target build version to get from the docker-cli and moby/moby GitHub projects. More then happy for someone to take this and try and automate it more. Cheers, JediNite |
i have pr2100 i hope release new version |
current docker has libseccomp problem with transmission. |
Thanks to the work from @gabrielitos87, we were able to get docker working on the armhf platforms and part of getting this to work was to change the Ubuntu release used to build docker from stretch to buster. I saw as per https://docs.linuxserver.io/faq#libseccomp that the fixes involve installing a version of libseccomp2 which appears to have been sourced from buster. We would need to check if a similar package is available in stretch, update the "Dockerfile.patch" (which can be located at https://github.com/JediNite/docker-ce-WDEX4100-binaries) to include libseccomp2 in the "apt-get-install" statements and do some testing to see if this then allows firstly a successful docker compile and secondly a working transmission container. Anyone else got thoughts on a different approach ? Cheers, JediNite |
I've just put some binaries for 20.10.6 on my binaries repo (https://github.com/JediNite/docker-ce-WDEX4100-binaries/releases/tag/v20.10.6). Do you want to try these and see if the same issue is in 20.10.6 ? I did get an error in the patching process for the Dockerfile as some of the lines have changed between 20.10.5 and 20.10.6 and need to check these out further. Cheers, JediNite |
I have mirror gen2. |
The packages I release should work for any WD armhf platform, so if your gen2 is also arm based, it is worth a shot. Reading through this a bit more, the fixes suggested seem to involve installing "libseccomp2" within the HOST OS itself. WD do not really allow access to the firmware files in order to add the package. They do occasionally release the source code packages and provide tools to build your own firmware file, but can be a bit hit and miss and has potential to brick your NAS if done incorrectly. A "workaround" for your issue if it is seccomp related, might be to see if you can start the container with seccomp disabled. Cheers, JediNite |
any tips to installation? I am not familiar with os5. I used to use omv |
used ssh to extract and copy but write error. |
Hi, You can't extract this into /tmp as it is by design a small filesystem. This has to be extracted to on of the data drives. If you have installed a previous version of the docker packages, you can update the contents in /mnt/HD/HD_a2/Nas_Prog/docker/docker for example. JediNite |
I got 20.10.7 and extract by update. restarted and updated portainer and transmission works ok. thanks. |
I’m trying to build a newer Docker (25.0.4 is current), but Stretch is no so old that it’s barely supported (apt repos archived, GoLang doesn’t support it anymore). Is there a way to build with a more modern version of Debian? |
@koehn, 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 Server: Docker Engine - Community |
Platform
My Cloud EX2 Ultra
Application
Docker
Describe the bug
I installed the dependencies on Ubuntu, cloned the repository and launched build.sh inside the docker folder.
I obtained inside packages/docker/OS5 the compiled package docker_20.10.5_EX2Ultra.bin (along with the other platforms and source).
I installed it through the web interface, obtaining a successful installation and a version number 20.10.5.
Accessing through ssh and running "docker -v", I get version 19.03.8.
If I uninstall Docker from the webinterface, "docker -v" gives me command not found.
I needed the version 20.10.0+ in order to use the docker option "--add-host host.docker.internal:host-gateway" and access the mariadb database in the host from the docker container.
Attached the source
docker_20.10.5_src.tar.gz
The text was updated successfully, but these errors were encountered: