Docker registry
-
Might be useful to add auto deletion of old images:
https://github.com/jeffstephens/retention-manager -
Might be useful to add auto deletion of old images:
https://github.com/jeffstephens/retention-manager -
@mario Just looking into this now.
Wondering, what is the best way forward. The app has no UI, but can have a login screen (via proxyAuth). So, when they login, they see a blank screen. Not ideal. Does it make sense to bundle any of the docker uis like https://github.com/Joxit/docker-registry-ui/ ? Seems quite easy to do. I can look into it.
-
@mario Just looking into this now.
Wondering, what is the best way forward. The app has no UI, but can have a login screen (via proxyAuth). So, when they login, they see a blank screen. Not ideal. Does it make sense to bundle any of the docker uis like https://github.com/Joxit/docker-registry-ui/ ? Seems quite easy to do. I can look into it.
@girish depends on what the community needs. I'm more than happy to have a separate registry + other things as separate apps for those who need it.
If I needed to pick the best registry solution with UI and everything else that's well maintained and suitable for Cloudron, I'd probably look at Quay which supports LDAP auth.
-
Last I checked harbor was impractical to package (as in way too much effort, it's really geared for the k8s crowd). Quay is a good option, but let me get this basic docker registry out first, I am almost there.
-
Yeah, Quay and Harbor are definitely the big players in this space. Very similar products - harbor is CNCF graduated and Quay is upstream for the corresponding Red Hat product. Either (or both) would be good UI adds.
-
So strange, I am getting a "invalid checksum digest format" whenever I push now to this registry. Has anyone seen such an error before?
The push refers to repository [xxx.xxx.xxx/cloudron/base] fcdfeda3e242: Layer already exists 0ea3bde29271: Layer already exists d75ccb14b8b6: Layer already exists 74b4389a43ab: Layer already exists 5f38ae1e1a63: Layer already exists 3479c151673d: Layer already exists 7a307b866f25: Layer already exists ce3a66c20e17: Layer already exists 7197b970ebb9: Layer already exists 16542a8fc3be: Layer already exists 6597da2e2e52: Layer already exists 977183d4e999: Layer already exists c8be1b8f4d60: Layer already exists invalid checksum digest format
-
So strange, I am getting a "invalid checksum digest format" whenever I push now to this registry. Has anyone seen such an error before?
The push refers to repository [xxx.xxx.xxx/cloudron/base] fcdfeda3e242: Layer already exists 0ea3bde29271: Layer already exists d75ccb14b8b6: Layer already exists 74b4389a43ab: Layer already exists 5f38ae1e1a63: Layer already exists 3479c151673d: Layer already exists 7a307b866f25: Layer already exists ce3a66c20e17: Layer already exists 7197b970ebb9: Layer already exists 16542a8fc3be: Layer already exists 6597da2e2e52: Layer already exists 977183d4e999: Layer already exists c8be1b8f4d60: Layer already exists invalid checksum digest format
-
@mario Yes, with the local storage. I wonder if it's something to do with the proxy auth. I am trying it without auth now.
edit: indeed, something to do with the proxy auth. It works fine without proxy auth. Debugging.
-
@mario Yes, with the local storage. I wonder if it's something to do with the proxy auth. I am trying it without auth now.
edit: indeed, something to do with the proxy auth. It works fine without proxy auth. Debugging.
-
@girish Are you on 6.1 ? Maybe your 2FA implementation broke something with the basic auth ?
@mehdi yeah, i had that in mind and tried with 6.0 as well. fails the same. I am pretty sure this worked when I tested it back then, so I must have broke something !
-
@mehdi yeah, i had that in mind and tried with 6.0 as well. fails the same. I am pretty sure this worked when I tested it back then, so I must have broke something !
-
What I am seeing is that docker doesn't send any authorization header at all. The issue is very similar to https://stackoverflow.com/questions/55516317/docker-login-not-passing-basic-authentication-headers-to-nginx . I can curl just fine.
-
It seems that v2 registry auth does not use the basic bearer based authentication at all. https://docs.docker.com/registry/recipes/nginx/ is possibly obsolete, but I am trying to setup a registry from scratch now to double check.
-
It seems that v2 registry auth does not use the basic bearer based authentication at all. https://docs.docker.com/registry/recipes/nginx/ is possibly obsolete, but I am trying to setup a registry from scratch now to double check.
-
It seems that v2 registry auth does not use the basic bearer based authentication at all. https://docs.docker.com/registry/recipes/nginx/ is possibly obsolete, but I am trying to setup a registry from scratch now to double check.
-
@mario thanks! i needed such a confident statement to help me keep looking further
I managed to get it to work. The issue is that proxyAuth on an auth fail redirects to the login page. But the docker registry wants it to return a 401 with a www-authenticate header. The header also causes issues with browsers since it starts popping up the login dialog.
In essence, even though the basic auth works, proxyAuth is not compatible. I thought about adding an flag to the manifest to have a different behavior but then again I don't like the current approach where we just install this registry and land on an empty page (any page even some static html with instructions would be better).
I ended up packaging it together the docker registry UI and a small LDAP server (from https://git.cloudron.io/cloudron/cloudron-serve). I haven't pushed the changes since they are not working entirely. But it's what I am working on in parallel with getting 6.1 out.