目录git
1、安装底层需求github
2、Harbor 安装:docker
一、下载Harbor数据库
二、解压json
四、建立 https 证书以及配置相关目录权限 证书以及配置相关目录权限 bash
五、运行脚本进行安装服务器
六、访问测试网络
七、上传镜像进行上传测试 架构
1、安装底层需求
- Python应该是 应该是2.7或更高版本 或更高版本
- Docker引擎应为 引擎应为1.10或更高版本 或更高版本
- Docker Compose须要为 须要为1.6.0或更高版本
docker-compose: :curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2、Harbor 安装:
安装:Harbor 官方地址: 官方地址:https://github.com/vmware/harbor/releases
一、下载Harbor
wget https://github.com/vmware/harbor/releases/download/v1.2.0/harbor-offline-installer-v1.2.0.tgz
二、解压
tar xvf harbor-offline-installer-v1.2.0.tgz
三、配置 harbor.cf
a、必选参数
- hostname:目标的主机名或者彻底限定域名
- ui_url_protocol:http或https。默认为 http
- db_password:用于 db_auth的MySQL数据库的根密码。更改此密码进行任何生产用途
- max_job_workers:(默认值为 3)做业服务中的复制工做人员的最大数量。对于每一个映像复制做业, 工做人员将存储库的全部标签同步到远程目标。增长此数字容许系统中更多的并发复制做业。可是,因为每一个工做人员都会消耗必定数量的网络 / CPU / IO资源,请根据主机的硬件资源,仔细选择该属性的值
- customize_crt:( on或off。默认为 on)当此属性打开时, prepare脚本将为注册表的令牌的生成 /验证创建私钥和根证书
- ssl_cert:SSL证书的路径,仅当协议设置为 https时才应用
- ssl_cert_key: :SSL密钥的路径,仅当协议设置为 密钥的路径,仅当协议设置为https时才应用
- secretkey_path:用于在复制策略中加密或解密远程注册表的密码的密钥路径
四、建立 https 证书以及配置相关目录权限 证书以及配置相关目录权限
openssl genrsa -des3 -out server.key 2048 openssl req -new -key server.key -out server.csr cp server.key server.key.org openssl rsa -in server.key.org -out server.key openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt mkdir /data/cert chmod -R 777 /data/cert
五、运行脚本进行安装
./install.sh
六、访问测试
访问测试 https://reg.yourdomain.com 的管理员门户(将 的管理员门户(将reg.yourdomain.com更改成您的主机名 更改成您的主机名harbor.cfg)。请注意,默 )。请注意,默认管理员用户名 认管理员用户名/密码为 密码为admin / Harbor12345

七、上传镜像进行上传测试
a、指定镜像仓库地址 vim /etc/docker/daemon.json { "insecure-registries": ["serverip"] }
b、下载测试镜像 docker pull hello-world
c、给镜像从新打标签 docker tag hello-world serverip/hello-world:latest
d、登陆进行上传 docker login serverip
8、其它 Docker 客户端下载测试
a、指定镜像仓库地址 vim /etc/docker/daemon.json { "insecure-registries": ["serverip"] }
b、下载测试镜像 docker pull serverip/hello-world:latest
3、Harbor 原理说明
一、软件资源介绍
Harbor是VMware公司开源的企业级 DockerRegistry项目,项目地址为 https://github.com/vmware/harbor。其目
标是帮助用户迅速搭建一个企业级的 Dockerregistry服务。它以 Docker公司开源的 registry为基础,提供了管理 UI,
基于角色的访问控制 (Role Based Access Control),AD/LDAP集成、以及审计日志 (Auditlogging) 等企业用户需求的功
能,同时还原生支持中文。 Harbor的每一个组件都是以 Docker容器的形式构建的,使用 Docker Compose来对它进行部
署。用于部署 Harbor的Docker Compose模板位于 /Deployer/docker-compose.yml,由 5个容器组成,这几个容器经过
Docker link的形式链接在一块儿,在容器之间经过容器名字互相访问。对终端用户而言,只须要暴露 proxy ( 即
Nginx)的服务端口
- Proxy:由Nginx 服务器构成的反向代理。
- Registry:由Docker官方的开源 registry 镜像构成的容器实例。
- UI:即架构中的 core services, 构成此容器的代码是 Harbor项目的主体。
- MySQL:由官方 MySQL镜像构成的数据库容器。
- Log:运行着 rsyslogd的容器,经过 log-driver的形式收集其余容器的日志
二、Harbor特性
- a、基于角色控制:用户和仓库都是基于项目进行组织的, 而用户基于项目能够拥有不一样的权限
- b、基于镜像的复制策略:镜像能够在多个Harbor实例之间进行复制
- c、支持LDAP:Harbor的用户受权可使用已经存在LDAP用户
- d、镜像删除 &垃圾回收:Image能够被删除而且回收Image占用的空间,绝大部分的用户操做API, 方便 用户对系统进行扩展
- e、用户UI:用户能够轻松的浏览、搜索镜像仓库以及对项目进行管理
- f、轻松的部署功能:Harbor提供了online、offline安装,除此以外还提供了virtualappliance安装
- g、Harbor和 dockerregistry 关系:Harbor实质上是对 dockerregistry 作了封装,扩展了本身的业务模块
三、Harbor认证过程
- a、dockerdaemon从dockerregistry拉取镜像。
- b、若是dockerregistry须要进行受权时,registry将会返回401 Unauthorized响应,同时在响应中包含了docker
- client如何进行认证的信息。
- c、dockerclient根据registry返回的信息,向authserver发送请求获取认证token。
- d、authserver则根据本身的业务实现去验证提交的用户信息是否存符合业务要求。
- e、用户数据仓库返回用户的相关信息。
- f、authserver将会根据查询的用户信息,生成token令牌,以及当前用户所具备的相关权限信息.上述就是 完整的受权过程.当用户完成上述过程之后即可以执行相关的pull/push操做。认证信息会每次都带在请求头中
Harbor总体架构
四、Harbor认证流程
- a、首先,请求被代理容器监听拦截,并跳转到指定的认证服务器。
- b、 若是认证服务器配置了权限认证,则会返回401。通知dockerclient在特定的请求中须要带上一个合法的 token。而认证的逻辑地址则指向架构图中的core services。
- c、 当dockerclient接受到错误code。client就会发送认证请求(带有用户名和密码)到coreservices进行basic auth认证。
- d、 当C的请求发送给ngnix之后,ngnix会根据配置的认证地址将带有用户名和密码的请求发送到core serivces。
- e、 coreservices获取用户名和密码之后对用户信息进行认证(本身的数据库或者介入LDAP均可以)。成功以 后,返回认证成功的信息
Harbor认证流程