天下風雲出我輩
一入江湖歲月催

Harbor 企业级私有镜像仓库搭建

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

安装与配置

1、软硬件及环境要求

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

硬件

资源 容量 说明
中央处理器 最小2 CPU 4 CPU是首选
内存 最小4GB 8GB是首选
磁盘 最小40GB 160GB是首选

软件

软件 版本 说明
Pyhton 2.7 及以上 我用的是CenOS 7 默认安装 2.7 版本,未装的装上
Docker 1.10 及以上 Docker安装
Docker Compose 1.6.0 以上 docker-compose
Openssl 推荐用最高版本 为Harbor生成证书和密钥

网络端口

港口 协议 描述
443 HTTPS Harbor入口和核心API将接受此端口上的https协议请求
4443 HTTPS 只有在启用“Notary”时才需要连接到Dock的Docker Content Trust服务
80 HTTP Harbor端口和核心API将接受此端口上的http协议请求

2、安装步骤

  1. 下载安装程序;
  2. 配置harbor.cfg ;
  3. 运行install.sh安装并启动Harbor;

2.1下载安装程序:

可以从发布页面下载安装程序的二进制文件,选择在线或离线安装程序,使用tar命令解压缩包。

$ wget -c https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.1.tgz

$ tar xvf harbor-offline-installer-v1.7.1.tgz

2.2 配置harbor.cfg

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

  • 必需参数:需要在配置文件中设置这些参数。如果用户更新它们并运行install.sh脚本以重新安装Harbor,它们将生效。
  • 可选参数:这些参数对于更新是可选的,即用户可以将它们保留为默认值,并在启动Harbour后在Web Portal上更新它们。如果它们已经启用harbor.cfg,它们只会在首次启动Harbour时生效。harbor.cfg将忽略对这些参数的后续更新。

必需参数

  • hostname:目标主机的主机名,用于访问web界面。它应该是目标计算机的IP地址或完全限定的域名。
  • ui_url_protocol 🙁 http或https。默认为http)用于访问入口和令牌/通知服务的协议。如果启用了公证,则此参数必须为https。默认情况下http。要设置https协议,请参阅使用HTTPS访问配置Harbor
  • db_password:用于PostgreSQL数据库的root密码。更改此密码以用于任何生产用途!
  • max_job_workers :(默认值为10)镜像复制作业线程。
  • customize_crt:(打开或关闭,默认打开)在准备脚本创建register的令牌生成/验证私钥和根证书。当外部源提供密钥和根证书时,将此属性设置为off。有关详细信息,请参阅自定义密钥和港口令牌服务证书
  • ssl_cert:SSL证书的路径,仅在协议设置为https时应用。
  • ssl_cert_key:SSL密钥的路径,仅在协议设置为https时应用。
  • secretkey_path:用于加密或解密复制策略中远程register密码的密钥路径。
  • log_rotate_count:日志文件在被删除之前会被轮换。如果count为0,则删除旧版本而不是轮换。
  • log_rotate_size:仅当日志文件大于log_rotate_size字节时才会轮换日志文件。如果大小后跟k,则假定大小以千字节为单位。如果使用M,则大小以兆字节为单位,如果使用G,则大小为千兆字节。
  • http_proxy:为Clair配置http代理,例如http://my.proxy.com:3128。
  • https_proxy:为Clair配置https代理,例如http://my.proxy.com:3128。
  • no_proxy:为Clair配置无代理,例如127.0.0.1,localhost,core,registry。

可选参数

  • 电子邮件设置:Harbor需要这些参数才能向用户发送“密码重置”电子邮件,并且仅在需要该功能时才需要。另外,请注意,在默认情况下SSL连接时没有启用-如果你的SMTP服务器需要SSL,但支持STARTTLS,那么你应该通过设置启用SSL email_ssl = TRUE。如果电子邮件服务器使用自签名证书或不受信任证书,则设置email_insecure = true。有关“email_identity”的详细说明,请参阅rfc2595有关配置邮件服务请参详:使用SMTPS加密发送邮件
    • email_server = smtp.mydomain.com
    • email_server_port = 25
    • email_identity =
    • email_username = [email protected]
    • email_password = abc
    • email_from = [email protected]
    • email_ssl = false
    • email_insecure = false
  • harbor_admin_password:管理员的初始密码。此密码仅在Harbor首次启动时生效。之后,将忽略此设置,并且应在入口中设置管理员密码。请注意,默认用户名/密码为admin / Harbor12345
  • auth_mode:使用的身份验证类型。默认情况下,它是db_auth,即凭据存储在数据库中。对于LDAP身份验证,请将其设置为ldap_auth注意:从现有Harbor实例升级时,必须确保在启动新版本的Harbor之前auth_mode相同harbor.cfg。否则,用户可能无法在升级后登录。
  • self_registration 🙁 打开或关闭。默认打开)用户自注册功能。禁用时,新用户只能由管理员用户创建,只有管理员用户可以在Harbor中创建新用户。 注意:当auth_mode设置为ldap_auth时始终禁用自注册功能,并忽略此标志。
  • token_expiration:令牌服务创建的令牌的到期时间(以分钟为单位),默认为30分钟。
  • project_creation_restriction:用于控制用户有权创建项目的标志。默认情况下,每个人都可以创建一个项目,设置为“adminonly”,这样只有管理员才能创建项目。

配置存储后端(可选)

默认情况下,Harbor将镜像存储在本地文件系统中。在生产环境中,可以考虑使用其他存储后端而不是本地文件系统,如S3,OpenStack Swift,Ceph等。这些参数是register的配置。

  • registry_storage_provider_name:register的存储提供程序名称,可以是filesystem,s3,gcs,azure等。默认为filesystem。
  • registry_storage_provider_config:存储提供程序配置的逗号分隔“key:value”对,例如“key1:value,key2:value2”。默认为空字符串。
  • registry_custom_ca_bundle:自定义根ca证书的路径,它将注入到register和镜像存储库容器的信任库中。当用户使用自签名证书托管内部存储时,通常需要这样做。

修改配置

$ vim harbor.cfg

hostname = 192.168.1.235   #主机或域名访问地址

ui_url_protocol = http   #使用http协议

harbor_admin_password = Harbor12345   #Harbor的管理员密码

self_registration = off    #禁止自注册

db_password = root123    #PostgreSQL数据库的root密码

 project_creation_restriction = adminonly  #设置只有管理员可以创建项目

2.3 安装启动Harbor

$ ./install.sh
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-adminserver ... done
Creating redis              ... done
Creating registry           ... done
Creating harbor-db          ... done
Creating registryctl        ... done
Creating harbor-core        ... done
Creating harbor-portal      ... done
Creating harbor-jobservice  ... done
Creating nginx              ... done
✔ ----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at http://192.168.1.235.

 

3、浏览器访问http://192.168.1.235,管理员账号:admin,密码为配置中设置的。

 

Harbor已与Notary和Clair集成(用于漏洞扫描)。但是,默认安装不包括Notary或Clair服务.

如果想安装Notary, Clair and chart repository service, 必须执行以下命令:

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

4、使用HTTPS访问配置Harbor

Harbor不附带任何证书,默认情况下使用HTTP来处理请求。虽然这使得设置和运行相对简单 – 特别是对于开发或测试环境 – 但建议用于生产环境。要启用HTTPS,请参阅使用HTTPS访问配置Harbor

5、Harbor状态管理

5.1 需要在docker-compose.yml在同一目录中运行

#停止harbor

$  docker-compose stop

#启动harbor

$  docker-compose start

5.2 要更改Harbour的配置,请先停止现有的Harbor实例并进行更新harbor.cfg。然后运行prepare脚本以填充配置。最后重新创建并启动Harbor的实例:

$  docker-compose down -v
$ vim harbor.cfg
$  prepare
$ docker-compose up -d

5.3 删除Harbor的数据库和图像数据(用于干净的重新安装):

$ rm -rf /data/database 
$ rm -rf /data/registry

6、自定义监听端口

更改docker-compose.yml 文件,将container_name: nginx 下的端口更改成想设置的端口然后执行以上 5.3 的步骤重启harbor。

客户端配置

因为docker 默认不支持http方式登陆,所以客户端要以http方式登陆,需修改下配置:

方法一:更改daemon.json文件

[[email protected] ~]#vim /etc/docker/daemon.json 
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries":["192.168.1.235"]
}

方法二:更改docker.service文件

vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.235

完成后重新启动服务

$ systemctl daemon-reload && systemctl restart docker

 

测试上传下载镜像

1、客户端登陆

[[email protected] ~]# docker login 192.168.1.235
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

2、更改tag标记

docker tag nginx:1.14.2-alpine 139.159.143.74/test/nginx:1.14.2-alpine

3、推送到harbor

The push refers to repository [139.159.143.74/test/nginx]
59b059d445c1: Pushed 
0246bb21855f: Pushed 
42acf078bf60: Pushed 
7bff100f35cb: Pushed 
1.14.2-alpine: digest: sha256:507234ea54dc6a9c7dd6a4b5d8649802bf711bcc7a7b2381ce404982f0f6966e size: 1153

4、Web界面查看上传的镜像

5、拉取harbor的镜像

docker pull 139.159.143.74/test/nginx:1.14.2-alpine

 

Harbor官方参考资料

Harbor开源地址

Harbor安装与配置

Harbor用户指南

赞(3) 打赏
未经允许不得转载:Anonym0x1 » Harbor 企业级私有镜像仓库搭建

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏