Harbor

IT
IT
IT
405
文章
1
评论
2020年5月13日15:47:40 评论 6,234 4123字阅读13分44秒
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@harb ~]# curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[root@harb ~]# chmod +x /usr/local/bin/docker-compose
[root@harb ~]# docker-compose -version
docker-compose version 1.24.0, build 0aa59064
  • 下载地址 https://github.com/goharbor/harbor/releases
[root@iZ0jl4dahgopddd1qnxqbtZ ~]# tar zxvf harbor-offline-installer-v2.2.0.tgz

生成私有证书

[root@iZ0jl4dahgopddd1qnxqbtZ ~]# mkdir -p certs
[root@iZ0jl4dahgopddd1qnxqbtZ ~]# cd certs/
[root@iZ0jl4dahgopddd1qnxqbtZ ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout harbor.key -x509 -days 365 -out harbor.crt 
Generating a 4096 bit RSA private key
...................................................................++
.++
writing new private key to 'harbor.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:

安装harbor

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

hostname: 192.168.90.10

# 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: /opt/harbor/certs/harbor.crt
private_key: /opt/harbor/certs/harbor.key
  • 安装
[root@jenkins harbor]# ./install.sh
  • 添加私有仓库
[root@bogon ~]# vi /etc/docker/daemon.json
"insecure-registries":["http://192.168.90.10"],
"registry-mirrors": ["https://7ua5qu05.mirror.aliyuncs.com"]
}
  • 安装成功后,可以通过 docker login 命令来测试仓库的连通性,看到如下字样即表示安装成功(也可以通过浏览器访问 Web UI):
root@bogon ~]# systemctl restart docker
[root@bogon ~]# docker login 192.168.90.10
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://192.168.90.10

Harbor

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

Harbor

 

  • 参考地址https://me.jinchuang.org/archives/652.html

harbor的关闭与开启

  • 关闭(修改配置文件必须先关闭服务
[root@docker harbor]# pwd
/opt/harbor
[root@docker harbor]# docker-compose down -v
Stopping nginx ... done
Stopping harbor-jobservice ... done
Stopping harbor-core ... done
Stopping harbor-portal ... done
Stopping redis ... done
Stopping registryctl ... done
Stopping harbor-db ... done
Stopping registry ... done
Stopping harbor-log ... done
Removing nginx ... done
Removing harbor-jobservice ... done
Removing harbor-core ... done
Removing harbor-portal ... done
Removing redis ... done
Removing registryctl ... done
Removing harbor-db ... done
Removing registry ... done
Removing harbor-log ... done
Removing network harbor_harbor
  • 启动服务
[root@docker harbor]# docker-compose up -d
下载信息
网盘密码:登录可见
下载地址:登录可见
继续阅读
  • 我的QQ
  • QQ扫一扫
  • weinxin
  • 我的头条
  • 头条扫一扫
  • weinxin
Docker 最后更新:2021-4-8
IT
  • 本文由 发表于 2020年5月13日15:47:40
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Docker安装devops Docker

Docker安装devops

docker安装sonarqube 下载所需镜像 # docker pull postgres:10 # docker pull sonarqube:7.9.1-community 启动服务 # do...
修改docker默认IP Docker

修改docker默认IP

默认安装的docker一般是以网桥bridge模式提供一个网络,默认的地址是172.17.0.1/16 # ip ad 1: lo: <LOOPBACK,UP,LOWER_UP> mtu ...
Docker部署Apollo Apollo

Docker部署Apollo

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

您必须才能发表评论!