Proxy: 首先在docker容器中启动了一个Nginx服务,这里它反向代理了所有请求到Harbor的请求,然后根据请求地址将请求转发到Harbor的各个组件中。
Registry: 基于docker官方distribution项目构建的镜像存储管理服务,负责存储Docker镜像,因为Harbor是做了权限控制的,所以用户在每一次push/pull请求时,都需要携带有效的token信息进行验证。
Adminserver Harbor系统配置管理端,操作数据库中的配置表(properties)。
UI: 业务核心组件。提供了对外的用户界面以及对外的rest接口服务,能够扫描的镜像层包含的CVE被删除或者更新以及Registry镜像上传下载等操作,同时处理了对资源的权限控制。
Job services: 主要负责镜像复制工作的,他重点是和registry通信的,记录registry的操作job_log。
Log collector: Harbor中各个组件服务的日志收集。
https://github.com/goharbor/harbor/releases
Harbor 是由 VMware 公司中国团队为企业用户设计的 Registry server 开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。
Harbor 依赖于 Docker 和 Docker compose组件
tar -zxvf harbor-offline-installer-v2.8.2.tgz -C /usr/local/
cd /usr/local/harbor/
cp harbor.yml.tmp harbor.yml
vim harbor.yml
hostname: 192.168.10.107 # 修改为本机IP
#https: # 因为自己搭建未使用 https 所以注释
# # https port for harbor, default is 443
# port: 443
# # The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
harbor_admin_password: Harbor12345 # admin 密码
./install.sh
...
[Step 5]: starting Harbor ...
[+] Running 10/10
✔ Network harbor_harbor Created 0.1s
✔ Container harbor-log Started 0.3s
✔ Container harbor-portal Started 0.8s
✔ Container registry Started 0.6s
✔ Container harbor-db Started 1.0s
✔ Container registryctl Started 0.9s
✔ Container redis Started 1.1s
✔ Container harbor-core Started 1.3s
✔ Container harbor-jobservice Started 1.7s
✔ Container nginx Started 1.7s
✔ ----Harbor has been installed and started successfully.----
访问
192.168.1.112:80
报错
Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-b649822bbcff -j RETURN: iptables: No chain/target/match by that name. (exit status 1))
方法
这是因为在启动docker的时候防火墙做了策略,如果容器在运行中,停止防火墙,在操作容器就会报这个错误,我们可以重启docker解决此问题
systemctl restart docker.service
然后
docker-compose up -d
根据情况给予权限
管理员用户拥有创建仓库和删除镜像的权限
普通用户拥有上传镜像和拉取镜像权限 无法删除仓库和镜像
--with-clair参数是启用漏洞扫描功能