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

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.yml ;
  3. 运行install.sh安装并启动Harbor;

2.1下载安装程序:

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

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

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

2.2 配置harbor.yml

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

  • 系统级参数:需要在配置文件中设置这些参数。如果用户更新它们并运行install.sh脚本以重新安装Harbor,它们将生效。
  • 用户级参数:这些参数可以在Web Portal上首次启动港口后更新。特别是,您必须在Harbour中注册或创建任何新用户之前设置所需的auth_mode。当系统中有用户时(除默认管理员用户外),无法更改auth_mode。

必需参数

  • hostname:目标主机的主机名,用于访问web界面和注册表服务。它应该是目标计算机的IP地址或完全限定的域名。
  • data_volume:存储harbor数据的位置
  • harbor_admin_password:管理员的初始密码。此密码仅在Harbor首次启动时生效。之后,将忽略此设置,并且应在入口中设置管理员密码。请注意,默认用户名/密码为admin / Harbor12345
  • db_password:用于PostgreSQL数据库的root密码。更改此密码以用于任何生产用途!
  • max_job_workers :(默认值为10)镜像复制作业线程。
  • level: 日志级别:log level, options are debug, info, warning, error, fatal
  • log_rotate_count:日志文件在被删除之前会被轮换。如果count为0,则删除旧版本而不是轮换。
  • log_rotate_size:仅当日志文件大于log_rotate_size字节时才会轮换日志文件。如果大小后跟k,则假定大小以千字节为单位。如果使用M,则大小以兆字节为单位,如果使用G,则大小为千兆字节。

可选参数

  • http: 默认http访问,端口80
  • https:  用于访问入口和令牌/通知服务的协议。如果启用了公证,则此参数必须为https。默认情况下http。要设置https协议,请参阅使用HTTPS访问配置Harbor
  • port: port number for https
  • ssl_cert:SSL证书的路径,仅在协议设置为https时应用。
  • ssl_cert_key:SSL密钥的路径,仅在协议设置为https时应用。
  • external_url:如果使用外部代理,则启用它,当启用时,将不再使用主机名

clair: Clair related configs

  • updaters_interval: The interval of clair updaters, the unit is hour, set to 0 to disable the updaters
  • http_proxy: Config http proxy for Clair, e.g. http://my.proxy.com:3128.
  • https_proxy: Config https proxy for Clair, e.g. http://my.proxy.com:3128.
  • no_proxy: Config no proxy for Clair, e.g. 127.0.0.1,localhost,core,registry

external_database:外部数据库配置,目前只支持POSTGRES

……………………………………..

配置存储后端(可选)

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

  • storage_service:默认情况下,Harbor将图像和图表存储在本地文件系统中。在生产环境中,您可以考虑使用其他存储后端而不是本地文件系统,如S3,OpenStack Swift,Ceph等。这些参数是注册表的配置。
    • ca_bundle:自定义根证书的路径,它将被注入到注册表和图表存储库容器的信任库中。当用户使用自签名证书托管内部存储时,通常需要这样做。
    • provider_name:注册表的存储配置,默认是文件系统。有关此配置的更多信息,请参阅https://docs.docker.com/registry/configuration/
    • redirect
      • disable:当您要禁用注册表重定向时,将disable设置为true

这里以生产环境配置为主,配置letsencrypt的https证书。

#复制并重命名证书
cp fullchain.pem  /data/cert/server.crt   #服务器证书公钥
cp privkey.pem    /data/cert/server.key    #私钥
update-ca-trust

修改harbor.yml配置文件:

hostname = harbor.anonym0x1.com   #主机或域名访问地址

https:
   port: 443
   certificate: /data/cert/server.crt
   private_key: /data/cert/server.key

database:
  password: root123     #PostgreSQL数据库的root密码
harbor_admin_password = Harbor12345   #Harbor的管理员密码

# The default data volume
data_volume: /data

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 https://harbor.anonym0x1.com.

 

3、浏览器访问https://harbor.anonym0x1.com,管理员账号:admin,密码为配置中设置的。

 

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

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

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

 

5、Harbor状态管理

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

#停止harbor

$  docker-compose stop

#启动harbor

$  docker-compose start

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

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

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

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

 

客户端配置

http访问:如果harbor没有配置https访问

因为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 docker.dapp-api.com
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 企业级私有镜像仓库搭建

评论 抢沙发

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

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

支付宝扫一扫打赏

微信扫一扫打赏