一,简介
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,可以用来构建企业内部的Docker镜像仓库。它在Docker的开源项目 Distribution的基础上,添加了一些企业需要的功能特性,如镜像同步复制、漏洞扫描和权限管理等。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
Harbor组件
Harbor在架构上主要由以下组件构成:
Proxy:Harbor的registry, UI, token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。
Registry: 负责储存Docker镜像,并处理dockerpush/pull 命令。由于我们要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token,Registry会通过公钥对token 进行解密验证。
Core services: 这是Harbor的核心功能,主要提供以下服务:
UI:提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权
webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块。
token服务:负责根据用户权限给每个docker push/pull命令签发token.Docker 客户端向Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。
Database:为coreservices提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。
Job Services:提供镜像远程复制功能,可以把本地镜像同步到其他Harbor实例中。
Log collector:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。
这几个容器通过 Docker link 的形式连接在一起,这样,在容器之间可以通过容器名字互相访问。对终端用户而言,只需要暴露 proxy (即 Nginx)的服务端口。
二,部署二、部署Harbor服务
1、下载 Harbor 安装程序
[root@docker ~]#tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/ //包需上传
[root@docker ~]# chmod +x docker-compose
[root@docker ~]# cp docker-compose /usr/local/bin //docker-compose需上传
[root@docker ~]# docker-compose -v
2.配置 Harbor参数文件
vim /usr/local/harbor/harbor.cfg
1
5 hostname = 192.168.189.15
3.启动 Harbor
sh /usr/local/harbor/install.sh
[root@docker harbor]# docker-compose p
4.打开浏览器访问
访问http://192.168.189.15的管理页面,默认的管理员用户名和密码是admin/Harbor123456
5.创建项目
登录
[root@docker docker]# docker login -u admin -p Harbor12345 http://127.0.0.1
下载镜像进行测试
[root@docker docker]# docker pull cirros
镜像打标签
[root@docker docker]# docker tag cirros:latest 127.0.0.1/my-project/cirros:v1
上传镜像到Habbor
[root@docker docker]# docker push 127.0.0.1/my-project/cirros:v1
[root@docker docker]# vim /usr/lib/systemd/system/docker.service
维护管理Harbor
#卸载
docker-compose down -v
#编辑配置文件
vim harbor.cfg
#填充配置
./prepare
#启动Harbor
docker-compose up -d
6、创建Harbor用户
添加成员