public-image-mirror Documentation

很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。

15,245 stars Shell Shell 2 files · ~15,763 tokens #mirror#speedup
RAW Doc

File: README.md

[Binary file]


File: allows.txt

code.forgejo.org/forgejo/forgejo
code.forgejo.org/forgejo/runner
codeberg.org/forgejo/forgejo
container-registry.oracle.com/**
cr.agentgateway.dev/**
cr.kgateway.dev/kgateway-dev/*
cr.l5d.io/**
cr.weaviate.io/**
dhi.io/**
docker.com/kyantech/*
docker.elastic.co/**
docker.getcollate.io/openmetadata/*
docker.io/*
docker.io/0nlylty/dockercopilot
docker.io/1activegeek/airconnect
docker.io/1dev/*
docker.io/1panel/maxkb
docker.io/4pdosc/k8s-vdevice
docker.io/569107519/alertsnitch-mysql
docker.io/6053537/portainer-ce
docker.io/acim/go-reflex
docker.io/acore/*
docker.io/acryldata/*
docker.io/adguard/adguardhome
docker.io/adoptopenjdk/*
docker.io/adriansegura99/**
docker.io/advplyr/audiobookshelf
docker.io/agentaai/*
docker.io/ai/*
docker.io/aibrix/*
docker.io/alexxit/go2rtc
docker.io/alexzhc/*
docker.io/allanpk716/chinesesubfinder
docker.io/allfunc/speedtest
docker.io/almalinux/*
docker.io/alpine/*
docker.io/alpinelinux/**
docker.io/alseambusher/crontab-ui
docker.io/altinity/*
docker.io/amambadev/*
docker.io/amazon/*
docker.io/amd64/*
docker.io/amdih/zendnn_zentorch
docker.io/amir20/*
docker.io/amtoaer/bili-sync-rs
docker.io/andrejorsula/space_robotics_bench
docker.io/andywuwu/coze2openai
docker.io/ankane/pgvector
docker.io/apache/*
docker.io/apachepulsar/*
docker.io/apacherocketmq/*
docker.io/apecloud/*
docker.io/apereo/cas
docker.io/apicurio/*
docker.io/apipark/apipark
docker.io/apitable/*
docker.io/apolloconfig/*
docker.io/appbaseio/dejavu
docker.io/approachingai/*
docker.io/appsmith/appsmith-ce
docker.io/appsmith/appsmith-ee
docker.io/aquasec/*
docker.io/arexadmin01/*
docker.io/arey/*
docker.io/argoproj/*
docker.io/arigaio/*
docker.io/arizephoenix/phoenix
docker.io/arm64v8/*
docker.io/artalk/artalk-go
docker.io/ascendai/*
docker.io/ascentstream/*
docker.io/asterinas/*
docker.io/astral/uv
docker.io/atlassian/*
docker.io/authelia/authelia
docker.io/automatischio/automatisch
docker.io/autumn27/scopesentry-scan
docker.io/axllent/mailpit
docker.io/b3log/siyuan
docker.io/babashka/babashka
docker.io/basecamp/*
docker.io/bats/*
docker.io/bellsoft/*
docker.io/benzino77/clamav-rest-api
docker.io/bililive/recorder
docker.io/binhex/arch-jellyfin
docker.io/binwiederhier/ntfy
docker.io/bitnami/*
docker.io/bitnamicharts/*
docker.io/bitnamilegacy/*
docker.io/bluenviron/mediamtx
docker.io/boky/postfix
docker.io/boredazfcuk/icloudpd
docker.io/browserless/*
docker.io/browsh/browsh
docker.io/budibase/budibase
docker.io/budtmo/docker-android
docker.io/burakince/mlflow
docker.io/buutuu/scrcpy-over-webrtc
docker.io/bvlc/caffe
docker.io/bytebase/bytebase
docker.io/bytelang/kplayer
docker.io/caarlos0/domain_exporter
docker.io/calciumion/new-api
docker.io/calico/*
docker.io/camunda/zeebe
docker.io/canal/canal-server
docker.io/caronc/apprise
docker.io/cars10/elasticvue
docker.io/casbin/casdoor
docker.io/casdoor/*
docker.io/certbot/*
docker.io/chaosbladeio/chaosblade-box
docker.io/chaoszhu/easynode
docker.io/charlie0129/bupt-net-login
docker.io/chat2db/chat2db
docker.io/chatimage/chatchat
docker.io/chatwoot/chatwoot
docker.io/chengshiwen/influx-proxy
docker.io/chengshiwen/influxdb
docker.io/chenhw2/aliyun-ddns-cli
docker.io/chigusa/bililive-go
docker.io/chirpstack/*
docker.io/chishin/nginx-proxy-manager-zh
docker.io/chrishirsch/kuberhealthy-storage-check
docker.io/chrislusf/seaweedfs
docker.io/chrislusf/seaweedfs-csi-driver
docker.io/chrislusf/seaweedfs-mount
docker.io/chrislusf/seaweedfs-operator
docker.io/chromadb/chroma
docker.io/chromedp/headless-shell
docker.io/chrstnhntschl/gpu_burn
docker.io/cimg/go
docker.io/clamav/*
docker.io/claraverse/clara-ollama
docker.io/clickhouse/*
docker.io/clidey/whodb
docker.io/cloudflare/*
docker.io/cloudnas/clouddrive2-unstable
docker.io/cloudnativelabs/kube-router
docker.io/cloudreve/cloudreve
docker.io/codercom/code-server
docker.io/codewisdom/*
docker.io/codiumai/pr-agent
docker.io/collabora/code
docker.io/condaforge/miniforge3
docker.io/conductoross/*
docker.io/conduktor/*
docker.io/confluentinc/*
docker.io/containrrr/watchtower
docker.io/continuumio/miniconda3
docker.io/coredns/*
docker.io/coturn/coturn
docker.io/cozedev/*
docker.io/cp0204/quark-auto-save
docker.io/cp2k/cp2k
docker.io/crossplane/*
docker.io/crowdsecurity/crowdsec
docker.io/csiplugin/*
docker.io/cturra/ntp
docker.io/curlimages/*
docker.io/cvat/server
docker.io/cvat/ui
docker.io/cym1102/nginxwebui
docker.io/czerwonk/ping_exporter
docker.io/dadoum/anisette-v3-server
docker.io/dani-garcia/vaultwarden
docker.io/danielqsj/kafka-exporter
docker.io/daprio/*
docker.io/darthsim/imgproxy
docker.io/dataease/sqlbot
docker.io/dataiku/dss
docker.io/datastax/*
docker.io/daytonaio/sandbox
docker.io/dbeaver/cloudbeaver
docker.io/debezium/*
docker.io/deepflowce/*
docker.io/deluan/navidrome
docker.io/democraticcsi/csi-grpc-proxy
docker.io/democraticcsi/democratic-csi
docker.io/denoland/deno
docker.io/derailed/k9s
docker.io/determinedai/*
docker.io/devicefarmer/stf
docker.io/dezhao/lanraragi_cn
docker.io/difegue/lanraragi
docker.io/digitalocean/ceph_exporter
docker.io/directus/*
docker.io/discourse/*
docker.io/diygod/*
docker.io/docker/*
docker.io/dockurr/*
docker.io/dokploy/*
docker.io/doocs/*
docker.io/dorowu/ubuntu-desktop-lxde-vnc
docker.io/dpage/*
docker.io/dpanel/base-image
docker.io/dpanel/dpanel
docker.io/dperson/openvpn-client
docker.io/dragonflydb/dragonfly
docker.io/dragonflyoss/client
docker.io/dragonflyoss/dfdaemon
docker.io/dragonflyoss/dfinit
docker.io/dragonflyoss/manager
docker.io/dragonflyoss/scheduler
docker.io/dragonflyoss/trainer
docker.io/drakkan/sftpgo
docker.io/dreamacro/clash
docker.io/dremio/dremio-oss
docker.io/drone/drone
docker.io/drone/drone-runner-docker
docker.io/drumsergio/genieacs
docker.io/duckdb/duckdb
docker.io/dushixiang/kafka-map
docker.io/dustynv/*
docker.io/dxflrs/*
docker.io/e2bdev/code-interpreter
docker.io/easytier/easytier
docker.io/eceasy/cli-proxy-api
docker.io/elastic/*
docker.io/electronuserland/builder
docker.io/elestio/neko
docker.io/eloqdata/*
docker.io/elsaworkflows/*
docker.io/emberstack/kubernetes-reflector
docker.io/emby/*
docker.io/emqx/*
docker.io/enable/nessus
docker.io/enmotech/opengauss
docker.io/ensemblorg/ensembl-vep
docker.io/envoyproxy/*
docker.io/eolinker/apinto-gateway
docker.io/eosphorosai/*
docker.io/esphome/*
docker.io/estrellaxd/auto_bangumi
docker.io/eucm/limesurvey
docker.io/eugr/*
docker.io/exadel/compreface-core
docker.io/exceptionless/*
docker.io/eyeblue/tank
docker.io/f5networks/*
docker.io/falcosecurity/*
docker.io/falkordb/falkordb
docker.io/fatedier/frps
docker.io/feiyu563/prometheus-alert
docker.io/feiyuyu/filecodebox
docker.io/ffdfgdfg/npc
docker.io/ffdfgdfg/nps
docker.io/fffaraz/fakessh
docker.io/filebrowser/filebrowser
docker.io/finab/bark-server
docker.io/firecow/gitlab-ci-local-util
docker.io/fireflyiii/*
docker.io/flannel/*
docker.io/flannelcni/*
docker.io/flashcatcloud/*
docker.io/flexget/flexget
docker.io/floryn90/hugo
docker.io/flowiseai/flowise
docker.io/fluent/*
docker.io/flyway/flyway
docker.io/forceless/pptagent
docker.io/fortio/*
docker.io/fosrl/*
docker.io/foxdalas/*
docker.io/frappe/*
docker.io/freeradius/freeradius-server
docker.io/freesurfer/synthmorph
docker.io/frooodle/s-pdf
docker.io/frrouting/*
docker.io/funcman/115pc
docker.io/gaecfovdocker/pulsar-console
docker.io/gchq/hdfs
docker.io/gentoo/stage3
docker.io/geoservercloud/*
docker.io/germannewsmaker/myspeed
docker.io/gerritcodereview/gerrit
docker.io/getmeili/*
docker.io/getsentry/*
docker.io/getwud/wud
docker.io/gitea/*
docker.io/gitlab/*
docker.io/gitpod/openvscode-server
docker.io/gliderlabs/logspout
docker.io/goacme/lego
docker.io/gocd/*
docker.io/gogs/gogs
docker.io/goharbor/*
docker.io/golangci/golangci-lint
docker.io/google/*
docker.io/goproxy/goproxy
docker.io/goreleaser/goreleaser
docker.io/gospatial/tegola
docker.io/gotenberg/gotenberg
docker.io/gotify/*
docker.io/gotson/komga
docker.io/gpustack/gpustack
docker.io/gpustack/runner
docker.io/grafana/*
docker.io/graphiteapp/graphite-statsd
docker.io/gravitl/netmaker
docker.io/graylog/graylog
docker.io/graylog/graylog-datanode
docker.io/greatsql/*
docker.io/greenbone/*
docker.io/greper/certd
docker.io/greptime/*
docker.io/groonga/pgroonga
docker.io/guacamole/*
docker.io/guiji2025/*
docker.io/gztime/gzctf
docker.io/hacdias/webdav
docker.io/hagb/docker-easyconnect
docker.io/hakuyyf/tensorrtx
docker.io/halohub/halo
docker.io/hanxi/xiaomusic
docker.io/haproxytech/*
docker.io/harness/*
docker.io/haroldli/alist-tvbox
docker.io/haroldli/xiaoya-tvbox
docker.io/hashicorp/*
docker.io/headscale/headscale
docker.io/heartexlabs/label-studio
docker.io/heartexlabs/label-studio-ml-backend
docker.io/hectorqin/reader
docker.io/hengyunabc/arthas
docker.io/henrygd/beszel
docker.io/henrygd/beszel-agent
docker.io/heroiclabs/nakama-pluginbuilder
docker.io/hewenyulucky/*
docker.io/hivemq/*
docker.io/hiyouga/llamafactory
docker.io/hiyouga/pytorch
docker.io/hiyouga/verl
docker.io/hkalexling/mango
docker.io/homeassistant/*
docker.io/hoppscotch/hoppscotch
docker.io/hpcaitech/colossalai
docker.io/hpcaitech/pytorch-cuda
docker.io/hslr/sun-panel
docker.io/huadream/*
docker.io/huggingface/*
docker.io/hugomods/hugo
docker.io/hummingbot/hummingbot
docker.io/hybridnetdev/hybridnet
docker.io/hyperf/hyperf
docker.io/hyperledger/*
docker.io/hystax/error_pages_base
docker.io/ianw/quickchart
docker.io/ibmcom/*
docker.io/idootop/mi-gpt
docker.io/ihmily/douyin-live-recorder
docker.io/ihmily/streamcap
docker.io/imaegoo/twikoo
docker.io/infiniflow/*
docker.io/influxdata/influxdb3-ui
docker.io/infmonkeys/*
docker.io/innei/mx-server
docker.io/instrumentisto/coturn
docker.io/intel/*
docker.io/intelanalytics/*
docker.io/islandora/code-server
docker.io/istio/*
docker.io/itzg/minecraft-server
docker.io/ixsystems/container-utils
docker.io/ixsystems/postgres-upgrade
docker.io/ixsystems/rsyncd
docker.io/iyuucn/iyuuplus
docker.io/iyuucn/iyuuplus-dev
docker.io/jaegertracing/*
docker.io/jasonrivers/nagios
docker.io/jboss/*
docker.io/jc21/nginx-proxy-manager
docker.io/jeessy/ddns-go
docker.io/jellyfin/*
docker.io/jenkins/*
docker.io/jenkinsci/*
docker.io/jericx/syncclipboard-server
docker.io/jetbrains/*
docker.io/jettech/*
docker.io/jgraph/drawio
docker.io/jimmidyson/*
docker.io/jitesoft/lighttpd
docker.io/jitsi/*
docker.io/jlesage/firefox
docker.io/jlesage/handbrake
docker.io/jmal/jmalcloud
docker.io/john119/vlm
docker.io/johngong/calibre-web
docker.io/joinsunsoft/docker.ui
docker.io/joplin/server
docker.io/joseluisq/static-web-server
docker.io/joxit/docker-registry-ui
docker.io/juicedata/*
docker.io/jumpserver/*
docker.io/jupyter/*
docker.io/jupyterhub/*
docker.io/justarchi/archisteamfarm
docker.io/justlikemaki/openclaw-docker-cn-im
docker.io/justsong/one-api
docker.io/jvmilazz0/kavita
docker.io/jxxghp/*
docker.io/k8scloudprovider/*
docker.io/kafbat/kafka-ui
docker.io/kalilinux/*
docker.io/kanidm/*
docker.io/karmada/*
docker.io/kasmweb/*
docker.io/keelhq/keel
docker.io/keking/kkfileview
docker.io/kennethreitz/*
docker.io/kestra/kestra
docker.io/keycloak/keycloak
docker.io/keygraph/shannon
docker.io/kicbase/*
docker.io/kindest/*
docker.io/kiwigrid/*
docker.io/klakegg/hugo
docker.io/klausmeyer/docker-registry-browser
docker.io/koalaman/shellcheck
docker.io/koenkk/zigbee2mqtt
docker.io/koide3/direct_visual_lidar_calibration
docker.io/koishijs/koishi
docker.io/kong/*
docker.io/kserve/*
docker.io/kspacekelvin/fire-python
docker.io/kubeedge/*
docker.io/kubeflow/*
docker.io/kubeflowkatib/*
docker.io/kubeflownotebookswg/*
docker.io/kubeovn/kube-ovn
docker.io/kuberhealthy/*
docker.io/kubernetesui/*
docker.io/kubeshark/*
docker.io/kubeskoop/*
docker.io/kubesphere/*
docker.io/kubespheredev/ksv-installer
docker.io/kubevirtbmc/*
docker.io/kusionstack/*
docker.io/kylemanna/openvpn
docker.io/labring/*
docker.io/lachlanevenson/*
docker.io/langchain/langgraph-api
docker.io/langflowai/langflow
docker.io/langflowai/langflow-frontend
docker.io/langfuse/*
docker.io/langgenius/*
docker.io/langhuihui/monibuca
docker.io/laradock/*
docker.io/lazymio/vllm-backport
docker.io/lblankl/swe-minisandbox
docker.io/letta/letta
docker.io/lfedge/ekuiper
docker.io/lfnovo/open_notebook
docker.io/liangjw/kube-webhook-certgen
docker.io/library/adminer
docker.io/library/aerospike
docker.io/library/almalinux
docker.io/library/alpine
docker.io/library/alt
docker.io/library/amazoncorretto
docker.io/library/amazonlinux
docker.io/library/api-firewall
docker.io/library/arangodb
docker.io/library/archlinux
docker.io/library/backdrop
docker.io/library/bash
docker.io/library/bonita
docker.io/library/buildpack-deps
docker.io/library/busybox
docker.io/library/caddy
docker.io/library/cassandra
docker.io/library/centos
docker.io/library/chronograf
docker.io/library/cirros
docker.io/library/clearlinux
docker.io/library/clefos
docker.io/library/clickhouse
docker.io/library/clojure
docker.io/library/composer
docker.io/library/consul
docker.io/library/convertigo
docker.io/library/couchbase
docker.io/library/couchdb
docker.io/library/crate
docker.io/library/dart
docker.io/library/debian
docker.io/library/docker
docker.io/library/drupal
docker.io/library/eclipse-mosquitto
docker.io/library/eclipse-temurin
docker.io/library/eggdrop
docker.io/library/elasticsearch
docker.io/library/elixir
docker.io/library/emqx
docker.io/library/erlang
docker.io/library/express-gateway
docker.io/library/fedora
docker.io/library/flink
docker.io/library/fluentd
docker.io/library/friendica
docker.io/library/gazebo
docker.io/library/gcc
docker.io/library/geonetwork
docker.io/library/ghost
docker.io/library/golang
docker.io/library/gradle
docker.io/library/groovy
docker.io/library/haproxy
docker.io/library/haskell
docker.io/library/haxe
docker.io/library/hello-world
docker.io/library/hitch
docker.io/library/httpd
docker.io/library/hylang
docker.io/library/ibm-semeru-runtimes
docker.io/library/ibmjava
docker.io/library/influxdb
docker.io/library/irssi
docker.io/library/java
docker.io/library/jetty
docker.io/library/jobber
docker.io/library/joomla
docker.io/library/jruby
docker.io/library/julia
docker.io/library/kapacitor
docker.io/library/kibana
docker.io/library/kong
docker.io/library/lightstreamer
docker.io/library/liquibase
docker.io/library/logstash
docker.io/library/mageia
docker.io/library/mariadb
docker.io/library/matomo
docker.io/library/maven
docker.io/library/mediawiki
docker.io/library/memcached
docker.io/library/mongo
docker.io/library/mongo-express
docker.io/library/monica
docker.io/library/mono
docker.io/library/mysql
docker.io/library/nats
docker.io/library/nats-streaming
docker.io/library/neo4j
docker.io/library/neurodebian
docker.io/library/nextcloud
docker.io/library/nginx
docker.io/library/node
docker.io/library/notary
docker.io/library/odoo
docker.io/library/open-liberty
docker.io/library/openjdk
docker.io/library/oraclelinux
docker.io/library/orientdb
docker.io/library/owncloud
docker.io/library/percona
docker.io/library/perl
docker.io/library/photon
docker.io/library/php
docker.io/library/php-zendserver
docker.io/library/phpmyadmin
docker.io/library/plone
docker.io/library/postfixadmin
docker.io/library/postgres
docker.io/library/pypy
docker.io/library/python
docker.io/library/r-base
docker.io/library/rabbitmq
docker.io/library/rakudo-star
docker.io/library/redis
docker.io/library/redmine
docker.io/library/registry
docker.io/library/rethinkdb
docker.io/library/rocket.chat
docker.io/library/rockylinux
docker.io/library/ros
docker.io/library/ruby
docker.io/library/rust
docker.io/library/sapmachine
docker.io/library/satosa
docker.io/library/sentry
docker.io/library/silverpeas
docker.io/library/sl
docker.io/library/solr
docker.io/library/sonarqube
docker.io/library/spark
docker.io/library/spiped
docker.io/library/storm
docker.io/library/swift
docker.io/library/swipl
docker.io/library/teamspeak
docker.io/library/telegraf
docker.io/library/tomcat
docker.io/library/tomee
docker.io/library/traefik
docker.io/library/ubuntu
docker.io/library/unit
docker.io/library/varnish
docker.io/library/vault
docker.io/library/websphere-liberty
docker.io/library/wordpress
docker.io/library/xwiki
docker.io/library/yourls
docker.io/library/znc
docker.io/library/zookeeper
docker.io/libredb/libredb-studio
docker.io/libretranslate/libretranslate
docker.io/lightseekorg/smg
docker.io/lihualiu/sam-6d
docker.io/lincolnpark2000/mediasync
docker.io/lindesvard/*
docker.io/linkease/ddnsto
docker.io/linkease/desktop-ubuntu-standard-amd64
docker.io/linkease/desktop-ubuntu-standard-arm64
docker.io/linkease/desktop-ubuntu2-standard-amd64
docker.io/linkease/desktop-ubuntu2-standard-arm64
docker.io/linkease/drawio-image-export
docker.io/linkease/drawio-plantuml-server
docker.io/linkease/istoreduprk35xx
docker.io/linkease/istoredupx86_64
docker.io/linkease/istorepanel
docker.io/linkease/kspeeder
docker.io/linkease/linkease
docker.io/linkease/open-webui
docker.io/linkease/pve
docker.io/linkease/runmynas
docker.io/linkease/webvirtcloud
docker.io/linuxserver/*
docker.io/linuxsuren/api-testing
docker.io/linuxsuren/atest-ext-store-orm
docker.io/livekit/*
docker.io/liwei2633/gopeed
docker.io/lizheming/waline
docker.io/lkw199711/smanga
docker.io/lldap/lldap
docker.io/lmcache/*
docker.io/lmsysorg/*
docker.io/lobehub/*
docker.io/localai/localai
docker.io/localstack/localstack
docker.io/loggieio/loggie
docker.io/logvar/danmu-api
docker.io/longhornio/*
docker.io/looplj/axonhub
docker.io/louislam/*
docker.io/luojiecong/index-tts
docker.io/m1k1o/*
docker.io/mageai/mageai
docker.io/maildev/maildev
docker.io/mailserver/*
docker.io/manjarolinux/*
docker.io/manticoresearch/manticore
docker.io/maptiler/*
docker.io/mariadb/maxscale
docker.io/martialblog/limesurvey
docker.io/mattermost/focalboard
docker.io/mattermost/mattermost-team-edition
docker.io/mauricenino/dashdot
docker.io/maximhq/bifrost
docker.io/maxkeytop/*
docker.io/mayswind/ezbookkeeping
docker.io/mcp/*
docker.io/meetwq/meme-generator-rs
docker.io/menci/archlinuxarm
docker.io/mendhak/http-https-echo
docker.io/messense/cargo-zigbuild
docker.io/metabase/*
docker.io/metacontrollerio/metacontroller
docker.io/michaelf34/infinity
docker.io/mikefarah/yq
docker.io/milvusdb/*
docker.io/mindsdb/mindsdb
docker.io/mineru/sglang
docker.io/minio/*
docker.io/mintplexlabs/anythingllm
docker.io/mirantis/*
docker.io/mitmproxy/mitmproxy
docker.io/mlikiowa/napcat-docker
docker.io/mlocati/php-extension-installer
docker.io/mmcauliffe/montreal-forced-aligner
docker.io/moby/*
docker.io/mohsinonxrm/*
docker.io/mongodb/mongodb-community-server
docker.io/moonrailgun/tianji
docker.io/motricseven7/snowluma
docker.io/mpioperator/mpi-operator
docker.io/mplatform/manifest-tool
docker.io/mpromonet/webrtc-streamer
docker.io/mtphotos/mt-photos
docker.io/multiarch/*
docker.io/mwader/webdav
docker.io/myscale/myscaledb
docker.io/mysql/*
docker.io/n8nio/*
docker.io/nacos/*
docker.io/nastools/nas-tools
docker.io/natsio/*
docker.io/ncbi/pgap
docker.io/neilpang/acme.sh
docker.io/neosmemo/memos
docker.io/netbirdio/*
docker.io/netbox-community/netbox
docker.io/netboxcommunity/netbox
docker.io/netdata/netdata
docker.io/networkstatic/iperf3
docker.io/neuvector/*
docker.io/newfuture/ddns
docker.io/newsnowlabs/dockside
docker.io/nextcloud/all-in-one
docker.io/nginx/*
docker.io/nginxinc/*
docker.io/nicholas-fedor/watchtower
docker.io/nickfedor/watchtower
docker.io/nicolaka/netshoot
docker.io/nixos/nix
docker.io/nobodyiam/apollo-quick-start
docker.io/nocobase/nocobase
docker.io/nocodb/nocodb
docker.io/nodered/node-red
docker.io/nousresearch/hermes-agent
docker.io/nriver/trilium-cn
docker.io/nsqio/nsq
docker.io/nvidia/*
docker.io/nyanmisaka/jellyfin
docker.io/oamdev/*
docker.io/oblakstudio/redisinsight
docker.io/obsidiandynamics/kafdrop
docker.io/occlum/occlum
docker.io/oceanbase/*
docker.io/ogarcia/archlinux
docker.io/oguzpastirmaci/gpu-burn
docker.io/oliver006/*
docker.io/ollama/*
docker.io/onlyoffice/*
docker.io/openapitools/openapi-generator-cli
docker.io/openclaw/openclaw
docker.io/opencloudeu/opencloud-rolling
docker.io/opencoze/*
docker.io/openebs/*
docker.io/openeuler/*
docker.io/openfga/*
docker.io/opengeminidb/opengemini-server
docker.io/opengrok/docker
docker.io/openkruise/*
docker.io/openlistteam/openlist
docker.io/openmetadata/*
docker.io/openmined/syft-backend
docker.io/openmmlab/*
docker.io/openpolicyagent/gatekeeper
docker.io/openpolicyagent/opa
docker.io/openresty/openresty
docker.io/opensandbox/**
docker.io/opensearchproject/*
docker.io/opensecurity/mobile-security-framework-mobsf
docker.io/openstitching/stitch
docker.io/opensuse/*
docker.io/openvino/*
docker.io/openvpn/openvpn
docker.io/openvpn/openvpn-as
docker.io/openwhisk/*
docker.io/openzipkin/*
docker.io/osixia/*
docker.io/osrf/*
docker.io/ossrs/srs
docker.io/otel/*
docker.io/outlinesdev/outlines
docker.io/outlinewiki/outline
docker.io/oven/bun
docker.io/owncloud/server
docker.io/p3terx/aria2-pro
docker.io/p3terx/ariang
docker.io/paddlepaddle/paddle
docker.io/paketobuildpacks/*
docker.io/pandoc/*
docker.io/paradedb/*
docker.io/passbolt/passbolt
docker.io/penpotapp/*
docker.io/pepperlabs/peppermint
docker.io/percona/*
docker.io/pgautoupgrade/pgautoupgrade
docker.io/pgrouting/pgrouting
docker.io/pgsty/minio
docker.io/pgsty/silo
docker.io/pgvector/pgvector
docker.io/photoprism/photoprism
docker.io/phpmyadmin/*
docker.io/phpswoole/swoole
docker.io/pierky/bird
docker.io/pingcap/*
docker.io/plantuml/plantuml-server
docker.io/plexinc/pms-docker
docker.io/plugins/docker
docker.io/podwide/cosyvoice
docker.io/pointcloudlibrary/env
docker.io/polardbx/polardb-x
docker.io/polarismesh/*
docker.io/ponphil/litepan
docker.io/portainer/*
docker.io/postgis/postgis
docker.io/postgrest/postgrest
docker.io/pragkent/alidns-webhook
docker.io/privoce/vocechat-server
docker.io/prodrigestivill/postgres-backup-local
docker.io/projectcontour/contour-authserver
docker.io/projecthami/*
docker.io/prom/*
docker.io/prometheuscommunity/*
docker.io/provectuslabs/kafka-ui
docker.io/proxysql/proxysql
docker.io/pymumu/smartdns
docker.io/pytorch/*
docker.io/qdrant/*
docker.io/qdtoday/qd
docker.io/qemux/qemu-docker
docker.io/qingpan/rnacos
docker.io/qmcgaw/ddns-updater
docker.io/questdb/questdb
docker.io/quickwit/*
docker.io/qwenllm/*
docker.io/rabbitmqoperator/cluster-operator
docker.io/radondb/*
docker.io/ramonvc/freegpt-webui
docker.io/rancher/*
docker.io/rasonyang/*
docker.io/rayproject/*
docker.io/rclone/*
docker.io/reactivetechio/kubegres
docker.io/reallibrephotos/librephotos
docker.io/reallibrephotos/librephotos-frontend
docker.io/reallibrephotos/librephotos-proxy
docker.io/redash/*
docker.io/redhat/*
docker.io/redis/*
docker.io/redislabs/*
docker.io/rednotehilab/dots.ocr
docker.io/redpandadata/console
docker.io/redpandadata/kminion
docker.io/redroid/redroid
docker.io/reportportal/reportportal
docker.io/resmoio/kubernetes-event-exporter
docker.io/restatedev/restate
docker.io/ribbybibby/ssl-exporter
docker.io/riscv64/*
docker.io/rockchin/langbot
docker.io/rocker/rstudio
docker.io/rockylinux/rockylinux
docker.io/rocm/*
docker.io/rolebasedgroup/rbgs-controller
docker.io/romancin/tinymediamanager
docker.io/rommapp/romm
docker.io/rook/ceph
docker.io/rsyslog/*
docker.io/rucio/*
docker.io/runzhliu/deepseek-harness
docker.io/rustdesk/rustdesk-server
docker.io/rustdesk/rustdesk-server-pro
docker.io/rustdesk/rustdesk-server-s6
docker.io/rustfs/*
docker.io/rustlang/rust
docker.io/rzuo/pose
docker.io/sameersbn/**
docker.io/savatar101/omniparse
docker.io/schemahero/*
docker.io/schnell18/rocketmq-dashboard
docker.io/seafileltd/seafile-mc
docker.io/searxng/searxng
docker.io/seataio/*
docker.io/secondstate/echokit
docker.io/secoresearch/rsync
docker.io/selectdb/*
docker.io/selenium/*
docker.io/semgrep/*
docker.io/semitechnologies/*
docker.io/sengokucola/maibot
docker.io/senthilrch/*
docker.io/serengil/deepface
docker.io/serversideup/*
docker.io/setupphp/node
docker.io/shieldsio/shields
docker.io/shingarey/foundationpose_custom_cuda121
docker.io/sickcodes/docker-osx
docker.io/signoz/signoz
docker.io/signoz/signoz-otel-collector
docker.io/sigoden/dufs
docker.io/silkeh/clang
docker.io/simonrupf/chronyd
docker.io/sinamics/ztnet
docker.io/sissbruecker/linkding
docker.io/sj26/mailcatcher
docker.io/slimerl/slime
docker.io/slskd/slskd
docker.io/snipe/snipe-it
docker.io/snowdreamtech/frpc
docker.io/snowdreamtech/frps
docker.io/solace/solace-pubsub-standard
docker.io/solidnerd/bookstack
docker.io/sonarsource/sonar-scanner-cli
docker.io/sonatype/*
docker.io/sonicorg/sonic-client-web-base
docker.io/sonobuoy/*
docker.io/soulter/astrbot
docker.io/sourcegraph/*
docker.io/squidfunk/*
docker.io/stanfordvl/behavior
docker.io/starrocks/*
docker.io/steamcmd/*
docker.io/stilleshan/frpc
docker.io/stilleshan/frps
docker.io/stirlingtools/stirling-pdf
docker.io/stnsmith/fossflow
docker.io/streamnative/*
docker.io/styletang/rocketmq-console-ng
docker.io/subfuzion/netcat
docker.io/suisuijiang/fiora
docker.io/sulinggg/openwrt
docker.io/supabase/*
docker.io/superbench/superbench
docker.io/supermanito/arcadia
docker.io/superng6/aria2
docker.io/superng6/qbittorrentee
docker.io/supersonicbi/supersonic
docker.io/surrealdb/*
docker.io/svhd/logto
docker.io/swaggerapi/*
docker.io/syncthing/syncthing
docker.io/tabbyml/tabby
docker.io/tailscale/*
docker.io/taksss/php-epg
docker.io/talebook/talebook
docker.io/talkincode/toughradius
docker.io/tarscloud/framework
docker.io/tdengine/*
docker.io/techblog/broadlinkmanager
docker.io/technitium/dns-server
docker.io/temporalio/*
docker.io/tensorchord/pgvecto-rs
docker.io/tensorflow/*
docker.io/tensorfusion/*
docker.io/teslamate/*
docker.io/testcontainers/*
docker.io/texlive/texlive
docker.io/thanosio/*
docker.io/thingsboard/tb-node
docker.io/thingsboard/tb-postgres
docker.io/thomassong/gpu-admission
docker.io/tiangolo/*
docker.io/tianon/postgres-upgrade
docker.io/timberio/*
docker.io/timescale/timescaledb
docker.io/timonwong/prometheus-webhook-dingtalk
docker.io/timonwong/uwsgi-exporter
docker.io/timothyjmiller/cloudflare-ddns
docker.io/tinygo/tinygo
docker.io/tinymediamanager/tinymediamanager
docker.io/tnir/mysqlclient
docker.io/tomkellygenetics/universc
docker.io/tonistiigi/binfmt
docker.io/tonistiigi/xx
docker.io/traefik/whoami
docker.io/trafficserver/trafficserver
docker.io/treeverse/lakefs
docker.io/triliumnext/notes
docker.io/triliumnext/trilium
docker.io/trinodb/trino
docker.io/trustpilot/beat-exporter
docker.io/tryretool/backend
docker.io/tugraph/*
docker.io/tunathu/bandersnatch
docker.io/tusproject/tusd
docker.io/tutelgroup/*
docker.io/twinproduction/gatus
docker.io/ubuntu/*
docker.io/ultralytics/*
docker.io/umputun/docker-logger
docker.io/unclecode/crawl4ai
docker.io/unityci/editor
docker.io/unsloth/unsloth
docker.io/uozi/nginx-ui
docker.io/vaalacat/frp-panel
docker.io/valkey/valkey
docker.io/vaultwarden/server
docker.io/vdsm/virtual-dsm
docker.io/velero/*
docker.io/verdaccio/*
docker.io/verlai/*
docker.io/vernemq/*
docker.io/vesoft/*
docker.io/victoriametrics/*
docker.io/viktorstrate/*
docker.io/vllm/*
docker.io/volcanosh/*
docker.io/vulhub/kkfileview
docker.io/wallabag/wallabag
docker.io/wandb/*
docker.io/weaveworks/*
docker.io/webdevops/*
docker.io/wechatopenai/*
docker.io/wekanteam/wekan
docker.io/whyour/qinglong
docker.io/willfarrell/autoheal
docker.io/wiremock/wiremock
docker.io/wiznote/wizserver
docker.io/wjie520/vllm_kunlun
docker.io/woodpeckerci/*
docker.io/wurstmeister/kafka
docker.io/wurstmeister/zookeeper
docker.io/xhofe/alist
docker.io/xhongc/music_tag_web
docker.io/xiaojusurvey/xiaoju-survey
docker.io/xiaoyaliu/alist
docker.io/xixihahaliu01/qanything-linux
docker.io/xixihahaliu01/qanything-mac
docker.io/xixihahaliu01/qanything-win
docker.io/xprobe/xinference
docker.io/xukuanhit/air_slam
docker.io/xuxueli/xxl-job-admin
docker.io/yandex/clickhouse-server
docker.io/ydlhero/chatgpt-web-midjourney-proxy
docker.io/yedf/dtm
docker.io/yidadaa/chatgpt-next-web
docker.io/ypptec/nascab
docker.io/yuzutech/kroki
docker.io/zabbix/*
docker.io/zadam/trilium
docker.io/zendesk/maxwell
docker.io/zerotier/*
docker.io/zhaojun1998/zfile-pro
docker.io/zhayujie/chatgpt-on-wechat
docker.io/zilliz/*
docker.io/zlijingtao/neurobfuscator
docker.io/zlmediakit/zlmediakit
docker.io/zmisgod/iptvchecker
docker.io/zmister/mrdoc
docker.io/zulip/docker-zulip
docker.io/zxdong262/electerm-web
docker.osgeo.org/**
docker.stirlingpdf.com/stirlingtools/stirling-pdf
gcr.io/**
ghcr.io/666ghj/bettafish
ghcr.io/9001/copyparty-ac
ghcr.io/aas-ee/open-web-search
ghcr.io/abhigyanpatwari/gitnexus
ghcr.io/abhigyanpatwari/gitnexus-web
ghcr.io/actions/**
ghcr.io/advplyr/audiobookshelf
ghcr.io/agent-infra/**
ghcr.io/ai-dynamo/**
ghcr.io/ajnart/homarr
ghcr.io/amamba-io/**
ghcr.io/analogj/scrutiny
ghcr.io/anduin2017/how-to-cook
ghcr.io/anomalyco/opencode
ghcr.io/ansible/**
ghcr.io/apache/**
ghcr.io/apple/**
ghcr.io/aquasecurity/**
ghcr.io/armbian/**
ghcr.io/astral-sh/**
ghcr.io/authzed/spicedb
ghcr.io/authzed/spicedb-operator
ghcr.io/autowarefoundation/autoware
ghcr.io/axoflow/**
ghcr.io/baizeai/**
ghcr.io/benc-uk/kubeview
ghcr.io/berriai/litellm
ghcr.io/bigcode-project/evaluation-harness
ghcr.io/bigcode-project/evaluation-harness-multiple
ghcr.io/biliup/caution
ghcr.io/binary-husky/gpt_academic_with_latex
ghcr.io/blakeblackshear/**
ghcr.io/brenner-tobias/cloudflared/*
ghcr.io/browserless/chromium
ghcr.io/canner/*
ghcr.io/chaos-mesh/**
ghcr.io/chaosblade-io/**
ghcr.io/chroma-core/chroma
ghcr.io/cinnamon/kotaemon
ghcr.io/cirruslabs/**
ghcr.io/cloudnative-pg/**
ghcr.io/cloudtty/cloudshell
ghcr.io/coder/**
ghcr.io/codex-team/codex.docs
ghcr.io/containerd/**
ghcr.io/coollabsio/coolify-helper
ghcr.io/coqui-ai/tts
ghcr.io/corentinth/it-tools
ghcr.io/cowboysysop/pytest
ghcr.io/crazy-max/fail2ban
ghcr.io/cross-rs/**
ghcr.io/danny-avila/librechat-dev
ghcr.io/daocloud/**
ghcr.io/dbt-labs/dbt-core
ghcr.io/decohererk/decotv
ghcr.io/deepflowio/rust-build
ghcr.io/devmachine-fr/cert-manager-alidns-webhook
ghcr.io/dexidp/**
ghcr.io/ding113/claude-code-hub
ghcr.io/docling-project/*
ghcr.io/dtzar/**
ghcr.io/dynamia-ai/**
ghcr.io/easytier/easytier
ghcr.io/edgestorage/*
ghcr.io/elastic/opentelemetry-demo
ghcr.io/elf-io/*
ghcr.io/emqx/emqx-operator
ghcr.io/esphome/esphome
ghcr.io/estrellaxd/auto_bangumi
ghcr.io/eunomia-bpf/libbpf-template
ghcr.io/fatedier/frpc
ghcr.io/fief-dev/fief
ghcr.io/fish2018/pansou
ghcr.io/fish2018/pansou-web
ghcr.io/fission/**
ghcr.io/flannel-io/*
ghcr.io/flexget/flexget
ghcr.io/fluent/**
ghcr.io/freecodecamp/devdocs
ghcr.io/fullstorydev/grpcui
ghcr.io/garethgeorge/backrest
ghcr.io/gcwing/bitfun-relay-server
ghcr.io/germondai/trawl
ghcr.io/gethomepage/homepage
ghcr.io/getsentry/*
ghcr.io/ggerganov/llama.cpp
ghcr.io/ggml-org/llama.cpp
ghcr.io/github/github-mcp-server
ghcr.io/gnzsnz/ib-gateway
ghcr.io/go-rod/rod
ghcr.io/goauthentik/**
ghcr.io/gohugoio/hugo
ghcr.io/google/**
ghcr.io/graalvm/*
ghcr.io/grafana-operator/*
ghcr.io/grafana/*
ghcr.io/hassio-addons/**
ghcr.io/headlamp-k8s/**
ghcr.io/helm/**
ghcr.io/hkuds/deeptutor
ghcr.io/hkuds/lightrag
ghcr.io/homarr-labs/homarr
ghcr.io/home-assistant/**
ghcr.io/home-operations/*
ghcr.io/huaweiclouddeveloper/**
ghcr.io/huggingface/*
ghcr.io/hwameistor/**
ghcr.io/iflytek/**
ghcr.io/imagegenius/immich
ghcr.io/immich-app/**
ghcr.io/imputnet/cobalt
ghcr.io/infrastructure-io/**
ghcr.io/inspektor-gadget/gadget/*
ghcr.io/jd-opensource/**
ghcr.io/jimmidyson/configmap-reload
ghcr.io/jkroepke/access-log-exporter
ghcr.io/joeferner/redis-commander
ghcr.io/joernio/joern
ghcr.io/k3d-io/**
ghcr.io/k3s-io/**
ghcr.io/k8snetworkplumbingwg/**
ghcr.io/kagenti/**
ghcr.io/karakeep-app/karakeep
ghcr.io/kdoctor-io/**
ghcr.io/kedacore/*
ghcr.io/khoj-ai/**
ghcr.io/kite-org/kite
ghcr.io/klts-io/**
ghcr.io/komari-monitor/komari
ghcr.io/koodo-reader/koodo-reader
ghcr.io/koordinator-sh/**
ghcr.io/ksmartdata/**
ghcr.io/kube-logging/**
ghcr.io/kube-vip/**
ghcr.io/kubean-io/**
ghcr.io/kubeflow/**
ghcr.io/kyverno/**
ghcr.io/labring/calico
ghcr.io/labring/fastgpt
ghcr.io/labring/fastgpt-sandbox
ghcr.io/labring/lvscare
ghcr.io/lemker/unifi-os-server
ghcr.io/libredb/libredb-studio
ghcr.io/librespeed/speedtest
ghcr.io/linuxsuren/api-testing
ghcr.io/linuxsuren/atest-ext-store-orm
ghcr.io/llm-d/**
ghcr.io/loft-sh/kubernetes
ghcr.io/logseq/logseq-webapp
ghcr.io/lunatechlab/moontv
ghcr.io/luskits/**
ghcr.io/macbre/nginx-http3
ghcr.io/mastodon/mastodon
ghcr.io/matrixhub-ai/**
ghcr.io/maybe-finance/**
ghcr.io/megacloudcontainer/**
ghcr.io/mellanox/**
ghcr.io/mendableai/firecrawl
ghcr.io/metalbear-co/**
ghcr.io/metatool-ai/metamcp
ghcr.io/metatube-community/metatube-server
ghcr.io/microsoft/**
ghcr.io/mlflow/*
ghcr.io/modelcontextprotocol/inspector
ghcr.io/mosn/**
ghcr.io/mostlygeek/llama-swap
ghcr.io/music-assistant/server
ghcr.io/nicholas-fedor/watchtower
ghcr.io/nousresearch/*
ghcr.io/nvidia-ai-iot/vllm
ghcr.io/nvidia/**
ghcr.io/open-telemetry/**
ghcr.io/open-webui/**
ghcr.io/openai/**
ghcr.io/opencidn/**
ghcr.io/openclaw/openclaw
ghcr.io/openfaas/**
ghcr.io/openhands/agent-canvas
ghcr.io/openhands/openhands
ghcr.io/openinsight-proj/**
ghcr.io/openlistteam/openlist-git
ghcr.io/ot-container-kit/**
ghcr.io/parkervcp/yolks
ghcr.io/phioranex/openclaw-docker
ghcr.io/plankanban/planka
ghcr.io/presenton/presenton
ghcr.io/project-hami/**
ghcr.io/project-zot/**
ghcr.io/projectcontour/**
ghcr.io/projecthami/**
ghcr.io/ptbsare/home-assistant-addons/aarch64-addon-sherpa-onnx-tts-stt
ghcr.io/pterodactyl/*
ghcr.io/puppeteer/puppeteer
ghcr.io/rails/**
ghcr.io/rancher/**
ghcr.io/rjmalagon/ollama-linux-amd-apu
ghcr.io/rtsp/**
ghcr.io/run-ai/**
ghcr.io/scaleapi/drugdiscoverybench
ghcr.io/seriousm4x/upsnap
ghcr.io/shipwright-io/**
ghcr.io/siderolabs/*
ghcr.io/siemens/**
ghcr.io/sillytavern/sillytavern
ghcr.io/songquanpeng/one-api
ghcr.io/speaches-ai/speaches
ghcr.io/spidernet-io/**
ghcr.io/spiffe/**
ghcr.io/spring-ai-alibaba/lynxe
ghcr.io/sugarforever/peanut-shell
ghcr.io/sumologic/**
ghcr.io/suwayomi/suwayomi-server
ghcr.io/suwayomi/tachidesk
ghcr.io/systemed/tilemaker
ghcr.io/szemeng76/lunatv
ghcr.io/tangly1024/notionnext
ghcr.io/tektoncd/**
ghcr.io/telepresenceio/*
ghcr.io/thomiceli/opengist
ghcr.io/timeplus-io/**
ghcr.io/tiryoh/ros2-desktop-vnc
ghcr.io/toeverything/affine-graphql
ghcr.io/umami-software/umami
ghcr.io/unifabric-io/**
ghcr.io/universaloj/**
ghcr.io/vllm-project/**
ghcr.io/voidzero-dev/vite-plus
ghcr.io/volcengine/openviking
ghcr.io/webassembly/*
ghcr.io/wei-shaw/sub2api
ghcr.io/wg-easy/wg-easy
ghcr.io/wzshiming/**
ghcr.io/yanyang-technology-group/ycomm-web
ghcr.io/yeraze/meshmonitor
ghcr.io/ylianst/meshcentral
ghcr.io/zalando/**
ghcr.io/zammad/zammad
ghcr.io/zitadel/**
k8s.gcr.io/**
lscr.io/linuxserver/**
mcr.microsoft.com/**
nvcr.io/**
ollama.ai/**
public.ecr.aws/amazonlinux/**
public.ecr.aws/appmesh/**
public.ecr.aws/bitnami/*
public.ecr.aws/cloudwatch-agent/**
public.ecr.aws/datadog/**
public.ecr.aws/docker/**
public.ecr.aws/dynatrace/**
public.ecr.aws/eks-distro/**
public.ecr.aws/karpenter/**
public.ecr.aws/lambda/**
public.ecr.aws/mackerel/**
public.ecr.aws/mountpoint-s3-csi-driver/**
public.ecr.aws/nginx/**
public.ecr.aws/ubuntu/**
quay.io/aipipeline/*
quay.io/argoproj/*
quay.io/argoprojlabs/*
quay.io/ascend/*
quay.io/brancz/*
quay.io/buildah/*
quay.io/calico/*
quay.io/ceph/ceph
quay.io/ceph/cosi
quay.io/cephcsi/cephcsi
quay.io/cilium/*
quay.io/coreos/*
quay.io/csiaddons/k8s-sidecar
quay.io/external_storage/*
quay.io/frrouting/frr
quay.io/go-skynet/local-ai
quay.io/goswagger/*
quay.io/grafana-operator/*
quay.io/ibm-spectrum-scale/*
quay.io/jaegertracing/*
quay.io/jetstack/*
quay.io/jetstack/charts/*
quay.io/jupyter/*
quay.io/jupyterhub/*
quay.io/k0sproject/*
quay.io/k8scsi/*
quay.io/kata-containers/*
quay.io/keycloak/keycloak
quay.io/kiali/*
quay.io/kiwigrid/*
quay.io/kuberay/*
quay.io/kubernetes-ingress-controller/*
quay.io/kubernetes-sigs/*
quay.io/kubespray/*
quay.io/kubevirt/*
quay.io/libpod/skopeo_cidev
quay.io/martinhelmich/**
quay.io/metallb/*
quay.io/minio/*
quay.io/mittwald/kubernetes-replicator
quay.io/mongodb/*
quay.io/nmstate/*
quay.io/nuclio/*
quay.io/operator-framework/*
quay.io/operatorhubio/minio-operator
quay.io/opstree/*
quay.io/podman/stable
quay.io/prometheus-operator/*
quay.io/prometheus/*
quay.io/prometheuscommunity/*
quay.io/pypa/*
quay.io/quarkus/*
quay.io/redhat-developer/*
quay.io/sameersbn/squid
quay.io/skopeo/*
quay.io/soketi/soketi
quay.io/spotahome/*
quay.io/strimzi/*
quay.io/submariner/*
quay.io/tigera/*
registry.developers.crunchydata.com/crunchydata/pgo-deployer
registry.gitlab.com/gitlab-org/**
registry.gitlab.com/purelb/purelb/purelb
registry.heroiclabs.com/heroiclabs/nakama
registry.jujucharms.com/**
registry.k8s.io/**
registry.librechat.ai/**
registry.opensource.zalan.do/**
registry.rocket.chat/**
registry.supertokens.io/**
rocks.canonical.com/**
us-central1-docker.pkg.dev/k8s-staging-images/**
us-central1-docker.pkg.dev/keephq/keep/keep-api
us-central1-docker.pkg.dev/keephq/keep/keep-ui
us.gcr.io/k8s-artifacts-prod/**


File: docs/local-cache/README.md

部署内网缓存

简介

本地缓存部署用于在内网环境中加速镜像拉取,减少对外网的依赖。通过设置一个本地镜像仓库,您可以缓存常用的镜像。

部署步骤

  1. 准备环境

确保已安装 Docker 和 Docker Compose。

  1. 配置 Docker Compose 文件

创建一个 docker-compose.yml 文件:

yaml
services:
  registry:
    image: m.daocloud.io/docker.io/library/registry:3
    restart: unless-stopped
    ports:
    - 8888:8888
    command:
    - /etc/docker/registry/config.yml
    volumes:
    - cache-data:/var/lib/registry
    configs:
    - source: registry-config
      target: /etc/docker/registry/config.yml
configs:
  registry-config:
    content: |
      version: 0.1
      storage:
        delete:
          enabled: true
        filesystem:
          rootdirectory: /var/lib/registry
      http:
        addr: :8888
      proxy:
        remoteurl: https://m.daocloud.io
        ttl: 2160h
volumes:
  cache-data: {}
  1. 启动服务
bash
docker compose up -d
  1. 配置 Docker 客户端
    在 /etc/docker/daemon.json 中添加以下内容:
json
{
  "insecure-registries": ["<your-registry-ip>:<your-registry-port>"]
}

然后重启 Docker 服务:

bash
systemctl restart docker

用法

现在您的 <your-registry-ip>:<your-registry-port>/ 已经是 m.daocloud.io/ 的本地缓存代理

后续就像 m.daocloud.io 加前缀一样, 只需要在原始镜像地址前加上 <your-registry-ip>:<your-registry-port>/ 即可。

例如,拉取 docker.io/library/nginx:latest 镜像,可以使用以下命令:

bash
docker pull <your-registry-ip>:<your-registry-port>/docker.io/library/nginx:latest

File: .agents/skills/allower/SKILL.md


name: allower

public-image-mirror 镜像白名单(allows.txt)申请与审批。

意图路由

意图 说明 参考
申请 指导用户提交镜像白名单申请 references/applicant.md
审批 审核和批准镜像白名单申请 references/approver.md

File: .agents/skills/allower/references/applicant.md

白名单申请

提交 PR 流程 pr.md

PR 正文模板

markdown
## 白名单级别

只需要这一个镜像 / 需要这个组织下所有镜像

## 镜像仓库地址

<镜像地址>

## 是否 Verified Publisher / Sponsored OSS / Official Image

<Verified Publisher / Sponsored OSS / Official Image / 不是>

## 项目源码地址

<GitHub/GitLab 等源码仓库链接>

## 镜像关联证明

<官网/文档/源码中哪提及对应的镜像地址>

## 补充说明

<其他说明>

File: .agents/skills/allower/references/approver.md

白名单审批

提交 PR 流程 pr.md

审批专属原则

  • 必须验证:不能仅依赖申请人声明
  • 不要主动帮申请人"找"证明材料:没提供 → 要求补充
  • 以 GitHub star 为准:Docker Hub star 仅辅助参考
  • 通过的 Issue 不要关闭:由 PR 合并后自动关闭

验证工具

Docker Hub Badge 验证

bash
check_dockerhub_badge() {
    local html; html=$(curl -sL "https://hub.docker.com/r/$1")
    echo "$html" | grep -q 'aria-label="Verified Publisher"' && echo "Verified Publisher" && return
    echo "$html" | grep -q 'aria-label="Sponsored OSS"' && echo "Sponsored OSS" && return
    echo "$html" | grep -q 'aria-label="Docker Official Image"' && echo "Official Image"
}

镜像 和 github 仓库关联验证

bash
gh search code "<image name>" --repo <owner>/<repo> -L 10

审批流程

1. 获取待审批列表

bash
gh issue list --repo DaoCloud/public-image-mirror --label "allows image" --state open

2. 逐个验证

bash
gh issue view <issue_number> --repo DaoCloud/public-image-mirror
gh api repos/<owner>/<repo> --jq '.stargazers_count'
check_dockerhub_badge "<namespace>/<repo>"

3. 决策

情况 动作
符合标准 ✅ 通过 → 提交 PR
已在白名单 ⚠️ 回复已存在
信息缺失 ⚠️ 要求补充
不符合标准 ❌ 驳回

PR 正文模板

markdown
Fixed #<issue_number>

/auto-cc

Issue 回复模板

✅ 通过

markdown
## 审批结果:通过

**镜像**: *docker.io/<namespace>/<repo>*
**验证通过**: ✅ 开源项目, ✅ GitHub star > 10, ✅ 镜像与源码有关联
已提交 PR: <PR链接>

✅ 通过(Badge 免除)

markdown
## 审批结果:通过

**镜像**: *docker.io/<namespace>/<repo>*
**验证通过**: ✅ Docker Hub <badge类型>, ✅ GitHub star > 10
已提交 PR: <PR链接>

⚠️ 已存在

markdown
## 审批结果:已存在

**镜像**: _docker.io/<namespace>/<repo>_
白名单已存在
/close

⚠️ 需补充信息

markdown
## 审批结果:需补充信息

**缺少**: ❌ 项目源码地址 / ❌ 镜像关联证明
**请补充**: 提供源码地址及文档链接,再新开 Issue
/close

❌ 驳回

markdown
## 审批结果:驳回

**驳回原因**: ❌ <具体原因>
/close

File: .agents/skills/allower/references/pr.md

提交 PR 指南

准备仓库

检查用户是否已经登入, 提示用户 登录 gh auth login,并执行以下初始化:

bash
gh auth status
bash
gh repo fork DaoCloud/public-image-mirror --clone=true
cd public-image-mirror

编辑 allows.txt

bash
git checkout -b allows/<分支名>
echo "<镜像地址>" >> allows.txt
./hack/fmt-image-match.sh allows.txt

git diff 无输出 → 已被已有规则覆盖,无需提交(无需继续下面的提交步骤)。

提交 PR

bash
git add allows.txt && git commit -m "<提交信息>"
git push -u origin allows/<image-name-or-issue-number>
gh pr create \
  --repo DaoCloud/public-image-mirror \
  --title "<PR标题>" \
  --body '<PR正文>'

通配符规则

模式 含义 示例
* 匹配任意字符(不含 /) docker.io/alpine/*
** 匹配任意字符(含 /) docker.io/alpinelinux/**
无通配符 精确匹配 docker.io/nginx/nginx-unprivileged

白名单审批规则

✅ 通过标准(全部满足)

  1. 开源项目(有源码,非仅编译产物)
  2. GitHub star > 10
  3. 镜像与源码有实际关联(文档/官方推荐)
  4. 无违规内容(禁止盗版/魔法/科学上网)

⚠️ Docker Hub 免除源码关联

Docker Hub Verified Publisher / Sponsored OSS / Official Image


File: .gitee/ISSUE_TEMPLATE/allows-image.yml

name: Allows Image
labels:

  • allows image
    body:

  • type: markdown
    attributes:
    value: |
    - 对于镜像的要求 #2328
    - 一般 5个工作日内 🐢 查看成功案例
    - 自己提 PR 修改白名单优先审查 🚀
    - 注意在 PR 的内容里描述 Fixed # 这个 issue 的 id 示例

  • type: dropdown
    attributes:
    label: 白名单级别
    options:

    • 只需要这一个镜像 (如 docker.io/library/busybox)
    • 需要这个组织下所有镜像 (如 docker.io/library/*)
      validations:
      required: true
  • type: textarea
    attributes:
    label: 镜像仓库地址
    placeholder: |
    https://hub.docker.com/r/...

    validations:
    required: true

  • type: dropdown
    attributes:
    label: 这是 镜像仓库 认证可信的 验证过的发布者(Verified Publisher)或者赞助的项目(Sponsored OSS) 么?
    options:

    • 不是 - 请补充下面的信息
    • 是的 - 不需要填下面的信息 - 如果实际上不是将不再继续核查
      validations:
      required: true
  • type: textarea
    attributes:
    label: 项目源码地址 或 组织地址
    placeholder: |
    https://github.com/...

  • type: textarea
    attributes:
    label: 官网 或 文档 或 项目源码 中哪提及对应的镜像的地址 (需要证明这个镜像和源码有实际关联)

  • type: textarea
    attributes:
    label: 补充说明

  • type: markdown
    attributes:
    value: |
    有疑问反馈, 请添加我们的企微群 #4183


File: .github/ISSUE_TEMPLATE/allows-image.yml

name: Allows Image
labels:

  • allows image
    body:

  • type: markdown
    attributes:
    value: |
    - 对于镜像的要求 #2328
    - 一般 5个工作日内 🐢 查看成功案例
    - 自己提 PR 修改白名单优先审查 🚀
    - 注意在 PR 的内容里描述 Fixed # 这个 issue 的 id 示例

  • type: dropdown
    attributes:
    label: 白名单级别
    options:

    • 只需要这一个镜像 (如 docker.io/library/busybox)
    • 需要这个组织下所有镜像 (如 docker.io/library/*)
      validations:
      required: true
  • type: textarea
    attributes:
    label: 镜像仓库地址
    placeholder: |
    https://hub.docker.com/r/...

    validations:
    required: true

  • type: dropdown
    attributes:
    label: 这是 镜像仓库 认证可信的 验证过的发布者(Verified Publisher)或者赞助的项目(Sponsored OSS) 么?
    options:

    • 不是 - 请补充下面的信息
    • 是的 - 不需要填下面的信息 - 如果实际上不是将不再继续核查
      validations:
      required: true
  • type: textarea
    attributes:
    label: 项目源码地址 或 组织地址
    placeholder: |
    https://github.com/...

  • type: textarea
    attributes:
    label: 官网 或 文档 或 项目源码 中哪提及对应的镜像的地址 (需要证明这个镜像和源码有实际关联)

  • type: textarea
    attributes:
    label: 补充说明

  • type: markdown
    attributes:
    value: |
    有疑问反馈, 请添加我们的企微群 #4183


File: .github/ISSUE_TEMPLATE/sync-image.yml

name: Sync Image
labels:

  • sync image
    body:

  • type: markdown
    attributes:
    value: |
    # ↑↑↑↑↑↑↑↑↑↑↑ 填入你要同步的 Image
    ## 请包含 域名/路径:标签

  • type: dropdown
    attributes:
    label: 镜像架构
    options:

    • linux/amd64
    • linux/386
    • linux/arm64
    • linux/arm/v6
    • linux/arm/v7
    • linux/ppc64le
    • linux/s390x
      validations:
      required: true
  • type: markdown
    attributes:
    value: |
    请确保包含域名(domain)
    - 如 docker.io/
    - 如 registry.k8s.io/
    - 如果不包含域名, 需要主动添加默认的 docker.io/

  • type: markdown
    attributes:
    value: |
    请确保包含镜像的标签(tag)
    - 如 :latest
    - 如 :v1

  • type: markdown
    attributes:
    value: |
    请确保这个镜像真实存在
    - 如 docker.io/library/busybox:latest
    - 如 docker.io/kindest/node:v1.30.0
    - 如 registry.k8s.io/kubectl:v1.30.0

  • type: markdown
    attributes:
    value: |
    有疑问反馈, 请添加我们的企微群 #4183


File: .github/workflows/ci-bot.yml

name: CI Bot
on:
issue_comment:
types:
- created

pull_request_review_comment:
types:
- created

https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_review

pull_request_review:
types:
- submitted

issues:
types:
- opened
- labeled
- unlabeled

https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target

pull_request_target:
types:
- opened
- synchronize
- edited
- converted_to_draft
- ready_for_review
- labeled
- unlabeled

env:

This plugins is for anyone who can use it

PLUGINS: |-
assign
auto-cc
cc

This plugins is for author of issue or PR

AUTHOR_PLUGINS: |-
label-bug
label-documentation
label-enhancement
label-question
retest

This plugins is for organization member or repository member

MEMBERS_PLUGINS: |-
label-duplicate
label-good-first-issue
label-help-wanted
label-invalid
label-kind
label-wontfix
label-bug
label-documentation
label-enhancement
label-question
hold
lifecycle
retest
transfer-issue

This plugins is for in the REVIEWERS environment variable

REVIEWERS_PLUGINS: |-
label-lgtm
retitle

This plugins is for in the APPROVERS environment variable

APPROVERS_PLUGINS: |-
label-approve
label
merge
base
rebase
cherry-pick

This plugins is for in the MAINTAINERS environment variable

MAINTAINERS_PLUGINS: |-
milestone

This plugins is for organization owner or repository owner

OWNERS_PLUGINS: ""

REVIEWERS: |-
yankay
wzshiming
APPROVERS: |-
yankay
wzshiming
MAINTAINERS: |-
yankay
wzshiming

GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPOSITORY: ${{ github.repository }}

It can be `merge`, `rebase`, or `squash`.

DEFAULT_MERGE_METHOD: squash

Number of reviewers automatically requested when a PR is opened

(blunderbuss). Set to 0 to disable.

BLUNDERBUSS_REVIEWER_COUNT: '0'

Rules for the require-matching-label check, one per line in the format:

[comment...]

When an issue or PR has no label matching the regexp, the missing label

is applied with an explanatory comment, and removed once a matching

label is added. Set to an empty string to disable.

REQUIRE_MATCHING_LABELS: |-

Additional labels the bot is allowed to create, one entry per line.

Each entry is either an exact label name, or a prefix ending in a

slash (e.g. kind/) which allows any label with that prefix. These are

merged with the built-in default list of well-known prow and GitHub

labels (see bin/ensure-labels.sh). Labels not matching any entry are

never created automatically.

LABELS: |-

kind/docs

DETAILS: |-

text
Details

Instructions for interacting with me using comments are available here.
If you have questions or suggestions related to my behavior, please file an issue against the [gh-ci-bot](https://github.com/wzshiming/gh-ci-bot) repository.

https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token

permissions:
actions: write
checks: read
contents: write
deployments: none
id-token: none
issues: write
discussions: read
packages: none
pages: none
pull-requests: write
repository-projects: read
security-events: none
statuses: read

jobs:
bot:
name: Bot
runs-on: ubuntu-latest
steps:
- name: Issue Opened
uses: wzshiming/[email protected]
if: ${{ github.event_name == 'issues' && github.event.action == 'opened' }}
env:
LOGIN: ${{ github.event.issue.user.login }}
AUTHOR: ${{ github.event.issue.user.login }}
MESSAGE: ${{ github.event.issue.body }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
AUTHOR_ASSOCIATION: ${{ github.event.issue.author_association }}
ISSUE_KIND: issue
TYPE: created
GREETING: |-
Hi @${{ github.event.issue.user.login }},
感谢您的反馈!
我们会尽快跟进.

text
- name: PR Opened
    uses: wzshiming/[email protected]
    if: ${{ github.event_name == 'pull_request_target' && github.event.action == 'opened' }}
    env:
      LOGIN: ${{ github.event.pull_request.user.login }}
      AUTHOR: ${{ github.event.pull_request.user.login }}
      MESSAGE: ${{ github.event.pull_request.body }}
      ISSUE_NUMBER: ${{ github.event.pull_request.number }}
      AUTHOR_ASSOCIATION: ${{ github.event.pull_request.author_association }}
      ISSUE_KIND: pr
      TYPE: created
      GREETING: |-
        Hi @${{ github.event.pull_request.user.login }},
        感谢您的 PR !
        如果 PR 已经准备就绪可以 `/auto-cc` ,我们会尽快跟进.

  - name: PR Synchronize
    uses: wzshiming/[email protected]
    if: ${{ github.event_name == 'pull_request_target' && github.event.action == 'synchronize' }}
    env:
      LOGIN: ${{ github.event.pull_request.user.login }}
      AUTHOR: ${{ github.event.pull_request.user.login }}
      MESSAGE: ""
      ISSUE_NUMBER: ${{ github.event.pull_request.number }}
      AUTHOR_ASSOCIATION: ${{ github.event.pull_request.author_association }}
      ISSUE_KIND: pr
      TYPE: synchronize

  - name: PR Edited or Draft State Changed
    uses: wzshiming/[email protected]
    if: ${{ github.event_name == 'pull_request_target' && (github.event.action == 'edited' || github.event.action == 'converted_to_draft' || github.event.action == 'ready_for_review') }}
    env:
      LOGIN: ${{ github.event.pull_request.user.login }}
      AUTHOR: ${{ github.event.pull_request.user.login }}
      MESSAGE: ""
      ISSUE_NUMBER: ${{ github.event.pull_request.number }}
      AUTHOR_ASSOCIATION: ${{ github.event.pull_request.author_association }}
      ISSUE_KIND: pr
      TYPE: edited

  - name: Issue Labeled or Unlabeled
    uses: wzshiming/[email protected]
    if: ${{ github.event_name == 'issues' && (github.event.action == 'labeled' || github.event.action == 'unlabeled') }}
    env:
      LOGIN: ${{ github.event.sender.login }}
      AUTHOR: ${{ github.event.issue.user.login }}
      MESSAGE: ""
      ISSUE_NUMBER: ${{ github.event.issue.number }}
      AUTHOR_ASSOCIATION: ${{ github.event.issue.author_association }}
      ISSUE_KIND: issue
      TYPE: ${{ github.event.action }}

  - name: PR Labeled or Unlabeled
    uses: wzshiming/[email protected]
    if: ${{ github.event_name == 'pull_request_target' && (github.event.action == 'labeled' || github.event.action == 'unlabeled') }}
    env:
      LOGIN: ${{ github.event.sender.login }}
      AUTHOR: ${{ github.event.pull_request.user.login }}
      MESSAGE: ""
      ISSUE_NUMBER: ${{ github.event.pull_request.number }}
      AUTHOR_ASSOCIATION: ${{ github.event.pull_request.author_association }}
      ISSUE_KIND: pr
      TYPE: ${{ github.event.action }}

  - name: Issue Commented
    uses: wzshiming/[email protected]
    if: ${{ github.event_name == 'issue_comment' && !github.event.issue.pull_request }}
    env:
      LOGIN: ${{ github.event.comment.user.login }}
      AUTHOR: ${{ github.event.issue.user.login }}
      MESSAGE: ${{ github.event.comment.body }}
      ISSUE_NUMBER: ${{ github.event.issue.number }}
      AUTHOR_ASSOCIATION: ${{ github.event.comment.author_association }}
      ISSUE_KIND: issue
      TYPE: comment

  - name: PR Review Commented
    uses: wzshiming/[email protected]
    if: ${{ github.event_name == 'pull_request_review_comment' }}
    env:
      LOGIN: ${{ github.event.comment.user.login }}
      AUTHOR: ${{ github.event.pull_request.user.login }}
      MESSAGE: ${{ github.event.comment.body }}
      ISSUE_NUMBER: ${{ github.event.pull_request.number }}
      AUTHOR_ASSOCIATION: ${{ github.event.comment.author_association }}
      ISSUE_KIND: pr
      TYPE: comment

  - name: PR Review Submitted
    uses: wzshiming/[email protected]
    if: ${{ github.event_name == 'pull_request_review' && github.event.review.body != '' }}
    env:
      LOGIN: ${{ github.event.review.user.login }}
      AUTHOR: ${{ github.event.pull_request.user.login }}
      MESSAGE: ${{ github.event.review.body }}
      ISSUE_NUMBER: ${{ github.event.pull_request.number }}
      AUTHOR_ASSOCIATION: ${{ github.event.review.author_association }}
      ISSUE_KIND: pr
      TYPE: comment

  - name: PR Commented
    uses: wzshiming/[email protected]
    if: ${{ github.event_name == 'issue_comment' && github.event.issue.pull_request }}
    env:
      LOGIN: ${{ github.event.comment.user.login }}
      AUTHOR: ${{ github.event.issue.user.login }}
      MESSAGE: ${{ github.event.comment.body }}
      ISSUE_NUMBER: ${{ github.event.issue.number }}
      AUTHOR_ASSOCIATION: ${{ github.event.comment.author_association }}
      ISSUE_KIND: pr
      TYPE: comment

File: .github/workflows/cidn-runner.yml

name: CIDN Runner
run-name: CIDN Runner ${{ github.run_number }}

on:
schedule:
- cron: "0,30 * * * *"

workflow_dispatch:

jobs:
runner:
runs-on: ubuntu-latest
if: github.repository == 'DaoCloud/public-image-mirror'
container: ghcr.io/opencidn/cidn/runner:v0.0.111
steps:
- shell: sh
run: runner --handler-name=dc-${{ github.run_number }} --update-duration=10s --duration=3h --concurrency=16 ${{ secrets.ARGS_CIDN }}


File: .github/workflows/sync-image.yml

name: Target Sync Image
run-name: Target Sync ${{ github.event.issue.title }} by @${{ github.actor }}

on:
issues:
types:
- opened

https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token

permissions:
issues: write

jobs:
check:
runs-on: ubuntu-latest
if: contains(github.event.issue.labels.*.name, 'sync image')
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
outputs:
image: ${{ steps.get-image.outputs.image }}
link: ${{ steps.get-image.outputs.link }}
platforms: ${{ steps.get-image.outputs.platforms }}
arch: ${{ steps.get-image.outputs.arch }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Check Issue
id: get-image
env:
IMAGE: "${{ github.event.issue.title }}"
ISSUE_BODY: "${{ github.event.issue.body }}"
run: |
ORIGIN_IMAGE="${IMAGE}"
CORRECT_IMAGE="$(./hack/correct-image.sh "${ORIGIN_IMAGE}")"
if [[ "${CORRECT_IMAGE}" == "" ]]; then
gh issue comment ${{ github.event.issue.number }} -b "镜像 '${ORIGIN_IMAGE}' 不是一个镜像"
gh issue close ${{ github.event.issue.number }} --reason "not planned"
exit 1
fi
if [[ "${CORRECT_IMAGE}" != "${ORIGIN_IMAGE}" ]]; then
if ! ./hack/verify-allows.sh ./allows.txt "${CORRECT_IMAGE}"; then
gh issue comment ${{ github.event.issue.number }} -b "镜像 '${ORIGIN_IMAGE}' 不存在呢, 也许应该是 '${CORRECT_IMAGE}', 并且不在白名单列表里, 不支持同步和访问可以将其添加到[白名单](https://github.com/${{ github.repository }}/issues/2328)"
else
gh issue comment ${{ github.event.issue.number }} -b "镜像 '${ORIGIN_IMAGE}' 不存在呢, 也许应该是 '${CORRECT_IMAGE}'"
fi
gh issue close ${{ github.event.issue.number }} --reason "not planned"
exit 1
fi
if ! ./hack/verify-allows.sh ./allows.txt "${ORIGIN_IMAGE}"; then
gh issue comment ${{ github.event.issue.number }} -b "镜像 ${ORIGIN_IMAGE} 不在白名单列表里, 不支持同步和访问可以将其添加到[白名单](https://github.com/${{ github.repository }}/issues/2328)"
gh issue close ${{ github.event.issue.number }} --reason "not planned"
exit 1
fi

text
IMAGE="${ORIGIN_IMAGE}"
    echo "image=${IMAGE}" >> $GITHUB_OUTPUT
    GROUP="${IMAGE%%:*}"
    GROUP="${GROUP%%@*}"
    LINK="https://queue.m.daocloud.io/status/#group:${GROUP}"
    echo "link=${LINK}" >> $GITHUB_OUTPUT

    BODY="${ISSUE_BODY:-}"
    ARCH=""

    if [ -z "${ARCH}" ]; then
      ARCH=$(printf "%s" "$BODY" | grep -oE 'linux/[a-z0-9/._+-]+' | head -n1 || true)
    fi

    if [ -z "${ARCH}" ]; then
      ARCH="linux/amd64"
    fi

    echo "arch=${ARCH}" >> $GITHUB_OUTPUT

    PLATFORM_FLAG="--platform=${ARCH}"
    echo "platforms=${PLATFORM_FLAG}" >> $GITHUB_OUTPUT

    gh issue comment ${{ github.event.issue.number }} -b "镜像 ${IMAGE}, 平台 ${ARCH} 将添加到同步队列...[同步队列](${LINK})[详细信息](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})"

sync:
runs-on: ubuntu-latest
needs: check
if: needs.check.result == 'success'
container: ghcr.io/opencidn/ocimirror/sync:v0.0.49
steps:
- shell: sh
run: sync ${{ needs.check.outputs.image }} ${{ needs.check.outputs.platforms }} ${{ secrets.ARGS_CIDN }} ${{ secrets.ARGS_R2_IMAGE }}

runner:
runs-on: ubuntu-latest
needs: check
if: needs.check.result == 'success'
container: ghcr.io/opencidn/cidn/runner:v0.0.108
steps:
- shell: sh
run: runner --handler-name=dc-${{ github.run_number }}-${{ github.event.issue.number }} --update-duration=10s --duration=5m --concurrency=2 ${{ secrets.ARGS_CIDN }}

failure:
runs-on: ubuntu-latest
needs:
- sync
- check
if: always() && needs.sync.result == 'failure'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Sync Failure Status
run: |
gh -R "${{ github.repository }}" issue edit ${{ github.event.issue.number }} --add-label "sync image failure" -b "镜像同步失败"
gh -R "${{ github.repository }}" issue close ${{ github.event.issue.number }} --reason "not planned" --comment "镜像 ${{ needs.check.outputs.image }}, 平台 ${{ needs.check.outputs.arch }} 同步失败请去同步队列查看详细信息。"

success:
runs-on: ubuntu-latest
needs:
- sync
- check
if: needs.sync.result == 'success'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Sync Success Status
run: |
gh -R "${{ github.repository }}" issue edit ${{ github.event.issue.number }} --add-label "sync image succeeded" -b "镜像同步完成"
gh -R "${{ github.repository }}" issue close ${{ github.event.issue.number }} --reason "completed" --comment "镜像 ${{ needs.check.outputs.image }}, 平台 ${{ needs.check.outputs.arch }} 同步完成请使用 m.daocloud.io/${{ needs.check.outputs.image }} 进行访问。"


File: .github/workflows/update-allows-list.yml

name: Update allows list

on:
push:
paths:
- allows.txt
branches:
- main
workflow_dispatch:

jobs:
update-allows-list:
if: github.repository == 'DaoCloud/public-image-mirror'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

text
- name: Update list
  run: |
    LIST="$(cat ./allows.txt | grep -v 'docker.io/\*' | sed 's/docker.io\/library\/\([^\/]*\)/&\ndocker.io\/\1/' | jq -R -s -c '{"items": split("\n")[:-1], "block_message": "🚫 👀-> https://github.com/DaoCloud/public-image-mirror/issues/2328 🔗 这镜像不在白名单. this image is not in the allowlist."}')"
    TOKEN="$(curl -X 'POST' \
      'https://queue.m.daocloud.io/apis/auth/users/login' \
      -H 'Accept: application/json' \
      -H 'Content-Type: application/json' \
      -d ${{ secrets.USER_LOGIN_DATA }} | jq -r .token)"
    curl -f -X 'PUT' \
      'https://queue.m.daocloud.io/apis/auth/registries/allow_images' \
      -H 'Accept: application/json' \
      -H "Authorization: Bearer ${TOKEN}" \
      -H 'Content-Type: application/json' \
      -d "${LIST}"

File: .github/workflows/verify-pr.yml

name: Verify PR

on:
pull_request_target:
branches: [main]
paths:
- 'mirror.txt'
- 'allows.txt'

permissions:
issues: write
pull-requests: write

env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
verify-pr:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Commit PR
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
wget -O pr.patch https://github.com/${{ github.repository }}/pull/${{ github.event.pull_request.number }}.patch &&
git am -3 pr.patch &&
rm -rf pr.patch

text
- name: Verify allows.txt sort
    run: |
      ./hack/verify-image-match.sh allows.txt || {
        echo "Please run './hack/fmt-image-match.sh allows.txt'"
        gh pr comment "${{ github.event.pull_request.number }}" --body '请运行 `./hack/fmt-image-match.sh allows.txt` 对内容进行排序'
        exit 1
      }