侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

Harbor安装与使用

2023-11-03 星期五 / 0 评论 / 0 点赞 / 48 阅读 / 11565 字

简介Harbor是VMware公司最近开源的企业级Docker Registry项目,项目地址为https://github.com/vmware/harbor 其目标是帮助用户迅速搭建一个企业级的D

简介

Harbor是VMware公司最近开源的企业级Docker Registry项目,项目地址为https://github.com/vmware/harbor 其目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为基础,提供了管理UI, 基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Audit logging) 等企业用户需求的功能,同时还原生支持中文。

Harbor的每个组件都是以Docker容器的形式构建的,使用Docker Compose来对它进行部署。用于部署Harbor的Docker Compose模板位于 /Deployer/docker-compose.yml,由5个容器组成:

  • Proxy: 由Nginx 服务器构成的反向代理。
  • Registry:由Docker官方的开源registry 镜像构成的容器实例。
  • UI: 即架构中的core services, 构成此容器的代码是Harbor项目的主体。
  • Mysql: 由官方MySql镜像构成的数据库容器。
  • Log: 运行着rsyslogd的容器,通过log-driver的形式收集其他容器的日志。这几个容器通过Docker link的形式连接在一起,在容器之间通过容器名字互相访问。对终端用户而言,只需要暴露proxy (即Nginx)的服务端口。

安装

安装条件

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

  • Python应该是2.7或更高版本。请注意,您可能必须在Linux发行版(Gentoo,Arch)上安装Python,该版本不附带默认安装的Python解释器(2017.6.9补充:Python3 版本会报错,请用2.7版本)
  • Docker引擎应为1.10或更高版本。有关安装说明,请参阅:https://docs.docker.com/engine/installation/
  • Docker Compose需要为1.6.0或更高版本。有关安装说明,请参阅:https://docs.docker.com/compose/install/

安装步骤

安装步骤如下

  1. 下载安装程序
  2. 配置ports.cfg
  3. 运行install.sh来安装和启动Harbor

下载安装程序:

可以从https://github.com/vmware/harbor/releases 面下载安装程序的二进制文件。选择在线或离线安装程序。使用tar命令来提取包。

因为项目在git上,有墙且离线文件比较大,如果宿主机中Docker配置了加速器,可以使用在线安装会比较快

在线安装:

$ tar xvf harbor-online-installer-<version>.tgz

离线安装:

$ tar xvf harbor-offline-installer-<version>.tgz

配置文件

配置参数位于文件harbor.cfg中。

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

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

参数如下所述 – 请注意,至少需要更改hostname属性。

必需参数:

  • hostname:目标主机的主机名,用于访问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访问harbor。
  • db_password:用于db_auth的MySQL数据库的根密码。更改此密码以供任何生产用途!
  • max_job_workers:(默认值为3)作业服务中的最大复制工作数。对于每个映像复制作业,工作程序将存储库的所有标签同步到远程目标。增加此数字允许系统中更多的并发复制作业。但是,由于每个工作人员都会消耗一定数量的网络/ CPU / IO资源,请根据主机硬件资源选择该属性的值。
  • customize_crt:(打开或关闭,默认为打开)当此属性打开时,准备脚本将为注册表令牌的生成/验证创建私钥和根证书。当密钥和根证书由外部源提供时,将此属性设置为off。有关详细信息,请参阅自定义密钥和harbor令牌服务证书。
  • ssl_cert:SSL证书的路径,仅当协议设置为https时才应用
  • ssl_cert_key:SSL密钥的路径,仅当协议设置为https时才应用
  • secretkey_path:用于在复制策略中加密或解密远程注册表的密码的密钥路径。

可选参数

  • 电子邮件设置:Harbor需要这些参数才能向用户发送“密码重设”电子邮件,只有在需要该功能时才需要这些参数。另外,请注意,在默认情况下SSL连接时没有启用-如果你的SMTP服务器需要SSL,但不支持STARTTLS,那么你应该通过设置启用SSL email_ssl = TRUE。
  • harbor_admin_password:管理员的初始密码。该密码仅在Harbor 第一次启动时生效。之后,此设置将被忽略,并且应在UI中设置管理员的密码。请注意,默认用户名/密码为admin / Harbor12345。
  • auth_mode:使用的身份验证类型。默认情况下,它是db_auth,即凭据存储在数据库中。对于LDAP身份验证,请将其设置为ldap_auth。重要提示:从现有的Harbor 实例升级时,必须确保auth_modeharbor.cfg在启动新版本的Harbor之前是一样的。否则,升级后用户可能无法登录。
  • ldap_url:LDAP端点URL(例如ldaps://ldap.mydomain.com)。 仅当auth_mode设置为ldap_auth时才使用。
  • ldap_searchdn:具有搜索LDAP / AD服务器权限的用户的DN(例如uid=admin,ou=people,dc=mydomain,dc=com)。
  • 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,电子邮件或其他属性。
  • ldap_scope:搜索用户的范围,1-LDAP_SCOPE_BASE,2-LDAP_SCOPE_ONELEVEL,3-LDAP_SCOPE_SUBTREE。默认值为3。
  • self_registration:(开或关,默认为开)启用/禁用用户注册自己的能力。禁用时,只能由管理员用户创建新用户,只有管理员用户才能在海港创建新用户。 注意:当auth_mode设置为ldap_auth时,自注册功能始终被禁用,并且该标志被忽略。
  • token_expiration:令牌服务创建的令牌的到期时间(以分钟为单位),默认值为30分钟。
  • project_creation_restriction:用于控制用户有权创建项目的标志。默认情况下,每个人都可以创建一个项目,设置为“adminonly”,以便只有admin才能创建项目。
  • verify_remote_cert:(上或关闭,默认为上)该标志,判断是否验证SSL / TLS证书时码头与远程注册表实例通信。将此属性设置为off可绕过SSL / TLS验证,SSL / TLS验证通常在远程实例具有自签名或不受信任的证书时使用。

配置存储后端(可选)

默认情况下,Harbor将映像存储在本地文件系统上。在生产环境中,您可以考虑使用其他存储后端而不是本地文件系统,如S3,Openstack Swift,Ceph等。您需要更新的是storage文件中的部分common/templates/registry/config.yml。例如,如果您使用Openstack Swift作为存储后端,则该部分可能如下所示:

storage:swift:username: adminpassword: ADMIN_PASSauthurl: http://keystone_addr:35357/v3/authtenant: admindomain: defaultregion: regionOnecontainer: docker_images注意:有关注册表的存储后端的详细信息,请参阅registry配置参考。

完成安装和启动harbor

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

默认安装(无公证)

在1.1.0版本之后,Harbor已经与Notary进行了集成,但默认情况下安装不包括公证服务。

$ sudo ./install.sh

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

harbor使用

登录harbor并创建一个项目,如果是公开项目,则所有人都能访问,如果是私密项目,则必须登录后才能访问。

配置主机(非安装harbor的主机)的Docker守护进程的--insecure-registry参数,然后重启docker服务。centos 7 1.10版本以后的主机可以使用下面的方法配置:没配置过加速器的可以按下面命令配置:

sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{  "insecure-registries": ["harbor地址"]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker

如果已经有这个文件,则可以将

"insecure-registries": ["harbor地址"]

添加到文件中,注意json格式然后重启docker服务

sudo systemctl daemon-reloadsudo systemctl restart docker

使用docker info查看是否配置成功

Insecure Registries: 172.16.1.129 harbor地址 127.0.0.0/8

登录harbor

$ docker login 172.16.1.129Username : usernamePassword: Login Succeeded

推送一个镜像到镜像仓库harbor中创建一个tomcat项目镜像需要先通过docker tag 修改为(harbor地址/项目名称)开头

$ docker tag tomcat:7.0.73-7       172.16.1.129/tomcat/7.0.73-7$ docker push 172.16.1.129/tomcat/7.0.73-7The push refers to a repository [172.16.1.129/tomcat/7.0.73-7]75a7395b2296: Pushed d36caa27a882: Pushed 7326b6559ecf: Pushed feaa57cbddb1: Layer already exists 3bf614abaf86: Pushed b0becd8213e2: Pushed fd47add8e1d7: Pushed 39c0bfc3a1cb: Pushed f1d01a184c99: Layer already exists 72e128c24795: Pushed 782d5215f910: Pushed 0eb22bfb707d: Layer already exists a2ae92ffcd29: Layer already exists latest: digest: sha256:39e8f420bad3198d4f773c77694bdeb47500a9a79472cb0e42b4e3af7ea43c0d size: 3039[iven@docker-node ~]$ 

现在上harbor就可以看到这个镜像了。

广告 广告

评论区