TheBrian Posted December 22, 2022 Share Posted December 22, 2022 I'm wondering if someone can help with a published Unraid+Docker app problem. I've built 2 containers and published them to CA. One of the containers (phvalheim-server) show updates "not available". The other (intel-gpu-telegraf) works fine. The .xml templates are very similar and I can't seem to figure out how to fix this. I'm getting complaints from people using Unraid that this new container (phvalheim-server) is showing "not available" on everyone's installation. Including mine and two of my test systems. The only search results I find are related to all containers having this issue which is DNS related or a bug prior to 6.9. I'm on 6.11.5 and all versions since creating this container have had this issue. Template for phvalheim-server: https://github.com/brianmiller/docker-templates/blob/master/phvalheim-server/phvalheim-server.xml Template for intel-gpu-telegraf: https://github.com/brianmiller/docker-templates/blob/master/intel-gpu-telegraf/intel-gpu-telegraf.xml Here is a screenshot showing the issue. My other container works fine. Any help is appreciated. -Brian Quote Link to comment
Patrick Schweitzer Posted December 22, 2022 Share Posted December 22, 2022 Without trying to hijack your thread... I'm having multiple containers that do this and I don't have the answer. I can find the 'broken link' on dockerhub and can't say it is always a specific docker over another (I have several that do this and several that don't). However I have found if you 'force update' the container it returns to an up to date status. I haven't seen any commonalities and I'm just starting to research the problem here in the forums when I found your thread. Quote Link to comment
TheBrian Posted December 23, 2022 Author Share Posted December 23, 2022 You're likely having the same issue. I use other containers from CA that I didn't author and also have this issue. Quote Link to comment
TheBrian Posted December 23, 2022 Author Share Posted December 23, 2022 It looks like we're alone on this one. Quote Link to comment
Solution TheBrian Posted December 25, 2022 Author Solution Share Posted December 25, 2022 (edited) I figured it out. This isn't a CA or unRAID issue. It's OCI compatibility with DockerHub. Hopefully this can help someone else. My debugging process: I grepped through the entire directory /usr/local/emhttp/plugins/dynamix.docker.manager/include for "not available" which is the HTML label shown in the Unraid Docker UI To prove to myself that I found the right label, I added the "!" you see in the screenshot above. This label is inside a case/switch condition. I.e., 0="up-to-date", 1="update ready", 2="rebuild ready" else, "not available" within the DockerContainers.php file. My containers were returning a NULL value which results in the "default/else" (not available message). This condition evaluates the variable "$updateStatus". This variable is set by an array read of the $info['updated'] array element. This variable is set by DockerClient.php and where most of my debugging occurred. /usr/local/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php: I added the following to the "getRemoteVersionV2" function to assist in debugging. $file = '/tmp/foo.txt'; file_put_contents($file, PHP_EOL . $image . '(' . $manifestURL . ')' . ' ', FILE_APPEND); This sent me on a reverse engineering journey and helped me create a little test script: #!/bin/bash repo="theoriginalbrian/phvalheim-server" TOKEN=$(curl --silent "https://auth.docker.io/token?scope=repository:$repo:pull&service=registry.docker.io" | jq -r '.token') curl --header "Accept: application/vnd.docker.distribution.manifest.v2+json" --header "Authorization: Bearer $TOKEN" "https://registry-1.docker.io/v2/$repo/manifests/latest" The output of this little test script: {"errors":[{"code":"MANIFEST_UNKNOWN","message":"OCI manifest found, but accept header does not support OCI manifests"}]} A bit of research landed me in DockerHub API documentation...in short, OCI images do not contain the SHA256 image digest (at least in the location DockerHub expects). This led me to look at how I'm building my images. My dev system is just a simple Rocky 8.6 (EL) VM, which runs podman. By default, podman builds in the OCI format. Simply passing "--format=docker" to my podman build command solved the issue. Results: After clicking "check for updates": After clicking "apply update": After clicking "apply update" and "check for updates:" TL;DR: add "--format=docker" to your docker/podman build command. -Brian Edited December 25, 2022 by TheBrian 4 3 1 Quote Link to comment
Patrick Schweitzer Posted December 25, 2022 Share Posted December 25, 2022 Wow... I'm impressed with the sleuthing you went through. If no one else says so... Thank you... especially for the TL;DR..😀 aka, above my head, about half way through. LOL 1 Quote Link to comment
PaulV86 Posted January 21, 2023 Share Posted January 21, 2023 (edited) Nice work @TheBrian!! Is there somewhere in Unraid GUI where I can add this line? Edited January 21, 2023 by PaulV86 Quote Link to comment
Guesch Posted January 21, 2023 Share Posted January 21, 2023 Just to note that I'm having the same issue on a few dockers. At first I thought it was because I had an issue with my DNS (pihole) but changing unraid DNS to use 1.1.1.1 and 8.8.8.8 didn't fix. To add assault to injury, when I try to add --format=docker as an extra parameter as suggested above, the docker don't compile anymore I receive the following error message: -u 99:100 --format=docker 'coderaiser/cloudcmd' unknown flag: --format Any assistance will be appreciated! Quote Link to comment
canedje Posted January 21, 2023 Share Posted January 21, 2023 Here to. I do have this problem on to Dockers at the moment. It appears when an update is available It is not only with Unraid. I did read some more topics people having the same problem on other platforms Quote Link to comment
m33ts4k0z Posted January 21, 2023 Share Posted January 21, 2023 1 hour ago, canedje said: Here to. I do have this problem on to Dockers at the moment. It appears when an update is available It is not only with Unraid. I did read some more topics people having the same problem on other platforms Hello, Please check the thread that I just made about this issue. My solution might help you too. Quote Link to comment
PaulV86 Posted January 21, 2023 Share Posted January 21, 2023 (edited) 5 hours ago, Guesch said: Just to note that I'm having the same issue on a few dockers. At first I thought it was because I had an issue with my DNS (pihole) but changing unraid DNS to use 1.1.1.1 and 8.8.8.8 didn't fix. To add assault to injury, when I try to add --format=docker as an extra parameter as suggested above, the docker don't compile anymore I receive the following error message: -u 99:100 --format=docker 'coderaiser/cloudcmd' unknown flag: --format Any assistance will be appreciated! I don''t think we can change this for running containers: see here I have not yet tried the solution offered by @m33ts4k0z He changes this line: Quote $header = ['Accept:application/vnd.docker.distribution.manifest.list.v2+json,application/vnd.docker.distribution.manifest.v2+json']; to Quote $header = ['Accept:application/vnd.docker.distribution.manifest.list.v2+json,application/vnd.docker.distribution.manifest.v2+json,application/vnd.oci.image.index.v1+json']; But I cannot oversee the possible implications for changing a main docker file, as other systems might be depending on it? Edited January 21, 2023 by PaulV86 Quote Link to comment
m33ts4k0z Posted January 21, 2023 Share Posted January 21, 2023 (edited) 1 hour ago, PaulV86 said: I don''t think we can change this for running containers: see here I have not yet tried the solution offered by @m33ts4k0z He changes this line: to But I cannot oversee the possible implications for changing a main docker file, as other systems might be depending on it? This wont affect anything else. I suppose it will also be integrated by the Unraid team. Edited January 21, 2023 by m33ts4k0z Quote Link to comment
Veriwind Posted January 22, 2023 Share Posted January 22, 2023 My issue persisted until I forced an update on glances and PlexTraktSync but when I click "Check for updates" it goes back to "not available". Quote Link to comment
PaulV86 Posted January 22, 2023 Share Posted January 22, 2023 1 hour ago, Veriwind said: My issue persisted until I forced an update on glances and PlexTraktSync but when I click "Check for updates" it goes back to "not available". Did you apply the workaroud of @m33ts4k0z? Quote Link to comment
LaserGuidedBrick Posted February 21, 2023 Share Posted February 21, 2023 I found that forcing an update will fix this issue. Quote Link to comment
OOGABOOGA Posted February 21, 2023 Share Posted February 21, 2023 8 minutes ago, LaserGuidedBrick said: I found that forcing an update will fix this issue. Forcing update on my Komga docker fixed it for about a day. Not Available returned the next day when checking Docker menu. Quote Link to comment
Kilrah Posted February 21, 2023 Share Posted February 21, 2023 Install the Docker Update Patch plugin. 2 Quote Link to comment
LaserGuidedBrick Posted February 21, 2023 Share Posted February 21, 2023 6 hours ago, OOGABOOGA said: Forcing update on my Komga docker fixed it for about a day. Not Available returned the next day when checking Docker menu. Yeah sorry, your right it came back. @m33ts4k0z work around does work though until you reboot. The Docker Update Patch does seem to fix it properly. Quote Link to comment
Veriwind Posted February 24, 2023 Share Posted February 24, 2023 On 1/22/2023 at 2:53 AM, PaulV86 said: Did you apply the workaroud of @m33ts4k0z? The docker patch plugin solved my issue 1 Quote Link to comment
EquinoxusCZ Posted February 28, 2023 Share Posted February 28, 2023 On 2/21/2023 at 4:59 PM, Kilrah said: Install the Docker Update Patch plugin. Thanks, this helped. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.