Harbor 详细介绍
1、容器应用的开发和运行离不开可靠的镜像管理。从安全和效率等方面考虑,部署在私有环境内的 Registry 是非常必要的。
2、Harbor 是由 VMware 公司中国团队为企业用户设计的 Registry server 开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能,欢迎使用和反馈意见。
3、作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
1)基于角色的访问控制
用户与 Docker 镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
2)镜像复制
镜像可以在多个 Registry 实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
3)图形化用户界面
用户可以通过浏览器来浏览,检索当前 Docker 镜像仓库,管理项目和命名空间。
4)AD/LDAP 支持
Harbor 可以集成企业内部已有的 AD/LDAP,用于鉴权认证管理。
5)审计管理
所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
6)国际化
已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
7)RESTful API
RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。
8)部署简单
提供在线和离线两种安装工具, 也可以安装到 vSphere 平台(OVA 方式)虚拟设备
Harbor 架构介绍
Harbor在架构上主要由五个组件构成:
1、Proxy:
Harbor的registry, UI, token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。
2、Registry:
负责储存Docker镜像,并处理docker push/pull 命令。由于我们要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token, Registry会通过公钥对token 进行解密验证。
3、Core services:
这是Harbor的核心功能,主要提供以下服务:
1)UI:提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权。
2)webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块。
3)token 服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regi?stry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。
4、Database:
为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。
5、Log collector:
为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。
各个组件之间的关系如下图所示:
实验环境:
系统版本:centos7x3.10.0-514.el7.x86_64
Docker版本:1.13.1(yum安装)
harbor版本:harbor-offline-installer-v1.5.3.tgz(离线版)
注:由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0。
关闭防火墙并禁止开机自启
systemctl stop firewalld.service
systemctl disable firewalld
关闭selinux
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/sysconfig/selinux
重启 reboot
安装harbor
1、安装harbor依赖环境
1)安装docker
yum -y install docker
2)安装docker-compose
yum -y install docker-compose
2、下载离线安装包harbor-offline-installer-v1.5.3.tgz
1)使用下载命令wget或者aria2c下载harbor
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.3.tgz
2)解压harbor到本地
tar zxf harbor-offline-installer-v1.5.3.tgz
3)将解压目录移动到根下
mv harbor /
注:这一步操作是为了方便管理和防止误删除(可做可不做)!
3、添加CA证书
注:如果需要搭建基于https的harbor需要添加ca证书,如果搭建的是基于http可以跳过该步骤。
4、编辑harbor配置文件
1)编辑harbor.cfg文件
vi /harbor/harbor.cfg
#hostname设置访问地址。可以使用ip、域名、主机名,不可以设置为127.0.0.1或localhost。(如果部署的是备份库,填写ip而不是域名,否则会导致仓库管理连接失败,host无法识别原因不明)
hostname = bakreg.cn#访问协议。默认是http,如果搭建https的仓库就改为https。
ui_url_protocol = https#可选的https证书配置地址
ssl_cert = /root/cert/bakreg.cn.crt
ssl_cert_key = /root/cert/bakreg.cn.key#用于在复制策略中加密或解密远程注册表的密码的密钥路径。secretkey_path不需要修改。如果必须修改它,你需要在/root/harbor/docker-compose.yml中手动调整路径,因为它们是硬编码。
secretkey_path = /data#邮件设置,发送重置密码邮件时使用
#email_identity作为用户名
email_identity =
email_server = 邮箱的smtp服务器域名
email_server_port = 25
email_username =
email_password =
email_from =
email_ssl = false
email_insecure = false#管理员admin的登录密码。默认是Harbor12345
harbor_admin_password = Harbor12345#认证方式。默认是db_auth,支持多种认证方式,如数据库认证(db_auth)、LADP(ldap_auth)。
auth_mode = db_auth#LDAP认证时配置项(这项可以登录后配置也可以)。
ldap_url = # LDAP URL
ldap_searchdn = # LDAP 搜索DN
ldap_search_pwd = # LDAP 搜索DN的密码
ldap_basedn = # LDAP 基础DN
ldap_filter = # LDAP 过滤器
ldap_uid = # LDAP 用户uid的属性
ldap_scope = 2
ldap_timeout = 5#是否开启注册。on开启,off关闭。
self_registration = off#Token有效时间。默认30分钟。
token_expiration = 30#标记用户创建项目权限控制。默认是everyone(允许所有人创建),也可以设置为adminonly(只能管理员才能创建)
project_creation_restriction = everyone
注:暂时先更改这一行即可启动,其他功能按照需求更改!
5、启动harbor服务
1)进入harbor解压目录
cd /harbor/
2)启动harbor服务
./install.sh
3)harbor的启动和关闭方式
//关闭harbor服务(先进入harbor目录)
docker-compose stop
//开启harbor服务(先进入harbor目录)
docker-compose up -d
6、验证harbor服务是否正常运行
1)访问地址:http://192.168.150.199
2)使用默认用户密码登陆
注:默认的用户名admin,密码Harbor12345。
7、基于http协议的harbor上传下载镜像
1)docker登陆harbor
docker login 192.168.150.199
2)为镜像打标记
docker tag 原镜像名 192.168.150.199/项目名/打标记的镜像名
注:如果是普通用户推送镜像,切记需要普通用户先自己创建项目,不然上传给默认的library项目没有权限,只有admin用户有推送library项目的权利。
3)推送镜像到harbor仓库
docker push 192.168.150.199/项目名/打标记的镜像名
注:如果是普通用户推送镜像,那么以上的library项目名换成自己的项目名即可!
4)拉取镜像
//删除打标记的镜像
docker rmi -f 192.168.150.199/library/tomcat:v1
//拉取仓库的tomcat镜像
docker pull 镜像的完整路径
注:以上截图可能有的童鞋会问,不需要docker login IP登陆吗?首先我可以告诉你:可以用,也可以不用。其次如果你要是觉得需要用户密码下载,那么可以在harbor的项目上设置不公开即可实现用户密码下载;也可能有童鞋会说不用不够安全啥的,其实你完全不必担心,因为需要完整路径才能下载,而且这个镜像仓库是在内网,说白知道的都是公司的同事。如果不知道怎么填写完整路径,下载镜像的,那么就登录上网页harbor,然后点击你要下载的那个镜像后边pull命令提醒,例如:
5)docker退出harbor登陆
docker logout harbor的IP
8、基于https协议的harbor上传下载镜像
注:由于我使用的是http协议,所以这步就没有测试!如果想使用https协议
推荐文章https://www.cnblogs.com/straycats/p/8850693.html
原文地址:http://blog.51cto.com/13043516/2287267