镜像仓库Harbor(一) | 容器部署
Harbor(https://goharbor.io/)是一个开源的企业级镜像管理工具,它提供了一个安全、可靠、可扩展的平台,用于存储、管理和分发Docker镜像。Harbor 允许用户用命令行工具对容器镜像及其他 Artifact 进行推送和拉取,并提供了图形管理界面帮助用户查看和管理这些 Artifact。
基本介绍
代理层:代理层实质上是一个 Nginx 反向代理,负责接收不同类型的客户端请求,包括浏览器、用户脚本、Docker 等,并根据请求类型和 URI 转发给不同的后端服务进行处理。
功能层:
- Portal:是一个基于 Argular 的前端应用,提供 Harbor 用户访问的界面。
- Core:是 Harbor 中的核心组件,封装了 Harbor 绝大部分的业务逻辑。
- JobService:异步任务组件,负责 Harbor 中很多比较耗时的功能,比如 Artifact 复制、扫描、垃圾回收等。
- Docker Distribution:Harbor 通过 Distribution 实现 Artifact 的读写和存取等功能。
- RegistryCtl:Docker Distribution 的控制组件。
- Notary(可选):基于 TUF 提供镜像签名管理的功能。
- 扫描工具(可选):镜像的漏洞检测工具。
- ChartMuseum(可选):提供 API 管理非 OCI 规范的 Helm Chart,随着兼容 OCI 规范的 Helm Chart 在社区上被更广泛地接受,Helm Chart 能以 Artifact 的形式在 Harbor 中存储和管理,不再依赖 ChartMuseum,因此 Harbor 可能会在后续版本中移除对 ChartMuseum 的支持。
数据层:
- Redis:主要作为缓存服务存储一些生命周期较短的数据,同时对于 JobService 还提供了类似队列的功能。
- PostgreSQL:存储 Harbor 的应用数据,比如项目信息、用户与项目的关系、管理策略、配置信息、Artifact 的元数据等等。
- Artifact 存储:存储 Artifact 本身的内容,也就是每次推送镜像、Helm Chart 或其他 Artifact 时,数据最终存储的地方。默认情况下,Harbor 会把 Artifact 写入本地文件系统中。用户也可以修改配置,将 Artifact 存储在外部存储中,例如亚马逊的对象存储 S3、谷歌云存储 GCS、阿里云的对象存储 OSS 等等。
前期准备
所有的容器都跑在docker上面
https://github.com/goharbor/harbor/releases/tag/v2.10.2,下载最新的offline版本,然后上传到服务器
tar -zxvf harbor-offline-installer-v2.10.2.tgz
修改配置
cp harbor.yml.tmpl harbor.yml
hostname: 192.168.1.93 # 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: /your/certificate/path #private_key: /your/private/key/path # enable strong ssl ciphers (default: false) # strong_ssl_ciphers: false # The initial password of Harbor admin # It only works in first time to install harbor # Remember Change the admin password from UI after launching Harbor. harbor_admin_password: Harbor12345 # Harbor DB configuration database: # The password for the root user of Harbor DB. Change this before any production use. password: root123
hostname 修改成自己的可以访问的服务器地址
port 可以访问的端口,默认是80
harbor_admin_password 管理账号密码
password 数据库密码
把https暂时注释掉
脚本安装
bash install.sh
[Step 0]: checking if docker is installed ... Note: docker version: 24.0.5 [Step 1]: checking docker-compose is installed ... Note: docker-compose version: 1.25.0 [Step 2]: loading Harbor images ... Loaded image: goharbor/harbor-db:v2.10.2 Loaded image: goharbor/harbor-jobservice:v2.10.2 Loaded image: goharbor/redis-photon:v2.10.2 Loaded image: goharbor/registry-photon:v2.10.2 Loaded image: goharbor/harbor-log:v2.10.2 Loaded image: goharbor/harbor-portal:v2.10.2 Loaded image: goharbor/harbor-core:v2.10.2 Loaded image: goharbor/harbor-registryctl:v2.10.2 Loaded image: goharbor/harbor-exporter:v2.10.2 Loaded image: goharbor/nginx-photon:v2.10.2 Loaded image: goharbor/trivy-adapter-photon:v2.10.2 Loaded image: goharbor/prepare:v2.10.2 [Step 3]: preparing environment ... [Step 4]: preparing harbor configs ... prepare base dir is set to /home/forenet/harbor [Step 5]: starting Harbor ... Creating network "harbor_harbor" with the default driver Creating harbor-log ... done Creating harbor-db ... done Creating registry ... done Creating harbor-portal ... done Creating redis ... done Creating registryctl ... done Creating harbor-core ... done Creating harbor-jobservice ... done Creating nginx ... done ✔ ----Harbor has been installed and started successfully.----
到这里Harbor就全部安装好了
访问:http://192.168.1.93
账号/密码:admin/Harbor12345
0