跳转至

Registry、标签与镜像发布

Registry 保存镜像,Repository 表示一个镜像仓库,Tag 是可变名称,Digest 是镜像内容的不可变标识。

registry.example.com/platform/order-service:1.4.0
└──── registry ────┘ └── repository ──┘ └tag┘

registry.example.com/platform/order-service@sha256:...
                                               └digest┘

登录、推送与拉取

docker login registry.example.com
docker tag order-service:1.4.0 \
  registry.example.com/platform/order-service:1.4.0
docker push registry.example.com/platform/order-service:1.4.0
docker pull registry.example.com/platform/order-service:1.4.0
docker image inspect registry.example.com/platform/order-service:1.4.0

CI 使用短期或项目级凭据,不共享个人管理员账号。docker login --password 会暴露在进程或历史中,自动化使用 --password-stdin 或 CI 原生凭据机制。

Tag 策略

建议同时推送:

1.4.0            人工可读的发布版本
git-3ac821f      对应提交的不可变构建标签
sha256:digest    实际内容标识

latest 只是普通可变标签,不表示最新、稳定或安全。生产部署至少固定版本标签,更严格时固定 Digest。重新推送同一个 Tag 会让不同主机拉到不同内容,破坏回滚和审计。

发布流水线

Git commit
  → 测试
  → BuildKit 构建
  → 漏洞/Secret/SBOM 检查
  → 推送 commit tag
  → 提升为 release tag
  → 部署清单引用版本或 digest

镜像只构建一次,在不同环境提升同一 Digest;不要在测试和生产分别重建“相同版本”,否则二进制内容可能不一致。

私有仓库与企业 CA

生产优先配置受信任 CA 和 TLS。不要为了省事长期使用 insecure-registries。证书故障检查 Registry 证书链、SAN、主机时间、代理和 Docker daemon 信任目录。修改 CA 后可能需要重启 Docker,并验证现有容器影响。

清理与保留

本地 docker image prune 只清主机缓存,不会清 Registry。Registry 需要独立定义保留策略:保护生产 Digest、保留最近版本、延迟删除未引用 Manifest,并在垃圾回收前备份和确认引用关系。

多架构镜像

docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t registry.example.com/platform/app:1.4.0 \
  --push .

多架构 Manifest 让客户端按主机架构选择镜像。构建后要分别验证 amd64/arm64 原生依赖,不要只验证 Manifest 存在。