harobor私有docker镜像仓库

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

Harbor组件

image

  1. Proxy: 对应启动组件nginx。它是一个nginx反向代理,代理Notary client(镜像认证)、Docker client(镜像上传下载等)和浏览器的访问请求(Core Service)给后端的各服务
  2. UI(Core Service): 对应启动组件harbor-ui。底层数据存储使用mysql数据库,主要提供了四个子功能:
  3. UI: 一个web管理页面ui
  4. API: Harbor暴露的API服务
  5. Auth: 用户认证服务,decode后的token中的用户信息在这里进行认证;auth后端可以接db、ldap、uaa三种认证实现
  6. Token服务(上图中未体现): 负责根据用户在每个project中的role来为每一个docker push/pull命令发布一个token,如果从docker client发送给registry的请求没有带token,
  7. registry会重定向请求到token服务创建token
  8. Registry: 对应启动组件registry。负责存储镜像文件,和处理镜像的pull/push命令。Harbor对镜像进行强制的访问控制,Registry会将客户端的每个pull、push请求转发到token服务来获取有效的token
  9. Admin Service: 对应启动组件harbor-adminserver。是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候需要加载adminserver的配置
  10. Job Sevice: 对应启动组件harbor-jobservice。负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log
  11. Log Collector: 对应启动组件harbor-log。日志汇总组件,通过docker的log-driver把日志汇总到一起
  12. DB: 对应启动组件harbor-db,负责存储project、 user、 role、replication、image_scan、access等的metadata数据

Get Start

Download Package

https://github.com/goharbor/harbor/releases

wget https://github.com/goharbor/harbor/releases/download/v2.2.1/harbor-offline-installer-v2.2.1.tgz
gpg -v -d harbor-offline-installer-v2.2.1.tgz.asc #校验

Deploy

1. 解压

2. 配置

  • 可配置项目:域名、登录密码、访问方式为http还是https、数据存储目录等
[0 root@vps apps]# tar -xf /opt/harbor-offline-installer-v2.2.1.tgz
[0 root@vps apps]# cd harbor/
[0 root@vps harbor]# cp harbor.yml.tmpl harbor.yml
  • 生成与配置https
# 方法1,手动生成
## 生成CA证书
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -subj "/CN=harbor.domain.io" -days 365 -out ca.crt
# 生成harbor主机的证书申请
openssl req -newkey rsa:4096 -nodes -sha256 -subj "/CN=harbor.domain.io" -keyout harbor.domain.io.key -out harbor.domain.io.csr
## 给harbor主机颁发证书
openssl x509 -req -in harbor.domain.io.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out harbor.domain.io.crt

# 方法2,使用官方的证书生成方式 https://goharbor.io/docs/2.2.0/install-config/configure-https/
docker run -v /:/hostfs goharbor/prepare:v2.1.0 gencert -p /apps/harbor/certs
  • 添加证书
cat harbor.yml
hostname: harbor.domain.io

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 80

# https related config
https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /data/secret/certs/harbor.domain.io.crt
  private_key: /data/secret/certs/harbor.domain.io.key

3. 测试启动

# ./install.sh  #初始化加载即启动
# docker-compose down  #关闭服务
# ./prepare  #修改配置文件后需要重新同步更新配置文件

4. 配置harbor自启动/systemd管理

# 方法1: 简单设置为开机启动
echo '/apps/harbor/usr/bin/docker-compose restart' >> /etc/rc.local
chmod +x /etc/rc.local

# 方法2:使用systemd管理
cat /lib/systemd/system/harbor.service
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/docker-compose -f /apps/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -f /apps/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target

[root@harbor ~]#systemctl daemon-reload
[root@harbor ~]#systemctl enable --now harbor

5. 客户端使用

  • docker客户端如果配置中添加了insecure-registary配置,就不需要在docker 客户端配置上对应证书
  • 如果不配置就需要在/etc/docker/certs.d/目录中添加对应证书才能正常登录
    https://www.cnblogs.com/firewalld/p/14684565.html

配图

下载harbor2.2.1离线安装包
image
校验离线包 https://goharbor.io/docs/2.0.0/install-config/download-installer/
image

原文地址:https://www.cnblogs.com/firewalld/p/14679927.html