docker之docker-harbor镜像仓库

什么是harbor:
harbor是VMware公司开源的企业级docker registry项目,其目标是帮助用户迅速搭建一个企业级的docker registry服务。
harbor的优势:

字段 描述
基于角色控制 用户和仓库都是基于项目进行组织的,用户在项目中可以拥有不同的权限
基于镜像的复制策略 镜像可以在多个harbor实例之间复制(同步),适用于负载平衡、高可用性、多数据中心、混合和多云的场景
支持LDAP/AD harbor与现有的企业LDAP/AD集成,用于用户认证和管理
删除图像和收集垃圾 镜像可以删除、镜像占用的空间也可以回收
图形UI 用户可以轻松地浏览、搜索镜像仓库以及对项目进行管理
审计 对存储库的所有操作都能进行记录
RESTful API 提供可用于大多数管理操作的RESTful API,易于与外部系统集成。

harbor架构:
docker之docker-harbor镜像仓库
组件说明:

组件 说明
proxy harbor的registry、UI、token等服务通过一个前置反向代理统一接受浏览器和docker客户端的请求,并将请求转发个后端的不通服务
registry 负责存储docker镜像并处理docker push/pull命令。由于要对用户进行访问控制,及不同用户对docker镜像有不同的读写权限,registry会指向一个token服务,强制用户的每次docker push/pull请求都要携带一个合法的token,registry会通过公钥对token进行解密验证
core services 这是harbor的核心功能,主要提供一下服务:UI:图形化界面,帮助用户管理registry上的镜像并对用户进行授权。webhook:为了及时获取registry上镜像状态的变化情况,在registry上配置webhook,把状态变化传递给UI模块。token:负责根据用户权限给每个docker push/pull命令签发token。docker客户端向registry服务发起的请求如果不包含token,会被重定向,获得token后再重新向registry发起请求
database 为core services提供数据库服务,负责存储用户权限、审计日志、docker镜像分组信息等数据。
log collector 监控harbor运行,负责收集其他组件的log,供日后分析使用

安装部署:

# 部署harbor首先需要docker-compose环境以及docker环境
[root@localhost harbor] tar xf harbor-offline-installer-v2.0.5.tgz -C /usr/local/
[root@localhost harbor] cp -a harbor.yml.tmpl harbor.yml
[root@localhost harbor] vim harbor.yml
hostname: harbor.kcc.com # 注意不要写localhost和127.0.0.1

# 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: /usr/local/harbor/cert/server.crt  #OpenSSL 生成的证书
  private_key: /usr/local/harbor/cert/server.key  #OpenSSL 生成的秘钥

[root@localhost harbor]  ./install.sh 

Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating registryctl   ... done
Creating registry      ... done
Creating harbor-portal ... done
Creating redis         ... done
Creating harbor-db     ... done
Creating harbor-core   ... done
Creating nginx             ... done
Creating harbor-jobservice ... done
✔ ----Harbor has been installed and started successfully.----
# 看到出现此结果说明已经成功了
[root@localhost harbor]# docker-compose ps
      Name                     Command                  State                          Ports                   
---------------------------------------------------------------------------------------------------------------
harbor-core         /harbor/entrypoint.sh            Up (healthy)                                              
harbor-db           /docker-entrypoint.sh            Up (healthy)   5432/tcp                                   
harbor-jobservice   /harbor/entrypoint.sh            Up (healthy)                                              
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp                  
harbor-portal       nginx -g daemon off;             Up (healthy)   8080/tcp                                   
nginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp
redis               redis-server /etc/redis.conf     Up (healthy)   6379/tcp                                   
registry            /home/harbor/entrypoint.sh       Up (healthy)   5000/tcp                                   
registryctl         /home/harbor/start.sh            Up (healthy)       
# 确认一下服务是否启动完成
# 另外还需要把你的harbor配置文件里的域名添加到 不安全注册表因为不是权威证书机构颁发的证书都不承认
Insecure Registries:
  harbor.kcc.com
  127.0.0.0/8
[root@localhost harbor]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://l4lesu78.mirror.aliyuncs.com"],
  "exec-opts":["native.cgroupdriver=systemd"],
  "insecure-registries":["https://harbor.kcc.com"]
}
# 此时就可以访问UI界面的harbor
https://harbor.kcc.com
# 需要宿主机域名解析
# 或者直接访问ip也可以

docker之docker-harbor镜像仓库
#登录默认账号、密码:admin Harbor12345
docker之docker-harbor镜像仓库
#创建一个项目
docker之docker-harbor镜像仓库
docker之docker-harbor镜像仓库
#新建用户
docker之docker-harbor镜像仓库
docker之docker-harbor镜像仓库
#项目指定用户权限
docker之docker-harbor镜像仓库
docker之docker-harbor镜像仓库
docker之docker-harbor镜像仓库
#此时基本可以使用harbor仓库了

# 下载一个测试镜像
[root@localhost ~]# docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
e5d9363303dd: Pull complete 
Digest: sha256:c5439d7db88ab5423999530349d327b04279ad3161d7596d2126dfb5b02bfd1f
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest
# 登录harbor
[root@localhost ~]# docker login harbor.kcc.com
username:
password:
# 改一下busybox tag 标签并上传镜像
[root@localhost ~]# docker tag busybox:latest harbor.kcc.com/kcc/bbox:v1
[root@localhost ~]# docker push harbor.kcc.com/kcc/bbox:v1 
The push refers to repository [harbor.kcc.com/kcc/bbox]
0064d0478d00: Pushed 
v1: digest: sha256:0415f56ccc05526f2af5a7ae8654baec97d4a614f24736e8eef41a4591f08019 size: 527
# 验证harbor是否有镜像bbox:v1

docker之docker-harbor镜像仓库
#企业级镜像仓库搭建完成

上一篇:使用JS调用手机本地摄像头或者相册图片识别二维码/条形码


下一篇:APP-6-百度地图导航