本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
本项目旨在为私有 Docker 镜像仓库提供简洁完整的用户界面,支持多种自定义配置,核心选项 SINGLE_REGISTRY 可禁用镜像仓库动态切换功能(与旧版 static 标签行为一致)。
若从 1.x 版本迁移至 2.x,可参考 迁移指南;1.x 版本说明见 历史文档。
界面基于类 React 微型库 Riot 和组件库 riot-mui 开发。如果觉得本项目有帮助,欢迎通过 赞助 支持开发。
latest:基于 nginx:alpine 的最新稳定版latest-debian:基于 nginx:debian 的最新稳定版main/master:基于 nginx:alpine 的 2.x 测试版(beta)main-debian/master-debian:基于 nginx:debian 的 2.x 测试版(beta)2:2.x 系列最新版本(包含最新小版本和补丁版本)2.x:2.x 系列指定主版本的最新版本(包含最新补丁版本)2.x.y:2.x.y 具体版本!预览
批量删除镜像:
ALT + 点击 表头复选框,选中当前页所有标签(1.2.1 起支持,详见 #80、#81)。Shift + 点击 起始标签,再 Shift + 点击 结束标签,选中连续标签(2.4.0 起支持,详见 #287)。鼠标悬停标签时显示 sha256 摘要。
标签列表支持数字排序(0.4.0 起支持,详见 #45、#46)。
共享界面:当 SINGLE_REGISTRY=false 时,可通过公共演示页 + URL 参数共享(例如 [***] Access-Control-Allow-Origin设为[***] 搜索框快捷键:按 Ctrl + F 或 F3 聚焦搜索框(2.1.0 起支持,详见 #213)。
历史页面支持多架构显示(1.5.0 起支持,详见 #130、#134)。
显示 Dockerfile 内容(2.4.0 起支持,详见 #286)。
缓存仓库请求(如 blobs 和含 sha256: 的 manifest)。
SINGLE_REGISTRY=false 与 true 的区别?
false 时界面顶部显示仓库切换菜单,支持动态添加/切换仓库;true 时仅显示单个仓库,无切换菜单。
删除所有标签后,镜像为何仍显示在界面?
Docker 仓库的垃圾回收机制不会自动删除空镜像(无标签但有残留数据)。需手动删除仓库数据目录中的对应文件夹(详见 #77)。
界面显示的镜像大小与 docker images 不一致?
界面显示的是镜像压缩后的大小,而非本地解压后的大小。
能否通过 HTTPS 访问界面?
可以。需在前端部署反向代理(如 Nginx)处理 HTTPS 连接。
是否支持认证?
仅支持基础认证(Basic Auth)。作为纯前端应用,依赖浏览器自带的认证窗口。
能否搭配非安全仓库(无 HTTPS)使用?
可以,但需先配置 Docker 客户端(详见 #76)。
"Mixed Content" 错误是什么?
表示界面使用 HTTPS 但仓库使用 HTTP(非加密)。HTTPS 页面无法加载 HTTP 资源,需将仓库升级为 HTTPS。
为何 Nginx 默认 Host 设为 $http_host?
用于解决 #88 问题,详见 #113。
使用 Basic Auth 时,OPTIONS(预检请求)和 DELETE 请求返回 401 错误?
Docker 仓库存在 bug,预检请求会返回 401,违反 W3C 预检请求规范,且官方已明确不会修复(distribution/distribution#4458)。解决方案:将界面与仓库部署在同一域名下(如 registry.example.com/ui/),或使用 NGINX_PROXY_PASS_URL,或在仓库前端部署反向代理(Nginx/Apache)并对 OPTIONS 请求返回 200。
能否通过 Electron 作为独立应用运行?
可以,示例见 此处(详见 #129)。
通过界面删除镜像后,服务器上仍存在?
界面仅删除标签引用,需运行仓库垃圾回收命令清理残留数据:registry garbage-collect config.yml 或 docker exec registry registry garbage-collect config.yml(详见 #77、#147)。
删除一个标签后,相同 SHA 的所有标签都被删除?
Docker 仓库 API 限制:删除标签需通过 name 和 manifest(内容 SHA),因此相同 SHA 的标签会被批量删除。
能否以非特权用户运行容器?
可以,使用 --user nginx 以 nginx 用户运行,此时监听端口自动改为 8080(详见 #224、#234)。
更多问题:可参考 使用示例 或提交 Issue。
以下环境变量用于自定义界面行为(当 SINGLE_REGISTRY=true 时,部分选项仅对单仓库模式生效):
| 变量名 | 说明 | 默认值 | 版本要求 |
|---|---|---|---|
REGISTRY_URL | 仓库地址(需配置 CORS),如 `[***] | 从界面域名推导 | - |
REGISTRY_TITLE | 界面标题 | 从 REGISTRY_URL 推导 | 0.3.4+ |
PULL_URL | docker pull 命令中显示的仓库地址 | 同 REGISTRY_URL | 1.1.0+ |
DELETE_IMAGES | 是否允许删除镜像(true/false) | false | - |
SHOW_CONTENT_DIGEST | 是否显示标签的 content digest(sha256) | false | 1.4.9+ |
CATALOG_ELEMENTS_LIMIT | 目录页最多显示的镜像数量 | 1000 | 1.4.9+ |
SINGLE_REGISTRY | 是否禁用仓库切换菜单(true/false) | false | 2.0.0+ |
NGINX_PROXY_PASS_URL | 代理仓库地址(如 `[***] CORS 问题 | - | 2.0.0+ |
NGINX_LISTEN_PORT | 监听端口(root 用户默认 80,非 root 用户默认 8080) | 80/8080 | 2.2.0+ |
DEFAULT_REGISTRIES | 初始仓库列表(逗号分隔,SINGLE_REGISTRY=false 时生效) | - | 2.1.0+ |
READ_ONLY_REGISTRIES | 是否禁止添加/删除仓库(SINGLE_REGISTRY=false 时生效) | false | 2.1.0+ |
THEME | 主题(light/dark/auto) | auto | 2.4.0+ |
TAGLIST_ORDER | 标签排序规则(如 alpha-asc;num-desc) | alpha-asc;num-desc | 2.5.0+ |
通过 THEME_* 环境变量自定义主题颜色,支持以下参数(示例值为默认的亮色/暗色主题配置):
| 变量名 | 亮色主题值 | 暗色主题值 |
|---|---|---|
THEME_PRIMARY_TEXT | #25313b | #98a8bd |
THEME_BACKGROUND | #ffffff | #22272e |
THEME_HEADER_BACKGROUND | #25313b | #333a45 |
以下示例通过 docker-compose 部署界面和仓库,两者共享同一域名以规避 CORS 问题:
version: '3.8' services: registry-ui: image: joxit/docker-registry-ui:main restart: always ports: - 80:80 environment: - SINGLE_REGISTRY=true # 单仓库模式 - REGISTRY_TITLE=Docker Registry UI # 界面标题 - DELETE_IMAGES=true # 允许删除镜像 - NGINX_PROXY_PASS_URL=[***] # 代理仓库地址 - SHOW_CATALOG_NB_TAGS=true # 显示每个镜像的标签数量 container_name: registry-ui registry-server: image: registry:2.8.2 restart: always environment: # 配置 CORS,允许界面域名访问 REGISTRY_HTTP_HEADERS_Access-Control-Allow-Origin: '[[***]]' REGISTRY_HTTP_HEADERS_Access-Control-Allow-Methods: '[HEAD,GET,OPTIONS,DELETE]' REGISTRY_HTTP_HEADERS_Access-Control-Allow-Credentials: '[true]' REGISTRY_HTTP_HEADERS_Access-Control-Allow-Headers: '[Authorization,Accept,Cache-Control]' REGISTRY_STORAGE_DELETE_ENABLED: 'true' # 允许删除镜像 volumes: - ./registry/data:/var/lib/registry # 挂载仓库数据目录 container_name: registry-server
仓库需开启 CORS 以允许界面访问,配置方式如下:
无需认证的仓库:
http: headers: Access-Control-Allow-Origin: ['*'] # 允许所有域名
需要认证的仓库:
http: headers: Access-Control-Allow-Origin: ['[***]'] # 界面域名(含协议和端口) Access-Control-Allow-Credentials: [true] Access-Control-Allow-Headers: ['Authorization', 'Accept', 'Cache-Control']
若仍有 CORS 问题,可尝试浏览器插件临时绕过(详见 #25)。
需同时配置界面和仓库:
DELETE_IMAGES=true。storage: delete: enabled: true # 允许删除镜像 http: headers: Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE'] # 允许 DELETE 方法 Access-Control-Expose-Headers: ['Docker-Content-Digest'] # 暴露 digest 用于删除
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429