Replies: 2 comments 6 replies
-
|
Personally, my preference is for tools to natively support the OCI Layout, allowing images to be deployed directly from that without any http or registry server. Until then, as a shameless self promotion, there's olareg that serves content from an OCI Layout with a minimal Go based server implementing the APIs that clients expect. |
Beta Was this translation helpful? Give feedback.
-
|
In reading this, my first thought was that most of this should just work, so I set up some static content at https://tmp.tianon.xyz/v2/ with a My testing with clients is that $ crane digest tmp.tianon.xyz/test:latest
2025/10/30 10:52:17 HEAD request failed, falling back on GET: HEAD https://tmp.tianon.xyz/v2/test/manifests/latest: response did not include Docker-Content-Digest header
sha256:54601ace1bfa6c5f1fade4c284f730491c8b3072dbe40ec56e7df7d65dde589b
$ crane manifest tmp.tianon.xyz/test:latest
{
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.index.v1+json",
"manifests": [
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:9ef42f1d602fb423fad935aac1caa0cfdbce1ad7edce64d080a4eb7b13f7cd9d",
"size": 1165,
"platform": {
"os": "linux",
"architecture": "amd64"
},
"annotations": {
"com.docker.official-images.bashbrew.arch": "amd64",
"org.opencontainers.image.base.name": "scratch",
"org.opencontainers.image.created": "2025-04-25T23:09:46Z",
"org.opencontainers.image.revision": "fd07cf2c5b1aa4a00d10701124615cee90956ce0",
"org.opencontainers.image.source": "https://github.com/tianon/dockerfiles.git",
"org.opencontainers.image.url": "https://hub.docker.com/r/tianon/true",
"org.opencontainers.image.version": "oci"
}
}
]
}
$ docker pull tmp.tianon.xyz/test:latest
Error response from daemon: missing signature key
$ sudo ctr content fetch tmp.tianon.xyz/test:latest
WARN[0000] reference for unknown type: application/octet-stream digest="sha256:54601ace1bfa6c5f1fade4c284f730491c8b3072dbe40ec56e7df7d65dde589b" mediatype=application/octet-stream size=901
ctr: failed to copy: httpReadSeeker: failed open: could not fetch content descriptor sha256:54601ace1bfa6c5f1fade4c284f730491c8b3072dbe40ec56e7df7d65dde589b (application/octet-stream) from remote: not found |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hosting docker containers is not easy. The protocol requires lot of specialized headers and authentication techniques. I was wondering whether it would be possible to make it more simpler and more HTTP standard compliant. My ultimate goal would be to be able to support hosting containers on plain static web servers.
My idea is the following:
What is we would use the OCI local directory layout -which is already standardized-, and put that (maybe with some minor changes) to a static HTTP server?
Authorization for static web servers are standardized: (basic auth, oauth2 etc... ).
Eg. static.bla.org
/oci-layout (optional)
/index.json (optional)
/blobs (optional)
/library/postgres:
+ oci-layout
+ index.json
+ blobs
podman pull https+oci://static.bla.org/library/postgres:17podman search https+oci://static.bla.org/library/postgresWould do the same and just parse the json.
It might make sense to allow sharing blobs in the root between all images (like os layers etc...).
What do you think about this?
Beta Was this translation helpful? Give feedback.
All reactions