Releases: ligfx/k3d-registry-dockerd
Releases · ligfx/k3d-registry-dockerd
v0.10
- Recognizes all unauthorized errors that contain the phrase
no basic auth credentials, in addition to existing known error messages. Merge of PR#22 Recognize the Unauthorized error message for vanilla registry, and actually solves #21 Support authenticated container registry. Thanks @frazar!
v0.9
- Doesn't keep partial corrupted files when encountering errors writing manifests or blobs.
copyToFilenow first writes to a temporary file in the same directory as the destination, and then renames it to the actual destination filename only if the writes succeeds entirely. Solves #20 Inconsistent cache state on http error. - Doesn't ignore
io.ErrUnexpectedEOFerrors incopyToFile. - Supports pulling private images via secrets passed in from Kubernetes. Attemping to pull a non-existent image will now return a 401 instead of a 404 unless authorization credentials have been supplied. Authorization credentials are passed directly through to the Docker client. Solves #21 Support authenticated container registry.
v0.8
- Reads
REGISTRY_HTTP_ADDRfrom the environment like the official registry image. This fixes an issue on k3d 5.8.2 where custom image registries that don't supportREGISTRY_HTTP_ADDRno longer work. k3d 5.8.3 reverted this behavior, but once it comes back this may also solve #10 k3d-registry-dockerd doesn't respect port number passed in with "k3d registry create". - Changes the
-portCLI option to-addr, to better match the environment variable. - Bugfix: don't return 404 the first time exporting an image specified in
domain/name@sha256:digestformat. Support for these image references was added in version 0.6 and this bug was introduced in version 0.7. - Bugfix: don't download multiple versions of the same image in parallel. This could have caused issues with shared blobs overwriting each other. Different images altogether are still downloaded in parallel, as introduced in version 0.5.
- Supports uploading blobs and manifests, for use with tools like Tilt. Fixes #12 Attempts to push into the registry returns HTTP 404.
- Support images referenced without a namespace, like
alpine:latestorbusybox:latest. These are passed to the OCI Registry API aslibrary/name:tagOrDigest, but need to be passed to Docker without thelibrary/prefix. Fixes #17 Support images specified without namespace. - Logs an error and returns 404 when exporting an image referenced directly by digest and the resulting export does not contain the referenced blob. This is known to happen when not using Docker's containerd image store. See #14
docker savereturns incorrect digests for digest-referenced images when not using containerd storage. - Runs BuildKit to try to fix images that are exported with missing layer blobs. If the export is still missing blobs, logs an error and returns 404. This is known to happen when using Docker's containerd image store and pulling images that share layers. See #13
docker savesometimes returns images missing blobs and moby/moby#49473docker savewith containerd snapshotter returns OCI images missing all blob layers when image shares layers with another image
v0.7
- Returns manifest matching digest instead of
index.jsonwhen images are specified indomain/name@sha256:digestformat. This would result in a container with a different reported imageID than the one specified. - Returns manifest list instead of
index.jsonwhen images are specified indomain/name:versionformat. This would result in a container with a different reported imageID than what was visible in Docker. - Parses actual manifest mediaType from JSON and return it in the
Content-Typeheader, rather than guessing.
v0.6
v0.5
- Downloads multiple images in parallel, which improves cluster startup time. Uses golang.org/x/sync's singleflight package to coalesce multiple requests for the same image and ensure that downloads don't interfere with one another.
- Logs errors when handling HTTP requests, rather than just sending them to the client. This makes it far easier to debug when things go wrong.
- Correctly return errors when copying files to local cache
- Improves error messages when trying to communicate with the Docker daemon by including JSON content that failed to unmarshal in the error message
- Lower required Docker engine API version to v1.44 from v1.45. This seems to correspond with the earliest engine version that supported fully-OCI-compliant image export.
- Bugfix: close HTTP request bodies correctly
v0.4 - Now written in Go
- Rewrote the whole thing in Go. It seems much faster! And this opens up possibilities of handling requests in parallel, as well (currently limited to one request at time, since otherwise you get a thundering herd of calls to the Docker API). Maybe one day this could get integrated into k3d itself
- Allow image names that don't have a slash in them. Useful if you're using any raw base images for your pods, e.g.
golang:1.22.3-alpine3.20oralpine:3.20.0.