当前位置: 首页 > news >正文

Dockery:一个容器跑起来,就是你的私有 Docker Registry

横向对比

distributionHarborDockery
Web 管理界面
账户 / 角色htpasswd(平权)LDAP / OIDC / SSO 全家桶三档角色 + glob 仓库模式
需要起的容器数110+1
外部依赖Postgres + Redis + 多组件
备份一个目录多库多卷一个/data目录
多架构镜像自己打官方提供amd64 + arm64 官方
从零到可用装完还得自研 UI半天起几分钟

对用户来说,实际体验是这样

有个网页。浏览器打开就看到所有仓库、每个仓库的 tag、每个 tag 的大小和层信息。不用再curl /v2/_catalog然后自己串 JSON。

账号是账号,不是一张 htpasswd。admin 在 Manage Users 页面里点一下就能新建账号、分配角色,给write/view用户发放像team-a/*,shared/app这样的 glob 仓库模式 —— 精细到项目组,不再"要么全给、要么不给"。

UI 与 CLI 共用同一套授权。某个用户在网页里看不到的仓库,他用docker pull也拉不到。没有"UI 过滤了但 CLI 能直连"的错位。

改密不用登机器。UI 里改、或者一条docker exec ... dockery-api user passwd alice就行,不必 SSH 上去改 htpasswd 再 reload。

搬家就 tar 一下。所有状态 —— 镜像 blob、用户表、审计日志、JWT 私钥 —— 都在/data下。整包 tar 出来,换台机器解压启动,全部带过去。

ARM 机器能跑。官方镜像同时出linux/amd64linux/arm64,Apple Silicon 服务器、Raspberry Pi、各家云的 Graviton 实例都直接拉。

装起来是真的一条命令

docker run -d --name dockery --restart unless-stopped \ -p 5000:5000 \ -v /srv/dockery:/data \ -e DOCKERY_ADMIN_PASSWORD='change-me' \ -e REGISTRY_AUTH_TOKEN_REALM='http://registry.example.com:5000/token' \ ghcr.io/bizjs/dockery:latest

浏览器开http://registry.example.com:5000,用admin / change-me登录,新建账号,然后在客户端:

docker login registry.example.com:5000 docker tag myapp registry.example.com:5000/team-a/myapp:0.1.0 docker push registry.example.com:5000/team-a/myapp:0.1.0

纯 HTTP 场景要把registry.example.com:5000加进客户端daemon.jsoninsecure-registries;前面挂 Caddy / Traefik 做 TLS 终结就不用这步。

技术选型里几个关键决定

  • registry 协议用官方distribution/distributionv3.1.0,不是自己写一份兼容实现;协议可靠性上限和社区一致。
  • 账户模块是 Go + SQLite(纯 Go 驱动,零 CGO),单一静态二进制,没 daemon 要起,备份只是一个.db文件。
  • Docker CLI 认证走 Ed25519 + JWKS 的短命 JWT(5 分钟),registry 在线验签。相比"共享 htpasswd"的做法,新增或吊销用户不需要重启 registry,签发记录还能落审计。

完整设计见 docs/dockery-design.md。

不做什么

v0.1 明确不做的东西:镜像扫描、cosign 验签、跨机复制、HA、多租户。每一项都会把"单容器 + 本地盘"这个边界打破 —— 需要这些请上 Harbor,Dockery 不跟它抢场景。

适合的使用场景

  • 3~30 人内部/项目组 registry
  • CI/CD 产物仓,镜像不出内网
http://www.jsqmd.com/news/1106363/

相关文章:

  • GitHub 53K Star 爆款:不用 JS 逆向,7 大平台数据一把抓
  • 2026 跨境云网融合服务商榜单:海外企业组网与安全运维推荐
  • 企业微信二次开发中的定期对账机制
  • 墨香情手游官方下载:重拾纯粹武侠情怀开启全新快意恩仇江湖征途
  • 2026年AIGC检测怎么过?5大检测平台对比+AI痕迹降低实战指南
  • ICM-42688-P与PIC18F4553在机器人控制与工业监测中的应用
  • 类比StandardServer, 抓住StandardService整体类依赖结构来理解
  • Better BibTeX架构解析:为LaTeX用户打造的企业级文献管理解决方案
  • 【节点】[Clamp节点]原理解析与实际应用
  • Kubernetes 核心机制与运维实践知识精要
  • 别折腾了!3步教你用标准 API 调通企业微信外部群机器人
  • Python 最大冤案:你以为 `await` 在“死等”?它其实在
  • 如何轻松地从 iPhone 备份恢复 iPad?
  • 任务计划程序不显示后边的信息
  • 墨香情手游官方下载:均衡稳定经济生态适配养老休闲打金玩家群体
  • 张鹏翔在AI营销实战方法论沙龙上详解智能体如何助力企业长效流量增长
  • Apache SeaTunnel 搞定瀚高数据库读写一把过
  • SPI EEPROM与MCU高速数据检索方案解析
  • 如何把报告错误消灭在出稿前?AI报告审核结合IACheck实现前置校验
  • 好用还专业!盘点2026年最强的的降AI率软件
  • 别再建一个无人问津的知识库:用AI原生平台打造活文档系统
  • CSS定位:relative、absolute、fixed、sticky
  • 2024年南安多功能太阳能路灯选购指南:3招教你挑对好产品
  • LTE Cat 1bis模组LEXI-R10401D与PIC18F96J94的物联网开发实践
  • 终极免费微信网页版插件:5分钟实现跨设备聊天自由
  • 学无止境--linux 注册虚拟网卡将SDK(厂商)上送至CPU的报文注入协议栈
  • LV3296与dsPIC30F3014在工业数据采集中的高效应用
  • ROS2基本操作指令:从“节点”到“机器人”的完整工具箱
  • SickOs-1.1靶机渗透
  • 墨香情手游官方下载:2026 国风武侠手游优选正版高速官方下载通道