一. harbor的概述

1.1 Harbor 的介绍

  • Harbor 是VMware 公司开源的企业级Docker Registry 项目
  • Harbor 的优势
  1. 基于角色控制
  2. 基于镜像的复制策略
  3. 支持LDAP / AD
  4. 图像删除和垃圾收集、
  5. 图形UI
  6. 审计
  7. RESTful API

1.2 Docker 私有仓库架构拓扑

在这里插入图片描述

  • Proxy
    通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务
  • Registry
    负责储存Docker镜像,并处理docker push/pull 命令
  • Core services
    Harbor 的核心功能,包括UI、webhook 、token服务
  • Database
    为core services 提供数据库服务
  • Log collector
    负责收集其他组件的log、供日后进行分析

二. Harbor构建Docker私有仓库

2.1 案例设计

主机操作系统主机名/IP地址主要软件及版本
服务端centos 7.4Harbor/12.0.0.25docker 19.03、docker-compose、harbor-offline-v1.1.2
客户端centos 7.4client/12.0.0.26docker19.03

案列需求

  • 通过Harbor 创建Docker私有仓库
  • 图形化管理Docker 私有仓库镜像

2.2 部署Harbor

Harbor 被部署为多个 Docker 容器,因此可以部署在任何支持 Docker 的 Linux 发行版 上。
服务端主机需要安装Python、Docker 和 Docker Compose。

2.21 下载Harbor安装程序

wget http:// harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz

2.22 配置Harbor参数文件

vim /usr/local/harbor/harbor.cfg

hostname=12.0.0.25   //本地ip地址   不要使用 localhost 或 127.0.0.1 为主机名

关于 Harbor.cfg 配置文件中有两类参数:所需参数和可选参数
(1)所需参数 这些参数需要在配置文件 Harbor.cfg 中设置。如果用户更新它们并运行 install.sh脚本重新安装 Harbour,参数将生效。具体参数如下:

hostname:用于访问用户界面和 register 服务。它应该是目标机器的 IP 地址或完全限 定的域名(FQDN)例如192.168.195.128 或 hub.kgc.cn。不要使用 localhost 或 127.0.0.1 为主机名。

ui_url_protocol:(http 或 https,默认为 http)用于访问
UI和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为 https。

db_password:用于db_auth 的MySQL数据库root 用户的密码。

customize_crt:该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为
off。

ssl_cert:SSL 证书的路径,仅当协议设置为 https 时才应用。

ssl_cert_key:SSL 密钥的路径,仅当协议设置为 https 时才应用。

secretkey_path:用于在复制策略中加密或解密远程 register 密码的密钥路径。

(2)可选参数

这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动 Harbor 后在 Web UI 上进行更新。
如果进入 Harbor.cfg,只会在第一次启动 Harbor 时生效,随后对这些参数 的更新,Harbor.cfg 将被忽略。

注意:如果选择通过UI设置这些参数,请确保在启动Harbour后立即执行此操作。具体来说,必须在注册或在 Harbor 中创建任何新用户之前设置所需的

auth_mode。当系统中有用户时(除了默认的 admin 用户),auth_mode 不能被修改。具体参数如下:
Email:Harbor需要该参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才需要。
请注意,在默认情况下SSL连接时没有启用。如果SMTP服务器需要SSL,但不支持STARTTLS,那么应该通过设置启用SSL
email_ssl = TRUE。

harbour_admin_password:管理员的初始密码,只在Harbour第一次启动时生效。之后,此设置将被忽略,并且应
UI中设置管理员的密码。 请注意,默认的用户名/密码是 admin/Harbor12345。

auth_mode:使用的认证类型,默认情况下,它是 db_auth,即凭据存储在数据库中。对于LDAP身份验证,请将其设置为
ldap_auth。

self_registration:启用/禁用用户注册功能。禁用时,新用户只能由 Admin 用户创建,只有管理员用户可以在
Harbour中创建新用户。 注意:当 auth_mode 设置为 ldap_auth 时,自注册功能将始终处于禁用状态,并且该标志被忽略。

Token_expiration:由令牌服务创建的令牌的到期时间(分钟),默认为 30 分钟。

project_creation_restriction:用于控制哪些用户有权创建项目的标志。默认情况下, 每个人都可以创建一个项目。
如果将其值设置为“adminonly”,那么只有 admin 可以创建项目。

verify_remote_cert:打开或关闭,默认打开。此标志决定了当Harbor与远程 register 实例通信时是否验证
SSL/TLS 证书。 将此属性设置为 off 将绕过 SSL/TLS 验证,这在远程实例具有自签名或不可信证书时经常使用。

另外,默认情况下,Harbour 将镜像存储在本地文件系统上。在生产环境中,可以考虑 使用其他存储后端而不是本地文件系统, 如
S3、Openstack Swif、Ceph 等。但需要更新 common/templates/registry/config.yml 文件

2.23 安装docker-compose 容器编排工具

上传dockers-compose工具到opt下,赋予执行权限后交给系统识别
[root@harbor harbor]# chmod +x docker-compose
[root@harbor harbor]# mv docker-compose /usr/bin/

注意: harbor是被部署为多个容器的,启动脚本里包含了容器编排项,所以需要安装docker-compose

2.24 启动Harbor

[root@harbor harbor]# ./install.sh

//查看Harbor 启动后镜像与生成的容器

//查看镜像

[root@harbor harbor]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
vmware/harbor-log           v1.2.2              36ef78ae27df        3 years ago         200MB
vmware/harbor-jobservice    v1.2.2              e2af366cba44        3 years ago         164MB
vmware/harbor-ui            v1.2.2              39efb472c253        3 years ago         178MB
vmware/harbor-adminserver   v1.2.2              c75963ec543f        3 years ago         142MB
vmware/harbor-db            v1.2.2              ee7b9fa37c5d        3 years ago         329MB
vmware/nginx-photon         1.11.13             6cc5c831fc7f        3 years ago         144MB
vmware/registry             2.6.2-photon        5d9100e4350e        3 years ago         173MB
vmware/postgresql           9.6.4-photon        c562762cbd12        3 years ago         225MB
vmware/clair                v2.0.1-photon       f04966b4af6c        3 years ago         297MB
vmware/harbor-notary-db     mariadb-10.1.10     64ed814665c6        3 years ago         324MB
vmware/notary-photon        signer-0.5.0        b1eda7d10640        3 years ago         156MB
vmware/notary-photon        server-0.5.0        6e2646682e3c        3 years ago         157MB
photon                      1.0                 e6e4e4a2ba1b        4 years ago         128MB

//查看容器

[root@harbor harbor]# docker ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED              STATUS              PORTS                                                              NAMES
414bc80a56c0        vmware/harbor-jobservice:v1.2.2    "/harbor/harbor_jobs…"   About a minute ago   Up About a minute                                                                      harbor-jobservice
dd8da2c24a64        vmware/nginx-photon:1.11.13        "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp   nginx
42bb4cd1a856        vmware/harbor-ui:v1.2.2            "/harbor/harbor_ui"      2 minutes ago        Up About a minute                                                                      harbor-ui
d06cba205fec        vmware/registry:2.6.2-photon       "/entrypoint.sh serv…"   2 minutes ago        Up About a minute   5000/tcp                                                           registry
798c637f6379        vmware/harbor-db:v1.2.2            "docker-entrypoint.s…"   2 minutes ago        Up About a minute   3306/tcp                                                           harbor-db
7ec2e031f880        vmware/harbor-adminserver:v1.2.2   "/harbor/harbor_admi…"   2 minutes ago        Up About a minute                                                                      harbor-adminserver
96fa6f1ef2c4        vmware/harbor-log:v1.2.2           "/bin/sh -c 'crond &…"   2 minutes ago        Up 2 minutes        127.0.0.1:1514->514/tcp                                            harbor-log

2.25 web网页登陆测试(图像化管理docker私有仓库镜像)

如果一切都正常,应该可以打开浏览器访问 http://12.0.0.25 的管理页面,默认 的管理员用户名和密码是 admin/Harbor12345。

在这里插入图片描述

//添加项目,并且填写项目名称
在这里插入图片描述
在这里插入图片描述
此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,
Register 服务器在端口 80 上侦听。

//登录
[root@harbor harbor]# docker login -uadmin -pHarbor12345 http://127.0.0.1

//下载镜像
docker pull tomcat

//镜像打标签
[root@harbor harbor]# docker tag tomcat:latest 127.0.0.1/myproject-kgc/tomcat


//上传镜像到Harbor
[root@harbor harbor]# docker push 127.0.0.1/myproject-kgc/tomcat

//在图像界面检查上传到harbor仓库的镜像
在这里插入图片描述

以上操作都是在 Harbor 服务器本地操作。如果其他客户端上传镜像到 Harbor,就会报
如下错误。出现这问题的原因 Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。

在客户端里操作:

[root@localhost ~]# docker login -uadmin -pHarbor12345 http://12.0.0.25
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://12.0.0.25/v2/: dial tcp 12.0.0.25:443: connect: connection refused
//解决方案
[root@localhost ~]# vim /usr/lib/systemd/system/docker.service 

ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 12.0.0.25  --containerd=/run/containerd/containerd.sock


[root@localhost ~]# systemctl daemon-reload 
[root@localhost ~]# systemctl restart docker

[root@localhost ~]# docker login -uadmin -pHarbor12345 http://12.0.0.25

[root@localhost ~]# docker pull cirros
[root@localhost ~]# docker tag cirros:latest 12.0.0.25/myproject-kgc/cirros
[root@localhost ~]# docker push 12.0.0.25/myproject-kgc/cirros
The push refers to repository [12.0.0.25/myproject-kgc/cirros]


//查看图像界面的harbor仓库
在这里插入图片描述

2.26 创建Harbor 用户

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
//创建项目开发人员
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

GitHub 加速计划 / ha / harbor
23.24 K
4.68 K
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:2 个月前 )
9e55afbb pull image from registry.goharbor.io instead of dockerhub Update testcase to support Docker Image Can Be Pulled With Credential Change gitlab project name when user changed. Update permissions count and permission count total Change webhook_endpoint_ui Signed-off-by: stonezdj <stone.zhang@broadcom.com> Co-authored-by: Wang Yan <wangyan@vmware.com> 6 天前
3dbfd422 Signed-off-by: wang yan <wangyan@vmware.com> 7 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐