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 策略¶
建议同时推送:
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 存在。