Harbor

IT
IT
IT
352
文章
1
评论
2020年5月13日15:47:40 评论 2,546 2482字阅读8分16秒
Harbor
harbor

Harbor 是一个CNCF基金会托管的开源的可信的云原生docker registry项目,可以用于存储、签名、扫描镜像内容,Harbor 通过添加一些常用的功能如安全性、身份权限管理等来扩展 docker registry 项目,此外还支持在 registry 之间复制镜像,还提供更加高级的安全功能,如用户管理、访问控制和活动审计等,在新版本中还添加了Helm仓库托管的支持。

Harbor最核心的功能就是给 docker registry 添加上一层权限保护的功能,要实现这个功能,就需要我们在使用 docker login、pull、push 等命令的时候进行拦截,先进行一些权限相关的校验,再进行操作,其实这一系列的操作 docker registry v2 就已经为我们提供了支持,v2 集成了一个安全认证的功能,将安全认证暴露给外部服务,让外部服务去实现。

Harbor 认证原理

上面我们说了 docker registry v2 将安全认证暴露给了外部服务使用,那么是怎样暴露的呢?我们在命令行中输入docker login https://registry.qikqiak.com为例来为大家说明下认证流程:

  • 1.docker client 接收到用户输入的 docker login 命令,将命令转化为调用 engine api 的 RegistryLogin 方法
  • 2.在 RegistryLogin 方法中通过 http 盗用 registry 服务中的 auth 方法
  • 3.因为我们这里使用的是 v2 版本的服务,所以会调用 loginV2 方法,在 loginV2 方法中会进行 /v2/ 接口调用,该接口会对请求进行认证
  • 4.此时的请求中并没有包含 token 信息,认证会失败,返回 401 错误,同时会在 header 中返回去哪里请求认证的服务器地址
  • 5.registry client 端收到上面的返回结果后,便会去返回的认证服务器那里进行认证请求,向认证服务器发送的请求的 header 中包含有加密的用户名和密码
  • 6.认证服务器从 header 中获取到加密的用户名和密码,这个时候就可以结合实际的认证系统进行认证了,比如从数据库中查询用户认证信息或者对接 ldap 服务进行认证校验
  • 7.认证成功后,会返回一个 token 信息,client 端会拿着返回的 token 再次向 registry 服务发送请求,这次需要带上得到的 token,请求验证成功,返回状态码就是200了
  • 8.docker client 端接收到返回的200状态码,说明操作成功,在控制台上打印Login Succeeded的信息

至此,整个登录过程完成,整个过程可以用下面的流程图来说明:

Harbor

安装 Harbor

  • 安装docker https://www.centoscn.vip/307.html
  • 安装docker-compose
[root@iZ2zei14p015t8wkktdhn2Z ~]#  yum -y install epel-release
[root@k8s-master1 ~]# yum install -y python36-setuptools
[root@k8s-master1 ~]# yum install -y python36-pip
[root@iZ2zei14p015t8wkktdhn2Z ~]# pip3 --default-timeout=200 install -U docker-compose
[root@iZ2zei14p015t8wkktdhn2Z ~]# docker-compose -version
docker-compose version 1.25.5, build unknown
  • 下载地址 https://github.com/goharbor/harbor/releases
[root@iZ0jl4dahgopddd1qnxqbtZ ~]# tar zxvf harbor-offline-installer-v1.10.6.tgz

安装harbor

  • 修改配置文件,这里注释了https,如有需要自行配置即可。
[root@iZ0jl4dahgopddd1qnxqbtZ harbor]# vim harbor.yml

hostname: harbor.centoscn.cn

# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80

# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /root/harbor/4907888_harbor.centoscn.cn.pem
private_key: /root/harbor/4907888_harbor.centoscn.cn.key
  • 安装
[root@iZ0jl3xai7zwgn20lo3qtuZ harbor]# ./install.sh
  • 安装成功后,可以通过 docker login 命令来测试仓库的连通性,看到如下字样即表示安装成功(也可以通过浏览器访问 Web UI):
[root@iZ0jl3xai7zwgn20lo3qtuZ harbor]# docker login harbor.centoscn.cn
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
  • 访问http://harbor.centoscn.cn

Harbor

  • 默认账号admin,默认密码Harbor12345

Harbor

 

 

 

下载信息
网盘密码:登录可见
下载地址:登录可见
继续阅读
  • 我的QQ
  • QQ扫一扫
  • weinxin
  • 我的头条
  • 头条扫一扫
  • weinxin
Docker 最后更新:2020-12-13
IT
  • 本文由 发表于 2020年5月13日15:47:40
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Docker部署Apollo Apollo

Docker部署Apollo

安装docker $ cd /opt/ $ sudo git clone --depth=1 https://github.com/cncentoscn/setuptools.git $ cd set...
Docker安装redis Docker

Docker安装redis

下载镜像 # docker pull redis 创建目录 # mkdir -p /home/redis/data # mkdir -p /home/redis/config 从 Redis 官方下载...
Centos8.1安装docker Docker

Centos8.1安装docker

yum方式安装 安装依赖 # yum install -y yum-utils device-mapper-persistent-data lvm2 添加仓库 # yum-config-manager...