Hlarbor
harbor是一个开源的云原生镜像仓库, 它允许仓库用户存储,使用docker镜像。可以将harbor看做是私有的dockerhub,它提供了更新安全性和控制性, 让组织能够安全的存储和管理镜像。
harbor RBAC:基于角色访问控制),可以对不同的用户和用户组进行灵活全向控制,并且提供灵活的复制和同步策略,可以实现多个barbor实例的镜像的复制和同步。
Hlarbor的构成
proxy:nginx的前端代理,数据发送请求,会把请求转发给后端。
registry:私有仓库,可以存储镜像,必须进行token认证才能使用。
认证方式有三种:令牌,用户密码和ss1。
Core services:提供图形化界面,可以实时获取image状态变化,提供token服务。
Database(harbor-db):数据库。
Job services:进行镜像复制。
Log collector:负责收集其他组件的操作日志。
Harbor 的每个组件都是以 Doker 容器的形式构建的,因此,使用 Docker Compose 来对它进行部署。总共分为7个容器运行。名称分别为:nginx、harbor-jobservice、harbor-ui、harbor-db、harbor-adminserver、registry、harbor-log。
Hlarbor工作流程
docker私有仓库的过程
1、所有的请求或认为的操作都会首先交给proxy (反向代理)。
2、proxy 会先请求转发给后端 core services。
3、core services包含 uI token(身份认证),webhook (网站的一些服务功能)。
4、转发给reqistry (镜像存储),若需要下载镜像等权限操作,需要通过core services中token令牌的身份验证服务才行。
5、每一次下载和上传都会产生操作记录,生成日志,保存在database中。
6、database 记录保存镜像元信息及用户与组的身份信息,通过验证授权才能允许相关操作。
Harbor 特性
基于角色访问控制
基于镜像的复制策略
支持 LDAP/AD
镜像删除和垃圾回收
支持图形化界面
审计管理
支持restful API
创建私有仓库
1、下载 registry 镜像
docker pull registry添加私有镜像仓库地址systemctl restart docker.service运行 registry 容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
为镜像打标签
docker tag centos:7 192.168.11.11:5000/centos:v1上传到私有仓库
docker push 192.168.11.11:5000/centos:v1列出私有仓库的所有镜像
curl http://192.168.11.11:5000/v2/_catalog出私有仓库的 centos 镜像有哪些tag
curl http://192.168.11.11:5000/v2/centos/tags/list删除原有的 centos 的镜像,再测试私有仓库下载
docker rmi -f 8652b9f0cb4c
docker pull 192.168.11.11:5000/centos:v1
部署 Harbor
下载或上传 Harbor 安装程序
wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgztar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/修改harbor安装的配置文件
vim /usr/local/harbor/harbor.cfg
--5行--修改,设置为Harbor服务器的IP地址或者域名
hostname = 192.168.10.23
--59行--指定管理员的初始密码,默认的用户名/密码是admin/Harbor12345
harbor_admin_password = Harbor12345
启动 Harbor
查看 Harbor 启动镜像
cd /usr/local/harbor/
docker-compose ps
浏览器访问:http://192.168.10.23 登录 Harbor WEB UI 界面,默认的管理员用户名和密码是 admin/Harbor12345
下载镜像进行测试
docker pull nginx将镜像打标签
格式:docker tag 镜像:标签 仓库IP/项目名称/镜像名:标签
docker tag nginx:latest 127.0.0.1/myproject-kgc/nginx:v1上传镜像到 Harbor
docker push 127.0.0.1/myproject-kgc/nginx:v1