Harbor 安装及使用

什么是Harbor

Project Harbor™是一个企业级的注册服务器,用于存储和分发Docker镜像。Harbor™通过添加企业通常需要的功能(如安全性,身份和管理)来扩展开源Docker分发版。作为企业私人注册表,Harbour™提供更好的性能和安全性。使注册表更接近构建和运行环境可提高图像传输效率。Harbor™支持多个注册表的设置并在它们之间复制图像。借助Harbour™,图像存储在私人注册表中,保留了公司防火墙后面的位和知识产权。此外,Harbour™还提供高级安全功能,例如用户管理,访问控制和活动审计。


 

  • 基于角色的访问控制 - 用户和码头库通过项目进行组织,用户可以在名称空间下拥有不同的图像权限。
  • 图像复制 - 可以在多个注册表实例之间复制(同步)图像。非常适合负载平衡,高可用性,混合和多云场景。
  • 图形用户门户 - 用户可以轻松浏览,搜索Docker存储库,管理项目/名称空间。
  • AD / LDAP支持 - Harbour™与现有的企业AD / LDAP集成,用于用户验证和管理。
  • 审计 - 对存储库的所有操作都被跟踪并可用于审计目的。
  • 国际化 - 已经本地化为英文,中文,德文,日文和俄文。可以添加更多语言。
  • RESTful API - Harbor™的大多数管理操作提供RESTful API。与其他管理软件的集成变得非常简单。
  • 轻松部署 - 提供在线和离线安装程序。此外,还提供了用于vSphere平台(OVA)的虚拟设备。

 

 

系统要求:

Linux主机上: docker 1.10.0+docker-compose 1.6.0+

虚拟机安装及配置

安装命令行自动补全

epel源

yum install epel-release -y

命令行自动补全

yum install bash-completion

 

设置主机名

#hostnamectl set-hostname k8s-harbor

 

配置IP地址 

 

关闭防火墙服务及关闭防火墙开机自启动

[root@k8s-harbor ~]# systemctl stop firewalld

[root@k8s-harbor ~]# systemctl disable firewalld

Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

 

关闭SELinux

修改/etc/selinux/config

# sed -i 's/enforcing$/disabled/g' /etc/selinux/config

# setenforce 0

 

时间同步自己配置好

# crontab -e
*/5 * * * * /usr/sbin/ntpdate 时间同步服务器;/usr/sbin/hwclock -w

官网安装文档

https://docs.docker.com/install/linux/docker-ce/centos/

 

OS要求

要安装Docker CE,您需要维护的CentOS 7版本。不支持或测试归档版本。

centos-extras库必须启用。此存储库默认情况下处于启用状态,但如果您已禁用它,则需要 重新启用它

overlay2建议使用存储驱动程序。

 

使用存储库进行安装

首次在新主机上安装Docker CE之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker

 

设置存储库

  1. 安装所需的包。yum-utils提供了yum-config-manager 效用,并device-mapper-persistent-datalvm2由需要 devicemapper存储驱动程序。
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 使用以下命令设置稳定的存储库。即使您想从边缘测试存储库安装构建,也总是需要稳定的存储 库。
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.显示有哪些稳定版本docker

$ yum list docker-ce --showduplicates | sort -r

4.安装哪个版本的docker

$ sudo yum install <FULLY-QUALIFIED-PACKAGE-NAME>

##例子:

# yum install docker-ce-17.12.0.ce-1.el7.centos.x86_64

$ sudo yum install docker-ce

 

5.开机自启

$ sudo systemctl enable docker.service

6.启动docker

$ sudo systemctl start docker

 

Docker-compose的安装

Github地址为

https://github.com/docker/compose

 

安装文档

https://docs.docker.com/compose/install/

 

版本下载页面

https://github.com/docker/compose/releases

 

运行此命令下载最新版本的Docker Compose

sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

 

对二进制文件应用可执行权限:

sudo chmod +x /usr/local/bin/docker-compose

私有镜像仓库安装

Github地址为

https://github.com/vmware/harbor

安装文档

https://github.com/vmware/harbor/blob/master/docs/installation_guide.md

 

镜像下载页面https://github.com/vmware/harbor/releases

分为在线安装和离线安装

 

选择离线安装

下载完成之后拷贝至/opt目录
$ tar xvf harbor-offline-installer-<version>.tgz 

 

创建300G存储镜像

# fdisk  /dev/vdb

格式化分区并调整分区类型为 8e

# pvcreate /dev/vdb1



# lvcreate -l 100%VG -n mydata myvg



# mkfs.xfs /dev/mapper/myvg-mydata

 

修改/etc/fstab 

 

 

配置参数位于文件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.10reg.yourdomain.com不要使用localhost127.0.0.1为主机名 - 注册表服务需要由外部客户端访问!
  • ui_url_protocol:(httphttps,默认为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
  • harbour_admin_password:管理员的初始密码。此密码仅在Harbour首次启动时生效。之后,此设置将被忽略,管理员的密码应在用户界面中设置。请注意,默认的用户名/密码是admin / Harbor12345
  • auth_mode:使用的认证类型。默认情况下,它是db_auth,即凭据存储在数据库中。对于LDAP认证,将其设置为ldap_auth

重要提示:从现有Harbour实例升级时,必须确保在启动新版本的Harbour之前,auth_mode与之相同harbor.cfg。否则,升级后用户可能无法登录。

  • ldap_urlLDAP端点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_uidLDAP搜索过程中用于匹配用户的属性,可以是uidcnemail或其他属性。
  • ldap_scope:搜索用户的范围,即0-LDAP_SCOPE_BASE1-LDAP_SCOPE_ONELEVEL2-LDAP_SCOPE_SUBTREE。缺省值是2
  • self_registration:(打开关闭,默认打开)启用/禁用用户自行注册的功能。禁用时,只能由Admin用户创建新用户,只有管理员用户可以在Harbour中创建新用户。 注意:当auth_mode设置为ldap_auth,自注册功能始终处于禁用状态,并且该标志被忽略。
  • token_expiration:由令牌服务创建的令牌的到期时间(以分钟为单位),默认值为30分钟。
  • project_creation_restriction:用于控制哪些用户有权创建项目的标志。默认情况下,每个人都可以创建一个项目,设置为“adminonly”,这样只有admin可以创建项目。

 

 

这里只更改了主机名一项,其他都是默认

 

运行

# ./install.sh

 

访问http://私有库ip 即可

 

用户名/密码是admin / Harbor12345

 

由于docker不信任http  私有库是http协议

如想用私有库需在/etc/docker/daemon.json文件中加入

{

  "insecure-registries": ["私有库ip"]

}
systemctl daemon-reload

systemctl restart docker

 

重要:由于harbor 容器restart策略为always,但是harbor是启动7个容器,实测关机后重启,有个别容器起不来。本人觉得容器启动时相互之间有依赖,导致容器起不来。想出个笨办法,如有高人,请指教下。

写个脚本,扔到/etc/rc.d/rc.local中 让其开机启动

脚本存在/opt/harbor/harbor_start.sh,赋予执行权限

#!/bin/bash

cd /opt/harbor
while true
do
    harbor_count=$(docker ps|grep vmware|grep -v grep|wc -l)
    [[ ${harbor_count} -ne 7 ]] && /usr/local/bin/docker-compose down || exit 0
    sleep 30
    /usr/local/bin/docker-compose up -d
    sleep 30
done

在/etc/rc.d/rc.loacl中添加一行,并赋予执行权限即可开机启动

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
/opt/harbor/harbor_start.sh

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值