Docker KubernetesNotes

第 08 章:镜像仓库与安全

zjc 于 2026-01-08 发布

这是《Docker 与 Kubernetes 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 镜像仓库是软件供应链的核心节点。生产要控制镜像来源、版本、签名、扫描、账号和同步策略。

8.1 常见仓库

类型 示例
公共仓库 Docker Hub
云厂商仓库 各云容器镜像服务
私有仓库 Harbor、Registry
CI 内部缓存 构建缓存仓库

私有 Harbor 常提供项目管理、复制、扫描、签名和审计能力。

8.2 镜像命名

registry.example.com/team/service:version
registry.example.com/team/service@sha256:digest

建议:

  1. 使用团队 / 服务层级;
  2. tag 包含版本或 Git SHA;
  3. 生产部署引用摘要或不可变 tag;
  4. 不复用已推送 tag;
  5. 禁止生产使用 latest。

8.3 登录与推送

docker login registry.example.com
docker build -t registry.example.com/shop/order-service:1.2.0 .
docker push registry.example.com/shop/order-service:1.2.0

凭据应从 CI Secret 或密钥管理系统注入,不写入脚本。

8.4 漏洞扫描

trivy image registry.example.com/shop/order-service:1.2.0

治理策略:

  1. 构建时扫描;
  2. 阻断高危漏洞;
  3. 定期重扫存量镜像;
  4. 跟踪基础镜像更新;
  5. 记录豁免原因和期限。

8.5 内容信任与签名

镜像签名用于确认镜像来源和内容未被篡改。常见能力包括 Notary、Cosign 和仓库策略。落地时要与 Kubernetes 准入策略配合,未签名镜像不允许部署。

8.6 仓库运维

必须规划:

  1. 存储容量和增长;
  2. GC 策略;
  3. 多机房同步;
  4. 备份恢复;
  5. 拉取限流;
  6. 审计日志;
  7. 账号权限;
  8. 证书和域名。

8.7 供应链安全流程

代码提交
  -> CI 构建不可变镜像
  -> 单元测试和安全扫描
  -> 镜像签名
  -> 推送私有仓库
  -> 准入校验
  -> 部署生产

本章小结

镜像仓库不只是存储镜像。生产需要不可变版本、漏洞扫描、签名校验、权限控制和容量治理,把供应链安全嵌入构建和发布流程。

思考题

  1. 为什么生产要使用不可变 tag 或摘要?
  2. 漏洞扫描为什么需要定期重扫?
  3. 镜像签名解决什么问题?
  4. 私有仓库如何做高可用?
  5. 如何阻断未签名镜像部署?