实际上harbor就是利用docker-compose进行管理Dokcer的一个UI系统

目标主机需要安装Python,Docker和Docker Compose。

Harbor简介

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

  • 基于角色的访问控制
  • 镜像复制
  • 图形化用户界面
  • AD/LDAP 支持
  • 审计管理
  • 国际化
  • RESTful API
  • 部署简单

安装环境

目标主机的先决条件

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

硬件

资源

容量

描述

中央处理器

最少2个CPU

4个CPU是首选

纪念品

最小4GB

8GB是首选

磁盘

最小40GB

160GB是首选

软件

软件

描述

蟒蛇

版本2.7或更高

请注意,您可能必须在Linux发行套件(Gentoo,Arch)上安装Python,它们不包含默认安装的Python解释器

Docker引擎

版本1.10或更高

有关安装说明,请参阅:https//docs.docker.com/engine/installation/

Docker撰写

版本1.6.0或更高版本

有关安装说明,请参阅:https//docs.docker.com/compose/install/

OpenSSL的

最新是首选

为Harbour生成证书和密钥

网络端口

港口

协议

描述

443

HTTPS

Harbor UI和API将接受此端口上的https协议请求

4443

HTTS

连接到Harbour的Docker Content Trust服务,仅在启用公证时才需要

80

HTTP

Harbor UI和API将接受此端口上的http协议请求

下载离线安装包并解压

wget https://storage.googleapis.com/harbor-releases/release-1.5.0/harbor-offline-installer-v1.5.0-rc2.tgz

tar -zxf harbor-offline-installer-v1.5.0-rc2.tgz  -C /opt/app/

配置安装

配置参数位于文件/opt/app/harbor/harbor.cfg中

vim harbor.cfg

harbor.cfg中有两类参数,必需参数和可选参数。

  • 所需参数:这些参数需要在配置文件中设置。如果用户更新它们harbor.cfg并运行install.sh脚本重新安装Harbour,它们将生效。
  • 可选参数:这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动Harbour后在Web UI上进行更新。如果他们进入harbor.cfg,他们只会在首次启动海港时生效。随后对这些参数的更新harbor.cfg将被忽略。
    注意:如果您选择通过UI设置这些参数,请确保在启动Harbour后立即执行此操作。特别是,您必须在注册或在Harbor中创建任何新用户之前设置所需的auth_mode。当系统中有用户时(除默认管理员用户外), auth_mode不能更改。

参数如下所述 - 请注意,至少您需要更改主机名属性。

所需参数:
  • 主机名:目标主机的主机名,用于访问UI和注册表服务。它应该是目标机器的IP地址或完全限定域名(FQDN),例如192.168.1.10或reg.yourdomain.com。不要使用localhost或127.0.0.1为主机名 - 注册表服务需要由外部客户端访问!
  • ui_url_protocol:(http或https,默认为http)用于访问UI和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为https。默认情况下,这是http。要设置https协议,请参阅使用HTTPS访问配置Harbour
  • db_password:用于db_auth的MySQL数据库的根密码。更改此密码以供任何生产使用!
  • max_job_workers :(默认值为3)作业服务中复制工作的最大数量。对于每个映像复制作业,工作人员将存储库的所有标记同步到远程目标。增加这个数字允许系统中有更多的并发复制作业。但是,由于每个工作人员消耗了一定数量的网络/ CPU / IO资源,请根据主机的硬件资源仔细选择此属性的值。
  • customize_crt:(打开或关闭,默认打开)打开此属性时,准备脚本将创建私钥和根证书,以生成/验证注册表的令牌。当外部来源提供密钥和根证书时,将此属性设置为off。有关更多信息,请参阅自定义密钥和港口令牌服务证书
  • ssl_cert:SSL证书的路径,仅当协议设置为https时才适用
  • ssl_cert_key:SSL密钥的路径,仅当协议设置为https时才应用
  • secretkey_path:用于在复制策略中加密或解密远程注册表的密码的密钥路径。
  • log_rotate_count:日志文件在被删除之前被轮转log_rotate_count次。如果count为0,则删除旧版本而不是旋转。
  • log_rotate_size:日志文件只有在长度大于log_rotate_size字节的情况下才会进行旋转。如果大小后面跟着k,则大小假定为千字节。如果使用M,则大小以兆字节为单位,如果使用G,则大小以GB为单位。所以尺寸100,尺寸100k,尺寸100M和尺寸100G都是有效的。
可选参数
  • 电子邮件设置:Harbor需要这些参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才需要。另外,请注意,在默认情况下SSL连接时没有启用-如果你的SMTP服务器需要SSL,但不支持STARTTLS,那么你应该通过设置启用SSL email_ssl = TRUE。如果电子邮件服务器使用自签名或不可信证书,请设置email_insecure = true。有关“email_identity”的详细说明,请参阅rfc2595
  • email_server = smtp.mydomain.com
  • email_server_port = 25
  • email_identity =
  • email_username = sample_admin@mydomain.com
  • email_password = abc
  • email_from = admin sample_admin@mydomain.com
  • email_ssl = false
  • email_insecure = false
  • harbour_admin_password:管理员的初始密码。该密码仅在Harbour首次启动时生效。之后,此设置将被忽略,管理员的密码应在用户界面中设置。请注意,默认的用户名/密码是admin / Harbor12345。
  • auth_mode:使用的认证类型。默认情况下,它是db_auth,即凭据存储在数据库中。对于LDAP认证,将其设置为ldap_auth。
    重要提示:从现有Harbour实例升级时,必须确保在启动新版本的Harbour之前,auth_mode与之相同harbor.cfg。否则,升级后用户可能无法登录。
  • ldap_url:LDAP端点URL(例如ldaps://ldap.mydomain.com)。 仅在auth_mode设置为ldap_auth时使用。
  • ldap_searchdn:有权搜索LDAP / AD服务器(例如uid=admin,ou=people,dc=mydomain,dc=com)的用户的DN 。
  • ldap_search_pwd:由ldap_searchdn指定的用户的密码。
  • ldap_basedn:查找用户的基本DN,例如ou=people,dc=mydomain,dc=com。 仅在auth_mode设置为ldap_auth时使用。
  • ldap_filter:查找用户的搜索过滤器,例如(objectClass=person)。
  • ldap_uid:LDAP搜索过程中用于匹配用户的属性,可以是uid,cn,email或其他属性。
  • ldap_scope:搜索用户的范围,0-LDAP_SCOPE_BASE,1-LDAP_SCOPE_ONELEVEL,2-LDAP_SCOPE_SUBTREE。缺省值是2。
  • self_registration:(打开或关闭,默认打开)启用/禁用用户自行注册的功能。禁用时,只能由Admin用户创建新用户,只有管理员用户可以在Harbour中创建新用户。 注意:当auth_mode设置为ldap_auth时,自注册功能始终处于禁用状态,并且该标志被忽略。
  • token_expiration:由令牌服务创建的令牌的到期时间(以分钟为单位),默认值为30分钟。
  • project_creation_restriction:用于控制哪些用户有权创建项目的标志。默认情况下,每个人都可以创建一个项目,设置为“adminonly”,这样只有admin可以创建项目。

自定义UI访问端口

vim  /opt/app/harbor/docker-compose.yml

harbor 启用helm仓库地址 harbor仓库是什么_ldap

harbor 启用helm仓库地址 harbor仓库是什么_Docker_02

修改仓库访问地址

vim  /opt/app/harbor/common/templates/registry/config.yml

harbor 启用helm仓库地址 harbor仓库是什么_ldap

harbor 启用helm仓库地址 harbor仓库是什么_ldap_04

安装

cd  /opt/app/harbor

./install.sh

完成安装并启动Harbor

一旦配置了harbor.cfg和存储后端(可选),请使用该install.sh脚本安装并启动Harbour 。请注意,在线安装程序可能需要一段时间才能从Docker中心下载Harbor图像。

默认安装(没有公证人/克莱尔)

Harbour已经与Notary和Clair进行了整合(用于漏洞扫描)。但是,默认安装不包括公证人或克莱尔服务。

$ sudo ./install.sh

如果一切正常,您应该能够打开浏览器访问http://reg.yourdomain.com的管理门户(将reg.yourdomain.com更改为您的主机名harbor.cfg)。请注意,默认的管理员用户名/密码是admin / Harbor12345

登录到管理门户并创建一个新项目,例如myproject。然后,您可以使用docker命令登录并推送图像(默认情况下,注册表服务器在端口80上侦听):

$ docker登录reg.yourdomain.com

$ docker push reg.yourdomain.com/myproject/myrepo:mytag

重要信息: Harbor的默认安装使用HTTP - 因此,您需要将该选项添加--insecure-registry到客户端的Docker守护程序并重新启动Docker服务。

vim  /usr/lib/systemd/system/docker.service或者vim /etc/sysconfig/docker

ExecStart=/usr/bin/dockerd  --insecure-registry=192.168.10.8:666

先systemctl daemon-reload

然后systemctl restart docker

与公证人一起安装

要使用公证服务安装Harbor,请在运行时添加参数install.sh:

$ sudo ./install.sh --with-notary

注意:对于使用公证进行安装,必须将参数ui_url_protocol设置为“https”。有关配置HTTPS的信息,请参阅以下章节。

有关公证和Docker内容信任的更多信息,请参阅Docker的文档:https//docs.docker.com/engine/security/trust/content_trust/

用Clair安装

要使用Clair服务安装Harbor,请在运行时添加参数install.sh:

$ sudo ./install.sh --with-clair

有关Clair的更多信息,请参阅Clair的文档:https : //coreos.com/clair/docs/2.0.1/

注意:如果你想同时安装Notary和Clair,你必须在同一个命令中指定两个参数:

$ sudo ./install.sh --with-notary --with-clair

搭建完成

harbor 启用helm仓库地址 harbor仓库是什么_ldap

harbor 启用helm仓库地址 harbor仓库是什么_Docker_06

如何把镜像push到harbor仓库

1.先创建一个项目

harbor 启用helm仓库地址 harbor仓库是什么_ldap

harbor 启用helm仓库地址 harbor仓库是什么_harbor 启用helm仓库地址_08

2.push之前登录harbor仓库,输入账号密码

docker login 192.168.10.8:666

admin

Harbor12345

3.然后给镜像打标签

格式:docker tag SOURCE_IMAGE[:TAG] 192.168.10.8/test/IMAGE[:TAG]

docker tag 9e9755aadec4  192.168.10.8:666/test/harbor-log

4.然后执行上传命令

格式:docker push 192.168.10.8/test/IMAGE[:TAG]

docker push 192.168.10.8:666/test/harbor-log

harbor 启用helm仓库地址 harbor仓库是什么_ldap

harbor 启用helm仓库地址 harbor仓库是什么_ldap_10



转载于:https://blog.51cto.com/7072753/2121449