企业级容器部署,离不开私有镜像仓库的安全托管和高效管理。本讲从镜像仓库的类型、Harbor 的安装部署、安全配置、权限控制到镜像清理策略,全面解析 Docker 镜像仓库管理的最佳实践!
一、镜像仓库的分类与角色
镜像仓库(Image Registry)是用于存储、管理、分发 Docker 镜像的服务,是 DevOps 和容器部署的核心组件。
1.1 公共镜像仓库
- Docker Hub(默认) :全球最大,免费但限速。
- GitHub Packages / GitLab Container Registry:适合项目集成。
- 阿里云、华为云、七牛云容器镜像服务:国内访问快。
1.2 私有镜像仓库
- Harbor:最成熟的企业级私有镜像仓库解决方案。
- Docker Registry:官方提供的简化版。
- JFrog Artifactory / Nexus:支持多种包管理。
二、Harbor:企业级私有镜像仓库首选
Harbor 是由 CNCF 托管的开源项目,具备如下能力:
| 功能模块 | 说明 |
|---|---|
| 镜像管理 | 支持命名空间、版本控制、标签 |
| 权限控制 | 项目级 RBAC 访问权限 |
| 镜像安全 | 漏洞扫描、镜像签名 |
| 审计日志 | 所有操作记录完整 |
| 镜像复制 | 支持多仓库镜像同步 |
| Web 界面 | 管理直观易用 |
三、Harbor 安装部署实战(Docker Compose)
3.1 安装准备
- 系统环境:建议使用 Ubuntu/CentOS
- 依赖组件:Docker ≥ 19.03,docker-compose ≥ 1.25
- 下载 Harbor:
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz
tar -zxvf harbor-offline-installer-v2.10.0.tgz
cd harbor
3.2 配置 harbor.yml
hostname: harbor.mycompany.com
http:
port: 80
# 若使用 HTTPS:
# https:
# port: 443
# certificate: ./cert/server.crt
# private_key: ./cert/server.key
harbor_admin_password: Harbor12345
data_volume: /data
3.3 安装启动 Harbor
./install.sh
启动后访问:
harbor.mycompany.com
四、Docker 客户端如何登录并推送镜像到 Harbor?
4.1 登录 Harbor
docker login harbor.mycompany.com
输入用户名密码即可。
4.2 推送镜像到 Harbor
docker tag myapp:latest harbor.mycompany.com/library/myapp:v1.0
docker push harbor.mycompany.com/library/myapp:v1.0
4.3 拉取镜像
docker pull harbor.mycompany.com/library/myapp:v1.0
五、镜像仓库权限与访问控制
Harbor 支持基于项目的 RBAC:
| 角色 | 权限说明 |
|---|---|
| Admin | 全局最高权限 |
| Project Admin | 管理指定项目成员、镜像 |
| Developer | 上传、更新、删除镜像 |
| Guest | 仅查看权限 |
企业部署建议:
- 禁止匿名拉取;
- 项目按团队维度隔离;
- 设置 webhook 进行 CI/CD 通知。
六、镜像安全:漏洞扫描与签名校验
6.1 漏洞扫描集成
Harbor 内置 Trivy 引擎,支持自动扫描上传镜像漏洞:
- 支持 CVE 查询与修复建议;
- 可设定自动拦截高危漏洞的镜像拉取;
- 支持与 CI 集成做安全门禁。
6.2 镜像签名:防止镜像被篡改
- 支持 Notary 镜像签名(Harbor v2 开始内建 Cosign 支持);
- 每次镜像上传前进行签名校验;
- 下载前可验证来源合法性。
七、镜像生命周期管理(清理旧镜像)
7.1 镜像标签策略
- 为镜像添加 tag:v1.0、latest、dev-202405;
- 通过 tag 管理版本发布;
- 避免过度保留 latest。
7.2 镜像清理策略
Harbor 支持「保留策略 + 手动/定时清理」:
- 规则设定:保留最近 10 个版本、最近 30 天使用过的镜像;
- 清理方式:后台定时任务 + 手动触发。
镜像清理策略逻辑图
八、Harbor 高可用部署简述(可选)
在生产环境建议:
- 使用 HTTPS 加密访问;
- 通过 Nginx/HAProxy 负载均衡;
- 后端存储挂载 NAS 或 S3;
- 使用数据库/Redis 做高可用持久化。
九、实践小结与最佳实践
| 操作 | 建议 |
|---|---|
| 基础仓库选择 | 推荐 Harbor |
| 镜像命名规范 | <仓库>/<项目>/<服务名>:<版本号> |
| 权限控制 | 基于项目授权、细化角色 |
| 安全配置 | 启用 HTTPS、签名、漏洞扫描 |
| 生命周期管理 | 配置自动清理与保留策略 |
| CI/CD 集成 | 配置 webhook,自动触发部署 |