引言
在容器化技术快速发展的今天,Docker已成为开发、测试和部署应用的标准工具。然而,随着项目规模的扩大,如何高效、安全地管理大量容器镜像成为开发者必须面对的问题。Harbor作为一款开源的企业级Docker镜像仓库管理工具,提供了镜像存储、访问控制、安全扫描等功能,能够有效解决这一痛点。本文将手把手教你从零开始搭建Docker+Harbor私有镜像仓库,并详细介绍镜像推送的全流程。
一、环境准备
1.1 服务器要求
- 操作系统:推荐使用CentOS 7/8或Ubuntu 18.04/20.04 LTS。
- 硬件配置:至少2核CPU、4GB内存、20GB磁盘空间(根据实际镜像存储需求调整)。
- 网络配置:确保服务器有稳定的公网或内网IP,且防火墙开放相关端口(如80、443、22等)。
1.2 软件依赖
- Docker:最新稳定版,用于运行Harbor容器。
- Docker Compose:用于定义和运行多个Docker容器的工具。
- Harbor:最新稳定版,可从官方GitHub仓库获取。
二、Docker安装与配置
2.1 安装Docker
以CentOS 7为例,执行以下命令安装Docker:
# 卸载旧版本(如果存在)sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine# 安装依赖sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 添加Docker官方仓库sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安装Docker CEsudo yum install -y docker-ce docker-ce-cli containerd.io# 启动Docker并设置开机自启sudo systemctl start dockersudo systemctl enable docker
2.2 验证Docker安装
sudo docker run hello-world
看到“Hello from Docker!”的输出,表示Docker安装成功。
三、Harbor安装与配置
3.1 下载Harbor
从Harbor官方GitHub仓库下载最新稳定版:
wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgztar xvf harbor-offline-installer-v2.5.0.tgzcd harbor
3.2 配置Harbor
编辑harbor.yml文件,修改以下关键配置:
# 主机名,需为服务器的IP或域名hostname: your-server-ip-or-domain# HTTP/HTTPS配置,生产环境建议使用HTTPShttps:# 证书路径(自签名证书需提前生成)certificate: /path/to/your/certificate.pemprivate_key: /path/to/your/private_key.pem# 管理员密码harbor_admin_password: Harbor12345# 数据库配置(默认使用内置数据库,生产环境建议外部数据库)database:password: root123# 其他数据库配置...# 存储驱动(默认使用filesystem,支持s3、swift等)storage_driver:name: filesystem# 其他存储配置...
3.3 安装Harbor
执行安装脚本:
sudo ./install.sh
安装完成后,访问https://your-server-ip-or-domain(如果是HTTP,则访问http://your-server-ip-or-domain),使用默认管理员账号admin和配置的密码登录。
四、Harbor安全设置
4.1 启用HTTPS
生产环境必须启用HTTPS以保障数据传输安全。自签名证书生成步骤如下:
# 生成私钥openssl genrsa -out private_key.pem 2048# 生成证书签名请求(CSR)openssl req -new -key private_key.pem -out csr.pem# 生成自签名证书(有效期365天)openssl x509 -req -days 365 -in csr.pem -signkey private_key.pem -out certificate.pem
将生成的certificate.pem和private_key.pem复制到Harbor配置文件中指定的路径,并重启Harbor服务。
4.2 访问控制
Harbor支持基于角色的访问控制(RBAC),可以创建项目、用户和角色,并分配不同的权限。在Web界面中,通过“系统管理”->“用户管理”和“项目管理”进行配置。
五、镜像推送全流程
5.1 登录Harbor
在需要推送镜像的Docker客户端上,执行以下命令登录Harbor:
docker login your-server-ip-or-domain
输入管理员账号或具有推送权限的账号密码。
5.2 标记镜像
将本地镜像标记为Harbor仓库中的镜像:
docker tag your-image-name:tag your-server-ip-or-domain/your-project-name/your-image-name:tag
例如:
docker tag nginx:latest your-server-ip-or-domain/myproject/nginx:latest
5.3 推送镜像
将标记后的镜像推送到Harbor仓库:
docker push your-server-ip-or-domain/your-project-name/your-image-name:tag
例如:
docker push your-server-ip-or-domain/myproject/nginx:latest
5.4 验证镜像
在Harbor Web界面中,进入对应的项目,查看已推送的镜像。
六、高级功能与优化
6.1 镜像复制
Harbor支持镜像复制功能,可以在不同的Harbor实例或Docker Registry之间同步镜像。通过“系统管理”->“复制管理”进行配置。
6.2 漏洞扫描
Harbor集成了Clair漏洞扫描工具,可以自动扫描上传的镜像中的安全漏洞。在项目设置中启用漏洞扫描功能。
6.3 性能优化
- 使用外部数据库:生产环境建议使用MySQL或PostgreSQL作为Harbor的数据库,以提高性能。
- 使用对象存储:对于大规模镜像存储,建议使用S3、Swift等对象存储服务。
- 负载均衡:对于高并发场景,可以使用Nginx或HAProxy进行负载均衡。
七、总结
本文详细介绍了Docker+Harbor私有镜像仓库的搭建与实战指南,从环境准备、Docker安装与配置、Harbor安装与配置、安全设置到镜像推送全流程,涵盖了Harbor使用的各个方面。通过搭建私有镜像仓库,开发者可以高效、安全地管理容器镜像,提高开发、测试和部署的效率。希望本文能对你有所帮助!