{"adoption": {"forks": 1562, "observed_at": "2026-08-28T04:11:08.980410+00:00", "stars": 14949}, "canonical_url": "https://ross.abutalabs.com/products/public-image-mirror", "card": {"archived": false, "artifact_type": "service", "description": "很多镜像都在国外。比如 gcr 。国内下载很慢，需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。", "domain": ["cloud-computing", "infrastructure-as-code"], "enriched": true, "function": ["caching", "proxy", "cloud", "self-hosted"], "health_score": 80, "homepage": null, "language": "Shell", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["DaoCloud/public-image-mirror"], "name": "DaoCloud/public-image-mirror", "platform": ["self-hosted", "cloud"], "pushed_at": "2026-08-26T03:46:10+00:00", "repo": "DaoCloud/public-image-mirror", "stars": 14949, "tags": ["container-registry-mirror", "image-pull-acceleration", "china-network", "registry-proxy", "docker-mirror", "containers", "devops", "linux", "docker", "kubernetes"], "topics": ["mirror", "speedup"], "urls": [], "use_cases": ["pull gcr.io images fast from China", "speed up docker image downloads behind slow international networks", "mirror container images for kubeadm cluster setup", "cache registry images for an intranet", "accelerate quay.io and ghcr.io pulls", "set up registry-mirrors for docker daemon"], "what_it_is": "A public container image mirror service by DaoCloud that accelerates pulling images from foreign registries like gcr.io, ghcr.io, quay.io, and docker.io, primarily for users in China. It works by adding a prefix (e.g., m.daocloud.io) to image names, with lazy-loading sync so hashes match the source registry.", "when_to_avoid": ["you need guaranteed SLAs or unlimited throughput (the public service has whitelists and rate limits)", "you need a private registry with push support - this is a pull-through mirror only", "you can access source registries directly at full speed", "you need images cached longer than 30 days without re-sync"], "when_to_choose": ["you are in China or on a slow route to major registries and need faster image pulls", "you want a zero-code, prefix-based mirror for docker.io, gcr.io, ghcr.io, quay.io, registry.k8s.io, mcr.microsoft.com, nvcr.io, or docker.elastic.co", "you need a kubeadm imageRepository replacement or an internal pull cache"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/public-image-mirror", "repo": "DaoCloud/public-image-mirror", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.980410+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:06:50.713828+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e2521977aeff7077d1b0b23dd7843bfc4733660e06ca1c8ec8716e3c3cde20b", "fetched_at": "2026-08-28T04:11:08.980410+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DaoCloud/public-image-mirror"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.980410+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:06:50.713828+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e2521977aeff7077d1b0b23dd7843bfc4733660e06ca1c8ec8716e3c3cde20b", "fetched_at": "2026-08-28T04:11:08.980410+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DaoCloud/public-image-mirror"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:06:50.713828+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e2521977aeff7077d1b0b23dd7843bfc4733660e06ca1c8ec8716e3c3cde20b", "fetched_at": "2026-08-28T04:11:08.980410+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DaoCloud/public-image-mirror"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.980410+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.980410+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.980410+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:06:50.713828+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e2521977aeff7077d1b0b23dd7843bfc4733660e06ca1c8ec8716e3c3cde20b", "fetched_at": "2026-08-28T04:11:08.980410+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DaoCloud/public-image-mirror"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.980410+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.980410+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:06:50.713828+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e2521977aeff7077d1b0b23dd7843bfc4733660e06ca1c8ec8716e3c3cde20b", "fetched_at": "2026-08-28T04:11:08.980410+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DaoCloud/public-image-mirror"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.980410+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.980410+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.980410+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:06:50.713828+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e2521977aeff7077d1b0b23dd7843bfc4733660e06ca1c8ec8716e3c3cde20b", "fetched_at": "2026-08-28T04:11:08.980410+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DaoCloud/public-image-mirror"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.980410+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.980410+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:06:50.713828+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e2521977aeff7077d1b0b23dd7843bfc4733660e06ca1c8ec8716e3c3cde20b", "fetched_at": "2026-08-28T04:11:08.980410+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DaoCloud/public-image-mirror"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:06:50.713828+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e2521977aeff7077d1b0b23dd7843bfc4733660e06ca1c8ec8716e3c3cde20b", "fetched_at": "2026-08-28T04:11:08.980410+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DaoCloud/public-image-mirror"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:06:50.713828+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e2521977aeff7077d1b0b23dd7843bfc4733660e06ca1c8ec8716e3c3cde20b", "fetched_at": "2026-08-28T04:11:08.980410+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DaoCloud/public-image-mirror"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:06:50.713828+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e2521977aeff7077d1b0b23dd7843bfc4733660e06ca1c8ec8716e3c3cde20b", "fetched_at": "2026-08-28T04:11:08.980410+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DaoCloud/public-image-mirror"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1819, "days_push": 7, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}