一、引言:为何需要私有镜像仓库?
在容器化部署日益普及的今天,Docker已成为开发、测试和运维的标准工具。然而,使用公共镜像仓库(如Docker Hub)存在安全隐患、网络依赖及速率限制等问题。私有镜像仓库不仅能提升安全性,还能加速内部镜像分发,尤其适合企业级开发场景。本文将通过Docker+Harbor组合,手把手教你搭建私有镜像仓库,并完成镜像的推送与拉取。
二、环境准备:前置条件与工具安装
1. 服务器要求
- 操作系统:推荐CentOS 7/8或Ubuntu 20.04 LTS。
- 硬件配置:至少2核CPU、4GB内存、20GB磁盘空间(根据镜像数量调整)。
- 网络要求:开放80(HTTP)、443(HTTPS)、22(SSH)端口。
2. 安装Docker
Harbor依赖Docker运行,需先安装Docker引擎:
# CentOS 7示例sudo yum install -y yum-utilssudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install docker-ce docker-ce-cli containerd.iosudo systemctl enable --now docker
验证安装:
docker --version
3. 安装Docker Compose
Harbor通过Docker Compose部署,需安装v1.29+版本:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose
验证安装:
docker-compose --version
三、Harbor安装与配置:从下载到启动
1. 下载Harbor安装包
访问Harbor官方GitHub,选择最新稳定版(如v2.9.0),下载离线安装包:
wget https://github.com/goharbor/harbor/releases/download/v2.9.0/harbor-offline-installer-v2.9.0.tgztar xvf harbor-offline-installer-v2.9.0.tgzcd harbor
2. 配置Harbor
编辑harbor.yml文件,关键配置项如下:
hostname: reg.yourdomain.com # 替换为实际域名或IPhttp:port: 80https:certificate: /path/to/cert.pem # HTTPS证书路径(可选)private_key: /path/to/key.pemharbor_admin_password: Harbor12345 # 默认管理员密码database:password: root123 # 数据库密码
注意事项:
- 若使用HTTPS,需提前准备SSL证书(如Let’s Encrypt免费证书)。
- 生产环境建议修改默认密码并启用HTTPS。
3. 运行安装脚本
执行以下命令启动Harbor:
sudo ./install.sh
安装完成后,访问http://<hostname>,使用默认账号admin和密码Harbor12345登录。
四、实战操作:镜像推送与拉取
1. 登录Harbor仓库
在本地Docker环境登录Harbor:
docker login reg.yourdomain.com
输入用户名(如admin)和密码。
2. 标记并推送镜像
以推送nginx镜像为例:
# 拉取官方镜像docker pull nginx:latest# 标记镜像(替换为实际Harbor地址)docker tag nginx:latest reg.yourdomain.com/library/nginx:v1# 推送镜像docker push reg.yourdomain.com/library/nginx:v1
常见问题:
- 若推送失败,检查防火墙是否放行端口,或确认Harbor服务是否正常运行。
- 镜像命名需遵循
<harbor_addr>/<project>/<image>:<tag>格式。
3. 从Harbor拉取镜像
在其他机器拉取镜像:
docker login reg.yourdomain.comdocker pull reg.yourdomain.com/library/nginx:v1
五、高级功能:项目管理与用户权限
1. 创建项目
登录Harbor Web界面,点击新建项目,输入项目名(如dev-team),选择访问级别(公开/私有)。
2. 添加用户与分配角色
- 用户管理:在系统管理→用户中添加用户,设置密码。
- 角色分配:在项目→成员中添加用户,分配角色(如
开发者可推送镜像,访客仅可拉取)。
3. 机器人账号(Robot Account)
为CI/CD流水线创建机器人账号:
- 在项目设置中生成机器人账号。
- 使用生成的账号和Token登录Docker:
docker login reg.yourdomain.com --username=<robot_name> --password=<token>
六、维护与优化:备份与性能调优
1. 数据备份
Harbor数据存储在/data目录,定期备份:
sudo tar -czvf harbor_backup_$(date +%Y%m%d).tar.gz /data
2. 性能优化
- 存储驱动:根据需求选择
overlay2或devicemapper。 - 资源限制:在
docker-compose.yml中调整core、registry等服务的CPU/内存限制。
七、总结:私有镜像仓库的价值
通过Docker+Harbor搭建私有镜像仓库,开发者可实现:
- 安全可控:避免敏感镜像泄露。
- 高效分发:内部网络加速镜像拉取。
- 灵活管理:支持多项目、多用户权限控制。
下一步建议:
- 集成CI/CD工具(如Jenkins、GitLab CI)实现自动化镜像构建与推送。
- 探索Harbor的复制功能,实现多地域镜像同步。
本文从环境准备到实战操作,完整覆盖了Harbor私有仓库的搭建流程。按步骤操作,你将在1小时内完成部署并推送首个镜像!