私有仓库 Harbor 的搭建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了私有仓库 Harbor 的搭建相关的知识,希望对你有一定的参考价值。
私有仓库 Harbor 的搭建一、Harbor简介
虽然Docker官方提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。
Harbor是由VMware公司开源的企业级的Docker Registry管理项目,相比docker官方拥有更丰富的权限权利和完善的架构设计,适用大规模docker集群部署提供仓库服务。
它主要提供 Dcoker Registry 管理界面UI,可基于角色访问控制,镜像复制, AD/LDAP 集成,日志审核等功能,完全的支持中文。
二、Harbor 的主要功能
1.基于角色的访问控制:
用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
2.基于镜像的复制策略:
镜像可以在多个Registry实例中复制(可以将仓库中的镜像同步到远程的Harbor,类似于mysql主从同步功能),尤其适合于负载均衡,高可用,混合云和多云的场景。
3.图形化用户界面:
用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。
4.支持 AD/LDAP:
Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
5.镜像删除和垃圾回收:
Harbor支持在Web删除镜像,回收无用的镜像,释放磁盘空间。image可以被删除并且回收image占用的空间。
6.审计管理:
所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
7.RESTful API:
RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。
8.部署简单:
提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备。
Harbor 的所有组件都在 Docker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。
注意: 由于 Harbor 是基于 Docker Registry V2 版本,所以 docker 版本必须 > = 1.10.0 docker-compose >= 1.6.0
三、Harbor 架构组件
1. Proxy:对应启动组件nginx。它是一个nginx反向代理,代理Notary client(镜像认证)、Docker client(镜像上传下载等)和浏览器的访问请求(Core Service)给后端的各服务;
2. UI(Core Service):对应启动组件harbor-ui。底层数据存储使用mysql数据库,主要提供了四个子功能:
Registry:对应启动组件registry。负责存储镜像文件,和处理镜像的pull/push命令。Harbor对镜像进行强制的访问控制,Registry会将客户端的每个pull、push请求转发到token服务来获取有效的token。
UI:一个web管理页面ui;
API:Harbor暴露的API服务;
Auth:用户认证服务,decode后的token中的用户信息在这里进行认证;auth后端可以接db、ldap、uaa三种认证实现;
Token服务(上图中未体现):负责根据用户在每个project中的role来为每一个docker push/pull命令issuing 一个token,如果从docker client发送给registry的请求没有带token,registry会重定向请求到token服务创建 token。
3. Admin Service:对应启动组件harbor-adminserver。是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候需要加载adminserver的配置;
4. Job Sevice:对应启动组件harbor-jobservice。负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log;
5. Log Collector:对应启动组件harbor-log。日志汇总组件,通过docker的log-driver把日志汇总到一起;
6. Volnerability Scanning:对应启动组件clair。负责镜像扫描
7. Notary:对应启动组件notary。负责镜像认证
8. DB:对应启动组件harbor-db,负责存储project、 user、 role、replication、image_scan、access等的metadata数据。
四、Harbor 部署
4.1、环境准备
// harbor 服务端,用于搭建私有仓库
192.168.66.138 docker-ce、docker-compose(必须安装)、Harbor
// client 客户端,用于远程访问
192.168.66.129 docker-ce
4.2、在harbor 服务端(安装compose 和 harbor)
【1】先部署Docker,网络优化,镜像加速
【2】部署 compose//在线下载docker-compose包
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
cp -p docker-compose /usr/local/bin/
docker-compose -v //可以看到版本信息
【3】 安装 Harbot程序
// 在线下载harbor安装包
wget http:// harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
// 解压
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
【4】配置 Harbot 参数文件
vim /usr/local/harbor/harbor.cfg
hostname = 192.168.66.138 //改为自己服务端本地的IP地址
【5】启动 Harbot
sh /usr/local/harbor/install.sh
【6】查看 Harbot 启动镜像
// 查看镜像
docker images
// 查看容器
docker ps -a
// 也可用docker-compose ps查看容器状态,但是需要在/usr/local/harbor工作目录下执行,不然会报错。
docker-compose ps // 可以看到安装了7个容器
【7】验证
// http://192.168.66.138 的管理页面
// 默认的管理员用户名和密码是 admin/Harbor12345
// 在网页harbor上新建一个私有项目myproject,用来测试上传、下载镜像
在网页harbor上新建一个私有项目myproject,用来测试上传、下载镜像
【8】登录harbor的字符界面
docker login -u admin -p Harbor12345 http://127.0.0.1/
// 下载镜像进行测试
docker pull cirros
// 镜像打标签
docker tag cirros 127.0.0.1/myproject/cirros:v1
// 上传镜像到Harbor
docker push 127.0.0.1/myproject/cirros:v1
在UI界面可以看到刚刚上传的镜像
4.3、客户端远程访问管理 harbor
// 先部署Docker,网络优化,镜像加速
【1】必须要先指定私有仓库的地址
vim /usr/lib/systemd/system/docker.service
// 14行修改添加,将私有仓库地址添加上去。
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.66.138
--containerd=/run/containerd/containerd.sock
// 重启服务
systemctl daemon-reload
systemctl restart docker.service
// 远程就可以登录
docker login -u admin -p Harbor12345 http://192.168.66.138
【2】下载私有仓库
// 下载私有仓库的镜像
docker pull 192.168.66.138/myproject/cirros:v1
【3】上传镜像到私有仓库
// 先从官方仓库下载nginx镜像
docker pull nginx
// 给nginx镜像打标签
docker tag nginx:latest 192.168.66.138/myproject/nginx:v2
// 上传镜像到私有仓库
docker push 192.168.66.138/myproject/nginx:v2
【4】验证
// 在 harbor 界面验证镜像是否上传到私有仓库。
总结
在搭建过程中,要注意客户端远程登录私有仓库时,必须先在docker.service文件里指明仓库地址,然后加载并重启docker,之后才能登录。
五、Harbor 管理维护
5.1、修改 Harbor.cfg 配置文件
// 更改 Harbour 的配置文件时,请先停止现有的 Harbour 实例并更新 Harbor.cfg;然
后运行 prepare 脚本来填充配置;最后重新创建并启动 Harbour 的实例。
// 在 Harbor服务器上修改
【1】 关闭所有容器
cd /usr/local/harbor
docker-compose down -v
【2】修改参数文件
cd /usr/local/harbor
vim harbor.cfg // 修改配置参看实际需求
【3】重新加载配置文件,重启服务
//目录下有prepare脚本,下一步执行
./prepare
systemctl restart docker // 重启docker服务
docker-compose up -d // 启动容器服务
【4】去harbor界面,创建新用户:test-wanglu,稍后使用
在客户端,使用新用户远程登录harbor,来进行下载和上传镜像
【1】使用新用户远程登录harbor,来进行下载和上传镜像
// 首先退出已登陆的账号
docker logout http://192.168.66.138
// 使用新的账户登录
docker login http://192.168.66.138
【2】下载 harbor 仓库内的镜像
docker pull 192.168.66.138/myproject/cirros:v1
【3】 上传镜像
// 改成私有仓库的专有标签
docker tag nginx:latest 192.168.66.138/myproject/nginx:v1
// 上传镜像到私有仓库
docker push 192.168.66.138/myproject/nginx:v1
查看UI界面显示上传成功!
以上是关于私有仓库 Harbor 的搭建的主要内容,如果未能解决你的问题,请参考以下文章
Docker------搭建本地私有仓库及Horbor私有仓库