LinkOS Mirrors
LinkOS Mirrors is a free mirror of public container registries. Each upstream registry has its own address; replace the registry in an image address and pull as usual. No account is needed.
Addresses
| Mirror | Upstream | Example |
|---|---|---|
docker.linkos.org | Docker Hub (docker.io) | docker.linkos.org/library/nginx:latest |
gcr.linkos.org | gcr.io | gcr.linkos.org/distroless/static:nonroot |
ghcr.linkos.org | ghcr.io | ghcr.linkos.org/containerd/busybox:1.36 |
k8s.linkos.org | registry.k8s.io | k8s.linkos.org/pause:3.10 |
quay.linkos.org | quay.io | quay.linkos.org/coreos/etcd:v3.5.0 |
Official Docker Hub images such as nginx or mysql are written as library/<name>; the short form docker.linkos.org/nginx works too. k8s.gcr.io was frozen in 2023; Kubernetes images come from registry.k8s.io, which is k8s.linkos.org.
Quick start
Pull through the mirror, then give the image its usual name:
docker pull docker.linkos.org/library/nginx:latest
docker tag docker.linkos.org/library/nginx:latest nginx:latest
docker rmi docker.linkos.org/library/nginx:latestTo send every Docker Hub pull through the mirror, add it to /etc/docker/daemon.json (merge it with what is already there), then restart Docker:
{
"registry-mirrors": ["https://docker.linkos.org"]
}Docker's registry-mirrors setting only applies to Docker Hub. Images from the other registries still need the mirror address.
containerd, Kubernetes and Podman
Open any mirror address in a browser, such as docker.linkos.org, for an address converter and ready-to-copy settings for containerd (hosts.toml), k3s (registries.yaml), Podman and CRI-O (registries.conf), kind and kubeadm.
How it works
- Pull only. The mirrors answer pulls and nothing else: no pushes, no
docker search, and no catalog of the cached repositories. - Cached. The first pull of an image fetches it from the upstream registry and keeps it; later pulls of the same image come from the cache. Images that nobody has pulled for 7 days are removed.
- Tags follow the upstream. A tag is checked against the upstream registry at most every 5 minutes, so a moved tag such as
latestcan take a few minutes to show up. Pull by digest (@sha256:…) when you need an exact image. - Upstream limits apply. Docker Hub limits anonymous pulls per address, and the mirrors share one address, so an image that is not cached yet can fail with
429when many people pull new images at once. Try again later. - Errors. An image that does not exist upstream, or is private, gives
503rather than404: check the name. Retry other5xxerrors.
Run your own
The configuration behind LinkOS Mirrors is open source. Run your own copy if you need guarantees or higher limits:
- openlinkos/registry-mirrors: the configuration of this service, with a local cache (Caddy and zot).
- openlinkos/registry-mirrors-caddy: a single Caddy with no cache, for small disks or when a CDN is already in front.
Status and support
- Live status: uptime.linkos.org.
- Questions and problems: GitHub issues.
- Misuse and infringing content: Report abuse.
The service is provided under the terms of use and records what the privacy notice describes.