Harbor--基础篇

什么是Harbor?

Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它通过策略和基于角色的访问控制来保护工件,确保图像被扫描并且没有漏洞,并将图像签名为受信任的。 Harbor 是 CNCF 毕业的项目,可提供合规性、性能和互操作性,帮助你跨云原生计算平台(如 Kubernetes 和 Docker)一致且安全地管理平台。

虽然Docker官方提供了公共的镜像仓库,但是Harbor拥有更丰富的权限权利和完善的架构设计,从安全和效率等多方面考虑,部署本地的私有镜像仓库是有必要的。

安装Harbor

在安装之前,我们需要确保机器满足以下几点

1、Harbor是部署在Docker容器上的,所以我们可以将Harbor部署在任何支持Docker的Linux版本上。

2、硬件需求:

资源 最小 建议
CPU 2 核 4 核
内存 4 GB 8 GB
磁盘空间 40 GB 160 GB

3、软件需求:Docker engine 版本大于等于 17.06.0-ce+ ,Docker Compose版本大于等于1.18.0 ,Openssl最新的优先

4、网络端口:Harbor 要求在目标主机上打开以下端口。4443、443、80

正式部署

安装docker

#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

#安装阿里云镜像源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#重新加载yum缓存
yum clean all
yum makecache

#安装docker-ce
yum install docker-ce -y

下载docker-compose和Harbor

#安装docker-compose
wget https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
chmod 755 /usr/bin/docker-compose
#查看版本
docker-compose  --version
docker-compose version 1.29.2, build 5becea4c

#下载Harbor
wget https://github.com/goharbor/harbor/releases/download/v2.3.1/harbor-offline-installer-v2.3.1.tgz
tar -zxvf harbor-offline-installer-v2.3.1.tgz

配置文件Harbor YML File

hostname:指定要部署的Harbor的主机IP或域名,这是访问Horbor Portal和注册服务的地址。例如:192.168.31.100或者reg.domain.com,注册的服务可以从外部访问,因此不要使用127.0.0.1、0.0.0.0这种ip指定为hostname

Http、Https:不要再生产环境中使用Http,仅在没有连接在外部的机器上使用

? 子参数:

? port:http 80(默认)、https 443(默认)端口号

? certificate:SSL证书路径

? private_key:SSL key路径

internal_tls:内部环境是否使用tsl进行交流

? 子参数:

? enabled:true or false

? dir:证书和密钥文件路径

harbor_admin_password:为 Harbor 系统管理员设置初始密码。 该密码仅在Harbor 首次启动时使用。 在后续登录时,将忽略此设置,并在 Harbor Portal 中设置管理员密码。 默认用户名和密码为 admin 和 Harbor12345

database:使用本地数据库或者外部数据库

? 子参数:

? password:数据库密码

? max_idle_conns:空闲连接池的最大连接数,默认为50,不配置为2

? max_open_conns:到数据库的最大打开连接数, Harbor 数据库的最大连接数,默认值为 100,不配置,则值为 0

data_volume:主机上存储 Harbor 数据的位置。 即使删除或重新创建 Harbor 的容器,该数据也保持不变。 可以选择配置外部存储,在这种情况下禁用此选项并启用 storage_service。 默认为 /data

trivy:是一种适用于 CI 的简单而全面的容器漏洞扫描程序。软件漏洞是指软件或操作系统中存在的故障、缺陷或弱点。Trivy 检测操作系统包(Alpine、RHEL、CentOS等)和应用程序依赖(Bundler、Composer、npm、yarn等)的漏洞

? 子参数:

? ignore_unfixed:true仅显示修复的漏洞,默认为false

? skip_update:您可能希望在测试或 CI/CD 环境中启用此标志以避免 GitHub 速率限制问题。 如果启用了该标志,您必须手动下载 trivy-offline.tar.gz 存档,提取 trivy.db 和 metadata.json 文件并将它们安装在 /home/scanner/.cache/trivy/db/trivy 中。 容器中的数据库路径。 默认值为 false

? insecure:将该标志设置为 true 以跳过验证注册证书。 默认值为 false

? github_token:设置令牌下载Trivy DB GitHub的访问。Trivy DB由Trivy从GitHub的发布页面下载。 来自 GitHub 的匿名下载受到每小时 60 个请求的限制

jobservice:工作服务。子参数:max_job_workers:对于每个镜像复制作业,工作人员将存储库的所有标签同步到远程目标。 增加这个数字允许系统中更多的并发复制作业。 但是由于每个worker都会消耗一定的网络/CPU/IO资源,所以根据主机的硬件资源来设置这个属性的值。 默认值为 10

notification:子参数:webhook_job_max_retry :设置 web hook 作业的最大重试次数。 默认值为 10。

chart:子参数:absolute_url:设置图表以使用绝对 URL

log:配置日志记录。 Harbor 使用 rsyslog 来收集每个容器的日志

? 子参数:

? level:设置日志等级,debug、info、warning、error、fatal,默认为info

? local:设置日志保留参数

? external_endpoint:启用此选项可将日志转发到系统日志服务器

proxy

? 子参数:

? http_proxy:配置HTTP代理,例如http://my.proxy.com:3128

? https_proxy:配置HTTPS代理,例如http://my.proxy.com:3128

? no_proxy:配置何时不使用代理,例如 127.0.0.1、localhost、registry

external_url:启用此选项以使用外部代理。 启用后,不再使用主机名,对应着nginx所设置的代理后访问地址

storage_service:默认情况下,Harbor 将图像和图表存储在您的本地文件系统上。 在生产环境中,可能使用另一个存储后端而不是本地文件系统。 下面列出的参数是注册表的配置。

? 子参数:

? ca_bundle:自定义根 CA 证书的路径,该证书被注入到注册表和图表存储库容器的信任库中。 如果内部存储使用自签名证书,则需要这样做。

? filesystem:默认为文件系统,但您可以设置 azure、gcs、s3、swift 和 oss。 有关如何配置其他后端的信息,请参阅下面的配置存储后端。 设置 maxthreads 以限制外部提供程序的线程数。 默认值为 100。

? redirect:禁用注册表重定向时,将 disable 设置为 true

external_database:如果禁用本地数据库选项,则配置外部数据库设置。 目前,Harbor 仅支持 PostgreSQL 数据库。 需要为 Harbor 核心、Notary 服务器和 Notary 签名者创建三个数据库。 这些表是在 Harbor 启动时自动生成的。

? 子参数:harbor(host、port、db_name....)、notary_signer(host、port、db_name....)、notary_server(host、port、db_name....)

external_redis:配置外部redis实例

? 子参数:host、passwort、sentinel_master_set、registry_db_index

metric:配置将 Harbor 实例指标暴露给指定的端口和路径

? 子参数:enabled(启用该功能)portpath

[root@test-194 harbor]# cp harbor.yml.tmpl harbor.yml

#默认情况只需要修改hostname就可以运行了,如果不使用Https,需要将配置文件中的相关配置注释掉

#运行Harobr
[root@test-194 ~]# cd /home/harbor/ && ./install.sh

安装过程

0、检查Docker是否安装
1、检查docker-compose是否安装
2、安装Harbor镜像
3、准备环境
4、准备Harbor配置文件
5、启动Harbor

Harbor--基础篇

查看下载的镜像和运行的容器

Harbor--基础篇

关闭 Harbor

docker-compose up -d
#如需重新部署,需要移除 Harbor 服务容器全部数据,持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的

Harbor--基础篇

重新启动Harbor

docker-compose up -d

Harbor--基础篇

Harbor图形化管理界面

进入管理界面

打开浏览器,输入http://ip:port (如果没有改动密码配置的话,初始密码为Harbor12345)

Harbor--基础篇

创建项目

Harbor--基础篇

Harbor--基础篇

推送镜像

#首先登陆本地镜像仓库
[root@test-194 harbor]# docker login -u admin -p Harbor12345 http://127.0.0.1
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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

#更改本地已有镜像的名称
[root@test-194 harbor]# docker tag nginx:latest 127.0.0.1/test/nginx:v1

#将镜像push到已经创建好的项目中
[root@test-194 harbor]# docker push 127.0.0.1/test/nginx:v1
The push refers to repository [127.0.0.1/test/nginx]
e3135447ca3e: Pushed
b85734705991: Pushed
988d9a3509bb: Pushed
59b01b87c9e7: Pushed
7c0b223167b9: Pushed
814bff734324: Pushed
v1: digest: sha256:3f13b4376446cf92b0cb9a5c46ba75d57c41f627c4edb8b635fa47386ea29e20 size: 1570

查看是否推送成功

Harbor--基础篇

其它机器登陆

我们可以尝试使用其他的机器登录

[root@test-213 ~]# docker login -u admin -p Harbor12345 http://10.224.192.194
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://10.224.192.194/v2/": dial tcp 10.224.192.194:443: connect: connection refused

我们可以看到登录失败了,因为Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以上错误。

[root@test-213 ~]# vim /usr/lib/systemd/system/docker.service
#在ExecStart后面添加参数 --insecure-registry=10.224.192.194
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=10.224.192.194

[root@test-213 ~]# systemctl daemon-reload
[root@test-213 ~]# systemctl restart docker

再次登录

[root@test-213 ~]# docker login -u admin -p Harbor12345 http://10.224.192.194
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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

Harbor--基础篇

上一篇:重建图标缓存解决图标显示异常


下一篇:300. 最长递增子序列