Changes:
-
In order to support Hauler hauls seeding RKE2 in an air-gapped installation, we needed to adjust an annotation in the image.json created by our cosign fork.
-
the annotation for default registry needs to be
docker.io
instead ofindex.docker.io
despite them being the same thing.
Verification/Testing of Changes:
Doesn't work:
{
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.index.v1+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 526,
"digest": "sha256:c2280d2f5f56cf9c9a01bb64b2db4651e35efd6d62a54dcfc12049fe6449c5e4",
"annotations": {
"io.containerd.image.name": "index.docker.io/rancher/mirrored-pause:3.6",
"kind": "dev.cosignproject.cosign/image",
"org.opencontainers.image.ref.name": "rancher/mirrored-pause:3.6"
}
}
]
}
Works:
{
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.index.v1+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 526,
"digest": "sha256:c2280d2f5f56cf9c9a01bb64b2db4651e35efd6d62a54dcfc12049fe6449c5e4",
"annotations": {
"io.containerd.image.name": "docker.io/rancher/mirrored-pause:3.6",
"kind": "dev.cosignproject.cosign/image",
"org.opencontainers.image.ref.name": "rancher/mirrored-pause:3.6"
}
}
]
}
Additional Context:
-
Libraries like
github.com/google/go-containerregistry
default toindex.docker.io
when parsing an image reference. This behavior originates from historical conventions tied to Docker Hub's full domain name (index.docker.io
), which was explicitly used in the early days of Docker. -
Why
index.docker.io
ingo-containerregistry
?- Historical Naming:
Docker Hub was initially identified asindex.docker.io
, and this full domain persisted in older tooling and libraries.
Whiledocker.io
became the shorthand,index.docker.io
remained the "canonical" name in certain libraries and APIs. - Standardized Parsing:
Thego-containerregistry
library adheres to a stricter parsing approach, considering the full domain name (index.docker.io
) rather than relying on the default aliasdocker.io
.
This avoids ambiguities when working with other registries or configurations that might not aliasdocker.io
correctly. - Compatibility with OCI Image Spec:
The library prioritizes adherence to the OCI image spec, where fully qualified references are preferred.
Usingindex.docker.io
ensures an explicit, unambiguous reference to the Docker Hub.
- Historical Naming:
-
Impact on
containerd
and Similar Tools:- When using
go-containerregistry
or similar libraries, the explicit reference toindex.docker.io
might cause issues with tools likecontainerd
that do not treatindex.docker.io
as a default alias fordocker.io
.
- When using
Full Changelog: v2.4.1+carbide.1...v2.4.1+carbide.2